1 USING: generic kernel namespaces prettyprint sequences sql sql:utils ;
\r
5 C: sqlite ( path -- db )
\r
6 >r sqlite-open <connection> r>
\r
7 [ set-delegate ] keep ;
\r
9 M: sqlite create-sql* ( db tuple -- string )
\r
11 "create table " % dup tuple>sql-name %
\r
12 " (" % full-tuple>alist "id" alist-remove-key
\r
13 [ first sanitize ] map ", " join %
\r
17 M: sqlite drop-sql* ( db tuple -- string )
\r
18 nip [ "drop table " % tuple>sql-name % ";" % ] "" make
\r
20 M: sqlite insert-sql* ( db tuple -- string )
\r
21 #! Insert and fill in the ID column
\r
24 dup tuple>sql-name %
\r
25 " (" % tuple>insert-alist
\r
26 [ [ first ] map ", " join % ] keep
\r
28 [ first field>sqlite-bind-name ] map ", " join %
\r
32 M: sqlite delete-sql* ( db tuple -- string )
\r
33 #! Delete based on the ID column
\r
35 "delete from " % tuple>sql-name %
\r
36 " where ROWID=:rowid;" %
\r
39 M: sqlite update-sql* ( db tuple -- string )
\r
40 #! Update based on the ID column
\r
42 "update " % dup tuple>sql-name%
\r
43 " set " % full-tuple>alist "id" alist-remove-key
\r
46 first [ sanitize % ] keep
\r
47 " = " % field>sqlite-bind-name %
\r
50 " where ROWID = :rowid;" %
\r
53 M: sqlite select-sql* ( db tuple -- string )
\r
55 "select ROWID,* from " % dup tuple>sql-name %
\r
56 " where " % tuple>select-alist
\r
61 field>sqlite-bind-name %
\r
63 ] map " and " join %
\r