cache statements in db
parent
3fcac9bd3d
commit
78266a3fc8
|
@ -5,10 +5,14 @@ namespaces sequences sequences.lib tuples words strings
|
||||||
tools.walker ;
|
tools.walker ;
|
||||||
IN: db
|
IN: db
|
||||||
|
|
||||||
TUPLE: db handle ;
|
TUPLE: db
|
||||||
! TUPLE: db handle insert-statements update-statements delete-statements ;
|
handle
|
||||||
|
insert-statements
|
||||||
|
update-statements
|
||||||
|
delete-statements ;
|
||||||
|
|
||||||
: <db> ( handle -- obj )
|
: <db> ( handle -- obj )
|
||||||
! H{ } clone H{ } clone H{ } clone
|
H{ } clone H{ } clone H{ } clone
|
||||||
db construct-boa ;
|
db construct-boa ;
|
||||||
|
|
||||||
GENERIC: make-db* ( seq class -- db )
|
GENERIC: make-db* ( seq class -- db )
|
||||||
|
@ -21,9 +25,9 @@ HOOK: db-close db ( handle -- )
|
||||||
|
|
||||||
: dispose-db ( db -- )
|
: dispose-db ( db -- )
|
||||||
dup db [
|
dup db [
|
||||||
! dup db-insert-statements dispose-statements
|
dup db-insert-statements dispose-statements
|
||||||
! dup db-update-statements dispose-statements
|
dup db-update-statements dispose-statements
|
||||||
! dup db-delete-statements dispose-statements
|
dup db-delete-statements dispose-statements
|
||||||
db-handle db-close
|
db-handle db-close
|
||||||
] with-variable ;
|
] with-variable ;
|
||||||
|
|
||||||
|
@ -50,7 +54,6 @@ GENERIC# row-column 1 ( result-set n -- obj )
|
||||||
GENERIC: advance-row ( result-set -- )
|
GENERIC: advance-row ( result-set -- )
|
||||||
GENERIC: more-rows? ( result-set -- ? )
|
GENERIC: more-rows? ( result-set -- ? )
|
||||||
|
|
||||||
! must be called from within with-disposal
|
|
||||||
: execute-statement ( statement -- )
|
: execute-statement ( statement -- )
|
||||||
dup sequence? [
|
dup sequence? [
|
||||||
[ execute-statement ] each
|
[ execute-statement ] each
|
||||||
|
@ -101,7 +104,6 @@ GENERIC: more-rows? ( result-set -- ? )
|
||||||
: do-bound-command ( obj query -- )
|
: do-bound-command ( obj query -- )
|
||||||
[ bind-statement ] keep execute-statement ;
|
[ bind-statement ] keep execute-statement ;
|
||||||
|
|
||||||
|
|
||||||
SYMBOL: in-transaction
|
SYMBOL: in-transaction
|
||||||
HOOK: begin-transaction db ( -- )
|
HOOK: begin-transaction db ( -- )
|
||||||
HOOK: commit-transaction db ( -- )
|
HOOK: commit-transaction db ( -- )
|
||||||
|
|
|
@ -26,14 +26,14 @@ IN: db.tuples
|
||||||
HOOK: create-sql-statement db ( class -- obj )
|
HOOK: create-sql-statement db ( class -- obj )
|
||||||
HOOK: drop-sql-statement db ( class -- obj )
|
HOOK: drop-sql-statement db ( class -- obj )
|
||||||
|
|
||||||
HOOK: <insert-native-statement> db ( tuple -- obj )
|
HOOK: <insert-native-statement> db ( class -- obj )
|
||||||
HOOK: <insert-assigned-statement> db ( tuple -- obj )
|
HOOK: <insert-assigned-statement> db ( class -- obj )
|
||||||
|
|
||||||
HOOK: <update-tuple-statement> db ( tuple -- obj )
|
HOOK: <update-tuple-statement> db ( class -- obj )
|
||||||
HOOK: <update-tuples-statement> db ( tuple -- obj )
|
HOOK: <update-tuples-statement> db ( class -- obj )
|
||||||
|
|
||||||
HOOK: <delete-tuple-statement> db ( tuple -- obj )
|
HOOK: <delete-tuple-statement> db ( class -- obj )
|
||||||
HOOK: <delete-tuples-statement> db ( tuple -- obj )
|
HOOK: <delete-tuples-statement> db ( class -- obj )
|
||||||
|
|
||||||
HOOK: <select-by-slots-statement> db ( tuple -- tuple )
|
HOOK: <select-by-slots-statement> db ( tuple -- tuple )
|
||||||
|
|
||||||
|
@ -73,14 +73,14 @@ HOOK: insert-tuple* db ( tuple statement -- )
|
||||||
drop-sql-statement [ execute-statement ] with-disposals ;
|
drop-sql-statement [ execute-statement ] with-disposals ;
|
||||||
|
|
||||||
: insert-native ( tuple -- )
|
: insert-native ( tuple -- )
|
||||||
dup class <insert-native-statement> [
|
dup class
|
||||||
[ bind-tuple ] 2keep dup . insert-tuple*
|
db get db-insert-statements [ <insert-native-statement> ] cache
|
||||||
] with-disposal ;
|
[ bind-tuple ] 2keep insert-tuple* ;
|
||||||
|
|
||||||
: insert-assigned ( tuple -- )
|
: insert-assigned ( tuple -- )
|
||||||
dup class <insert-assigned-statement> [
|
dup class
|
||||||
[ bind-tuple ] keep execute-statement
|
db get db-insert-statements [ <insert-assigned-statement> ] cache
|
||||||
] with-disposal ;
|
[ bind-tuple ] keep execute-statement ;
|
||||||
|
|
||||||
: insert-tuple ( tuple -- )
|
: insert-tuple ( tuple -- )
|
||||||
dup class db-columns find-primary-key assigned-id? [
|
dup class db-columns find-primary-key assigned-id? [
|
||||||
|
@ -90,17 +90,14 @@ HOOK: insert-tuple* db ( tuple statement -- )
|
||||||
] if ;
|
] if ;
|
||||||
|
|
||||||
: update-tuple ( tuple -- )
|
: update-tuple ( tuple -- )
|
||||||
dup class <update-tuple-statement> [
|
dup class
|
||||||
[ bind-tuple ] keep execute-statement
|
db get db-update-statements [ <update-tuple-statement> ] cache
|
||||||
] with-disposal ;
|
[ bind-tuple ] keep execute-statement ;
|
||||||
|
|
||||||
! : update-tuples ( seq -- )
|
|
||||||
! <update-tuples-statement> execute-statement ;
|
|
||||||
|
|
||||||
: delete-tuple ( tuple -- )
|
: delete-tuple ( tuple -- )
|
||||||
dup class <delete-tuple-statement> [
|
dup class
|
||||||
[ bind-tuple ] keep execute-statement
|
db get db-delete-statements [ <delete-tuple-statement> ] cache
|
||||||
] with-disposal ;
|
[ bind-tuple ] keep execute-statement ;
|
||||||
|
|
||||||
: select-tuples ( tuple -- tuple )
|
: select-tuples ( tuple -- tuple )
|
||||||
dup dup class <select-by-slots-statement> [
|
dup dup class <select-by-slots-statement> [
|
||||||
|
|
Loading…
Reference in New Issue