factor/libs/sql/simple.factor

54 lines
1.7 KiB
Factor

USING: errors generic kernel namespaces prettyprint
sequences sql:utils ;
IN: sql
G: create-sql* ( db tuple -- string ) 1 standard-combination ;
G: drop-sql* ( db tuple -- string ) 1 standard-combination ;
G: insert-sql* ( db tuple -- string ) 1 standard-combination ;
G: delete-sql* ( db tuple -- string ) 1 standard-combination ;
G: update-sql* ( db tuple -- string ) 1 standard-combination ;
G: select-sql* ( db tuple -- string ) 1 standard-combination ;
: create-sql ( tuple -- string ) >r db get r> create-sql* ;
: drop-sql ( tuple -- string ) >r db get r> drop-sql* ;
: insert-sql ( tuple -- string ) >r db get r> insert-sql* ;
: delete-sql ( tuple -- string ) >r db get r> delete-sql* ;
: update-sql ( tuple -- string ) >r db get r> update-sql* ;
: select-sql ( tuple -- string ) >r db get r> select-sql* ;
M: connection create-sql* ( db tuple -- string )
nip [
"create table " %
dup class unparse % "(" %
tuple>mapping%
");" %
] "" make ;
M: connection drop-sql* ( db tuple -- string )
nip [ "drop table " % tuple>sql-name % ";" % ] "" make ;
M: connection insert-sql* ( db tuple -- string )
nip [
"insert into " %
dup tuple>sql-name %
! " (" % fulltuple>insert-all-parts dup first ", " join %
") values(" %
second [ escape-sql enquote ] map ", " join %
");" %
] "" make ;
M: connection delete-sql* ( db tuples -- string )
nip [
! "delete from table " % unparse % ";" %
] "" make ;
M: connection update-sql* ( db tuples -- string )
nip [
] "" make ;
M: connection select-sql* ( db tuples -- string )
nip [
] "" make ;