sqlite inheritance
parent
9df17da5c4
commit
aade46d448
|
@ -5,61 +5,49 @@ hashtables io.files kernel math math.parser namespaces
|
||||||
prettyprint sequences strings classes.tuple alien.c-types
|
prettyprint sequences strings classes.tuple alien.c-types
|
||||||
continuations db.sqlite.lib db.sqlite.ffi db.tuples
|
continuations db.sqlite.lib db.sqlite.ffi db.tuples
|
||||||
words combinators.lib db.types combinators
|
words combinators.lib db.types combinators
|
||||||
io namespaces.lib ;
|
io namespaces.lib accessors ;
|
||||||
USE: tools.walker
|
|
||||||
IN: db.sqlite
|
IN: db.sqlite
|
||||||
|
|
||||||
TUPLE: sqlite-db path ;
|
TUPLE: sqlite-db < db path ;
|
||||||
|
|
||||||
M: sqlite-db make-db* ( path db -- db )
|
M: sqlite-db make-db* ( path db -- db )
|
||||||
[ set-sqlite-db-path ] keep ;
|
swap >>path ;
|
||||||
|
|
||||||
M: sqlite-db db-open ( db -- )
|
M: sqlite-db db-open ( db -- db )
|
||||||
dup sqlite-db-path sqlite-open <db>
|
[ path>> sqlite-open ] [ swap >>handle ] bi ;
|
||||||
swap set-delegate ;
|
|
||||||
|
|
||||||
M: sqlite-db db-close ( handle -- ) sqlite-close ;
|
M: sqlite-db db-close ( handle -- ) sqlite-close ;
|
||||||
M: sqlite-db dispose ( db -- ) dispose-db ;
|
M: sqlite-db dispose ( db -- ) dispose-db ;
|
||||||
: with-sqlite ( path quot -- ) sqlite-db swap with-db ; inline
|
|
||||||
|
|
||||||
TUPLE: sqlite-statement ;
|
TUPLE: sqlite-statement < throwable-statement ;
|
||||||
INSTANCE: sqlite-statement throwable-statement
|
! INSTANCE: sqlite-statement throwable-statement
|
||||||
|
|
||||||
TUPLE: sqlite-result-set has-more? ;
|
TUPLE: sqlite-result-set < result-set has-more? ;
|
||||||
|
|
||||||
M: sqlite-db <simple-statement> ( str in out -- obj )
|
M: sqlite-db <simple-statement> ( str in out -- obj )
|
||||||
<prepared-statement> ;
|
<prepared-statement> ;
|
||||||
|
|
||||||
M: sqlite-db <prepared-statement> ( str in out -- obj )
|
M: sqlite-db <prepared-statement> ( str in out -- obj )
|
||||||
{
|
sqlite-statement construct-statement ;
|
||||||
set-statement-sql
|
|
||||||
set-statement-in-params
|
|
||||||
set-statement-out-params
|
|
||||||
} statement construct
|
|
||||||
sqlite-statement construct-delegate ;
|
|
||||||
|
|
||||||
: sqlite-maybe-prepare ( statement -- statement )
|
: sqlite-maybe-prepare ( statement -- statement )
|
||||||
dup statement-handle [
|
dup handle>> [
|
||||||
[
|
db get handle>> over sql>> sqlite-prepare
|
||||||
delegate
|
>>handle
|
||||||
db get db-handle over statement-sql sqlite-prepare
|
|
||||||
swap set-statement-handle
|
|
||||||
] keep
|
|
||||||
] unless ;
|
] unless ;
|
||||||
|
|
||||||
M: sqlite-statement dispose ( statement -- )
|
M: sqlite-statement dispose ( statement -- )
|
||||||
statement-handle
|
handle>>
|
||||||
[ [ sqlite3_reset drop ] keep sqlite-finalize ] when* ;
|
[ [ sqlite3_reset drop ] keep sqlite-finalize ] when* ;
|
||||||
|
|
||||||
M: sqlite-result-set dispose ( result-set -- )
|
M: sqlite-result-set dispose ( result-set -- )
|
||||||
f swap set-result-set-handle ;
|
f >>handle drop ;
|
||||||
|
|
||||||
: sqlite-bind ( triples handle -- )
|
: sqlite-bind ( triples handle -- )
|
||||||
swap [ first3 sqlite-bind-type ] with each ;
|
swap [ first3 sqlite-bind-type ] with each ;
|
||||||
|
|
||||||
: reset-statement ( statement -- )
|
: reset-statement ( statement -- )
|
||||||
sqlite-maybe-prepare
|
sqlite-maybe-prepare handle>> sqlite-reset ;
|
||||||
statement-handle sqlite-reset ;
|
|
||||||
|
|
||||||
M: sqlite-statement bind-statement* ( statement -- )
|
M: sqlite-statement bind-statement* ( statement -- )
|
||||||
sqlite-maybe-prepare
|
sqlite-maybe-prepare
|
||||||
|
@ -104,7 +92,7 @@ M: sqlite-result-set more-rows? ( result-set -- ? )
|
||||||
|
|
||||||
M: sqlite-statement query-results ( query -- result-set )
|
M: sqlite-statement query-results ( query -- result-set )
|
||||||
sqlite-maybe-prepare
|
sqlite-maybe-prepare
|
||||||
dup statement-handle sqlite-result-set <result-set>
|
dup statement-handle sqlite-result-set construct-result-set
|
||||||
dup advance-row ;
|
dup advance-row ;
|
||||||
|
|
||||||
M: sqlite-db begin-transaction ( -- ) "BEGIN" sql-command ;
|
M: sqlite-db begin-transaction ( -- ) "BEGIN" sql-command ;
|
||||||
|
|
Loading…
Reference in New Issue