2006-12-17 23:29:33 -05:00
|
|
|
USING: generic kernel namespaces prettyprint sequences sql sql:utils ;
|
2006-12-15 04:06:17 -05:00
|
|
|
IN: sqlite
|
|
|
|
|
|
|
|
TUPLE: sqlite ;
|
|
|
|
C: sqlite ( path -- db )
|
|
|
|
>r sqlite-open <connection> r>
|
|
|
|
[ set-delegate ] keep ;
|
|
|
|
|
2006-12-17 23:29:33 -05:00
|
|
|
M: sqlite create-sql* ( db tuple -- string )
|
|
|
|
nip [
|
|
|
|
"create table " % dup tuple>sql-name %
|
|
|
|
" (" % full-tuple>alist "id" alist-remove-key
|
|
|
|
[ first sanitize ] map ", " join %
|
|
|
|
");" %
|
|
|
|
] "" make ;
|
|
|
|
|
2006-12-20 12:38:39 -05:00
|
|
|
M: sqlite drop-sql* ( db tuple -- string )
|
|
|
|
nip [ "drop table " % tuple>sql-name % ";" % ] "" make
|
|
|
|
|
2006-12-17 23:29:33 -05:00
|
|
|
M: sqlite insert-sql* ( db tuple -- string )
|
2006-12-15 04:06:17 -05:00
|
|
|
#! Insert and fill in the ID column
|
2006-12-17 23:29:33 -05:00
|
|
|
nip [
|
|
|
|
"insert into " %
|
|
|
|
dup tuple>sql-name %
|
|
|
|
" (" % tuple>insert-alist
|
|
|
|
[ [ first ] map ", " join % ] keep
|
|
|
|
") values(" %
|
|
|
|
[ first field>sqlite-bind-name ] map ", " join %
|
|
|
|
");" %
|
|
|
|
] "" make ;
|
2006-12-15 04:06:17 -05:00
|
|
|
|
2006-12-17 23:29:33 -05:00
|
|
|
M: sqlite delete-sql* ( db tuple -- string )
|
2006-12-15 04:06:17 -05:00
|
|
|
#! Delete based on the ID column
|
2006-12-17 23:29:33 -05:00
|
|
|
nip [
|
|
|
|
"delete from " % tuple>sql-name %
|
|
|
|
" where ROWID=:rowid;" %
|
|
|
|
] "" make ;
|
2006-12-15 04:06:17 -05:00
|
|
|
|
2006-12-17 23:29:33 -05:00
|
|
|
M: sqlite update-sql* ( db tuple -- string )
|
2006-12-15 04:06:17 -05:00
|
|
|
#! Update based on the ID column
|
2006-12-17 23:29:33 -05:00
|
|
|
nip [
|
|
|
|
"update " % dup tuple>sql-name%
|
|
|
|
" set " % full-tuple>alist "id" alist-remove-key
|
|
|
|
[
|
|
|
|
[
|
|
|
|
first [ sanitize % ] keep
|
|
|
|
" = " % field>sqlite-bind-name %
|
|
|
|
] "" make
|
|
|
|
] map ", " join %
|
|
|
|
" where ROWID = :rowid;" %
|
|
|
|
] "" make ;
|
2006-12-15 04:06:17 -05:00
|
|
|
|
2006-12-17 23:29:33 -05:00
|
|
|
M: sqlite select-sql* ( db tuple -- string )
|
|
|
|
nip [
|
|
|
|
"select ROWID,* from " % dup tuple>sql-name %
|
|
|
|
" where " % tuple>select-alist
|
|
|
|
[
|
|
|
|
[
|
|
|
|
first dup %
|
|
|
|
" = " %
|
|
|
|
field>sqlite-bind-name %
|
|
|
|
] "" make
|
|
|
|
] map " and " join %
|
|
|
|
";" %
|
|
|
|
] "" make ;
|
2006-12-15 04:06:17 -05:00
|
|
|
|
|
|
|
|