]> gitweb.factorcode.org Git - factor.git/commitdiff
Merge branch 'master' of git://factorcode.org/git/factor
authorDoug Coleman <doug.coleman@gmail.com>
Tue, 10 Jun 2008 23:30:31 +0000 (18:30 -0500)
committerDoug Coleman <doug.coleman@gmail.com>
Tue, 10 Jun 2008 23:30:31 +0000 (18:30 -0500)
Conflicts:

extra/db/sql/sql.factor

1  2 
extra/db/sql/sql.factor

diff --combined extra/db/sql/sql.factor
index dc8b5d1fb142577720f6a214a0bd40fbc6ee0fcf,ae748731b12ae97065b6675ef9f3455d4b88ecb6..7dd4abf4be718641dbd303196b329c3d7fd099be
@@@ -7,12 -7,10 +7,10 @@@ SYMBOLS: insert update delete select di
  where group-by having order-by limit offset is-null desc all
  any count avg table values ;
  
- ! Output an s-exp sql statement and an alist of keys/values
- : input-spec, 1, ;
- : output-spec, 2, ;
- : input, 3, ;
- : output, 4, ;
+ : input-spec, ( obj -- ) 1, ;
+ : output-spec, ( obj -- ) 2, ;
+ : input, ( obj -- ) 3, ;
+ : output, ( obj -- ) 4, ;
  
  DEFER: sql%
  
  : sql-function, ( seq function -- )
      sql% "(" sql% unclip sql% ")" sql% [ sql% ] each ;
  
 +: sql-where ( seq -- )
 +B
 +    [
 +        [ second 0, ]
 +        [ first 0, ]
 +        [ third 1, \ ? 0, ] tri
 +    ] each ;
 +
  : sql-array% ( array -- )
 +B
      unclip
      {
 +        { \ create [ "create table" sql% ] }
 +        { \ drop [ "drop table" sql% ] }
 +        { \ insert [ "insert into" sql% ] }
 +        { \ update [ "update" sql% ] }
 +        { \ delete [ "delete" sql% ] }
 +        { \ select [ B "select" sql% "," (sql-interleave) ] }
          { \ columns [ "," (sql-interleave) ] }
          { \ from [ "from" "," sql-interleave ] }
 -        { \ where [ "where" "and" sql-interleave ] }
 +        { \ where [ B "where" 0, sql-where ] }
          { \ group-by [ "group by" "," sql-interleave ] }
          { \ having [ "having" "," sql-interleave ] }
          { \ order-by [ "order by" "," sql-interleave ] }
@@@ -66,7 -49,7 +64,7 @@@
  ERROR: no-sql-match ;
  : sql% ( obj -- )
      {
 -        { [ dup string? ] [ " " 0% 0% ] }
 +        { [ dup string? ] [ 0, ] }
          { [ dup array? ] [ sql-array% ] }
          { [ dup number? ] [ number>string sql% ] }
          { [ dup symbol? ] [ unparse sql% ] }
      } cond ;
  
  : parse-sql ( obj -- sql in-spec out-spec in out )
 -    [
 -        unclip {
 -            { \ create [ "create table" sql% ] }
 -            { \ drop [ "drop table" sql% ] }
 -            { \ insert [ "insert into" sql% ] }
 -            { \ update [ "update" sql% ] }
 -            { \ delete [ "delete" sql% ] }
 -            { \ select [ "select" sql% ] }
 -        } case [ sql% ] each
 -    ] { "" { } { } { } { } } nmake ;
 +    [ [ sql% ] each ] { { } { } { } } nmake ;