factor/libs/sql/sqlite/simple.factor

65 lines
1.7 KiB
Factor
Raw Normal View History

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 ;
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