factor/libs/sql/simple.factor

53 lines
1.5 KiB
Factor

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