cleanups, fix errors

db4
Doug Coleman 2008-09-09 17:27:37 -05:00
parent 24642501e7
commit 93f77da9bf
4 changed files with 33 additions and 45 deletions

View File

@ -116,19 +116,6 @@ M: object execute-statement* ( statement type -- )
: default-query ( query -- result-set )
query-results [ [ sql-row ] query-map ] with-disposal ;
SYMBOL: in-transaction
HOOK: begin-transaction db ( -- )
HOOK: commit-transaction db ( -- )
HOOK: rollback-transaction db ( -- )
: in-transaction? ( -- ? ) in-transaction get ;
: with-transaction ( quot -- )
t in-transaction [
begin-transaction
[ ] [ rollback-transaction ] cleanup commit-transaction
] with-variable ;
: sql-query ( sql -- rows )
f f <simple-statement> [ default-query ] with-disposal ;
@ -140,3 +127,20 @@ HOOK: rollback-transaction db ( -- )
[ sql-command ] each
! ] with-transaction
] if ;
SYMBOL: in-transaction
HOOK: begin-transaction db ( -- )
HOOK: commit-transaction db ( -- )
HOOK: rollback-transaction db ( -- )
M: db begin-transaction ( -- ) "BEGIN" sql-command ;
M: db commit-transaction ( -- ) "COMMIT" sql-command ;
M: db rollback-transaction ( -- ) "ROLLBACK" sql-command ;
: in-transaction? ( -- ? ) in-transaction get ;
: with-transaction ( quot -- )
t in-transaction [
begin-transaction
[ ] [ rollback-transaction ] cleanup commit-transaction
] with-variable ;

View File

@ -50,10 +50,6 @@ M: retryable execute-statement* ( statement type -- )
[ 0 sql-counter rot with-variable ] curry { "" { } { } } nmake
<simple-statement> maybe-make-retryable ; inline
M: db begin-transaction ( -- ) "BEGIN" sql-command ;
M: db commit-transaction ( -- ) "COMMIT" sql-command ;
M: db rollback-transaction ( -- ) "ROLLBACK" sql-command ;
: where-primary-key% ( specs -- )
" where " 0%
find-primary-key dup column-name>> 0% " = " 0% bind% ;
@ -70,7 +66,7 @@ M: db <update-tuple-statement> ( class -- statement )
M: random-id-generator eval-generator ( singleton -- obj )
drop
system-random-generator get [
63 [ 2^ random ] keep 1 - set-bit
63 [ random-bits ] keep 1- set-bit
] with-random ;
: interval-comparison ( ? str -- str )
@ -154,22 +150,22 @@ M: db <select-by-slots-statement> ( tuple class -- statement )
: do-group ( tuple groups -- )
[
", " join " group by " prepend append
", " join " group by " swap 3append
] curry change-sql drop ;
: do-order ( tuple order -- )
[
", " join " order by " prepend append
", " join " order by " swap 3append
] curry change-sql drop ;
: do-offset ( tuple n -- )
[
number>string " offset " prepend append
number>string " offset " swap 3append
] curry change-sql drop ;
: do-limit ( tuple n -- )
[
number>string " limit " prepend append
number>string " limit " swap 3append
] curry change-sql drop ;
: make-query ( tuple query -- tuple' )

View File

@ -15,13 +15,13 @@ IN: db.tuples
ERROR: not-persistent class ;
: db-table ( class -- obj )
: db-table ( class -- object )
dup "db-table" word-prop [ ] [ not-persistent ] ?if ;
: db-columns ( class -- obj )
: db-columns ( class -- object )
superclasses [ "db-columns" word-prop ] map concat ;
: db-relations ( class -- obj )
: db-relations ( class -- object )
"db-relations" word-prop ;
: set-primary-key ( key tuple -- )
@ -34,13 +34,13 @@ SYMBOL: sql-counter
sql-counter [ inc ] [ get ] bi number>string ;
! returns a sequence of prepared-statements
HOOK: create-sql-statement db ( class -- obj )
HOOK: drop-sql-statement db ( class -- obj )
HOOK: create-sql-statement db ( class -- object )
HOOK: drop-sql-statement db ( class -- object )
HOOK: <insert-db-assigned-statement> db ( class -- obj )
HOOK: <insert-user-assigned-statement> db ( class -- obj )
HOOK: <update-tuple-statement> db ( class -- obj )
HOOK: <delete-tuples-statement> db ( tuple class -- obj )
HOOK: <insert-db-assigned-statement> db ( class -- object )
HOOK: <insert-user-assigned-statement> db ( class -- object )
HOOK: <update-tuple-statement> db ( class -- object )
HOOK: <delete-tuples-statement> db ( tuple class -- object )
HOOK: <select-by-slots-statement> db ( tuple class -- tuple )
TUPLE: query group order offset limit ;
HOOK: <query> db ( tuple class query -- statement' )
@ -48,7 +48,7 @@ HOOK: <count-statement> db ( tuple class groups -- n )
HOOK: insert-tuple* db ( tuple statement -- )
GENERIC: eval-generator ( singleton -- obj )
GENERIC: eval-generator ( singleton -- object )
: resulting-tuple ( exemplar-tuple row out-params -- tuple )
rot class new [
@ -68,7 +68,7 @@ GENERIC: eval-generator ( singleton -- obj )
[ slot-name>> ] dip set-slot-named
] curry 2each ;
: with-disposals ( seq quot -- )
: with-disposals ( object quotation -- )
over sequence? [
[ with-disposal ] curry each
] [

View File

@ -133,12 +133,6 @@ HELP: db-assigned-id-spec?
{ "?" "a boolean" } }
{ $description "" } ;
HELP: double-quote
{ $values
{ "string" string }
{ "new-string" null } }
{ $description "" } ;
HELP: find-primary-key
{ $values
{ "specs" null }
@ -266,12 +260,6 @@ HELP: set-slot-named
{ "value" null } { "name" null } { "obj" object } }
{ $description "" } ;
HELP: single-quote
{ $values
{ "string" string }
{ "new-string" null } }
{ $description "" } ;
HELP: spec>tuple
{ $values
{ "class" class } { "spec" null }