53 lines
1.5 KiB
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 ;
|
|
|
|
|