eliminate tons of code duplication
parent
cd62fff604
commit
dfe736a8b9
|
@ -197,26 +197,6 @@ M: postgresql-db <insert-nonnative-statement> ( class -- statement )
|
||||||
M: postgresql-db insert-tuple* ( tuple statement -- )
|
M: postgresql-db insert-tuple* ( tuple statement -- )
|
||||||
query-modify-tuple ;
|
query-modify-tuple ;
|
||||||
|
|
||||||
M: postgresql-db <update-tuple-statement> ( class -- statement )
|
|
||||||
[
|
|
||||||
"update " 0% 0%
|
|
||||||
" set " 0%
|
|
||||||
dup remove-id
|
|
||||||
[ ", " 0% ]
|
|
||||||
[ dup column-name>> 0% " = " 0% bind% ] interleave
|
|
||||||
" where " 0%
|
|
||||||
find-primary-key
|
|
||||||
dup column-name>> 0% " = " 0% bind%
|
|
||||||
] query-make ;
|
|
||||||
|
|
||||||
M: postgresql-db <delete-tuple-statement> ( class -- statement )
|
|
||||||
[
|
|
||||||
"delete from " 0% 0%
|
|
||||||
" where " 0%
|
|
||||||
find-primary-key
|
|
||||||
dup column-name>> 0% " = " 0% bind%
|
|
||||||
] query-make ;
|
|
||||||
|
|
||||||
M: postgresql-db <select-by-slots-statement> ( tuple class -- statement )
|
M: postgresql-db <select-by-slots-statement> ( tuple class -- statement )
|
||||||
[
|
[
|
||||||
"select " 0%
|
"select " 0%
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
! Copyright (C) 2008 Doug Coleman.
|
! Copyright (C) 2008 Doug Coleman.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
USING: accessors kernel namespaces sequences namespaces.lib db
|
USING: accessors kernel math namespaces sequences random
|
||||||
db.tuples db.types ;
|
math.bitfields.lib namespaces.lib db db.tuples db.types ;
|
||||||
IN: db.queries
|
IN: db.queries
|
||||||
|
|
||||||
: maybe-make-retryable ( statement -- statement )
|
: maybe-make-retryable ( statement -- statement )
|
||||||
|
@ -17,3 +17,28 @@ IN: db.queries
|
||||||
M: db begin-transaction ( -- ) "BEGIN" sql-command ;
|
M: db begin-transaction ( -- ) "BEGIN" sql-command ;
|
||||||
M: db commit-transaction ( -- ) "COMMIT" sql-command ;
|
M: db commit-transaction ( -- ) "COMMIT" sql-command ;
|
||||||
M: db rollback-transaction ( -- ) "ROLLBACK" sql-command ;
|
M: db rollback-transaction ( -- ) "ROLLBACK" sql-command ;
|
||||||
|
|
||||||
|
: where-primary-key% ( specs -- )
|
||||||
|
" where " 0%
|
||||||
|
find-primary-key dup column-name>> 0% " = " 0% bind% ;
|
||||||
|
|
||||||
|
M: db <update-tuple-statement> ( class -- statement )
|
||||||
|
[
|
||||||
|
"update " 0% 0%
|
||||||
|
" set " 0%
|
||||||
|
dup remove-id
|
||||||
|
[ ", " 0% ] [ dup column-name>> 0% " = " 0% bind% ] interleave
|
||||||
|
where-primary-key%
|
||||||
|
] query-make ;
|
||||||
|
|
||||||
|
M: db <delete-tuple-statement> ( specs table -- sql )
|
||||||
|
[
|
||||||
|
"delete from " 0% 0%
|
||||||
|
" where " 0%
|
||||||
|
find-primary-key
|
||||||
|
dup column-name>> 0% " = " 0% bind%
|
||||||
|
] query-make ;
|
||||||
|
|
||||||
|
M: db random-id-quot ( -- quot )
|
||||||
|
[ 63 [ 2^ random ] keep 1 - set-bit ] ;
|
||||||
|
|
||||||
|
|
|
@ -156,10 +156,6 @@ M: sqlite-db bind# ( spec obj -- )
|
||||||
M: sqlite-db bind% ( spec -- )
|
M: sqlite-db bind% ( spec -- )
|
||||||
dup 1, column-name>> ":" prepend 0% ;
|
dup 1, column-name>> ":" prepend 0% ;
|
||||||
|
|
||||||
: where-primary-key% ( specs -- )
|
|
||||||
" where " 0%
|
|
||||||
find-primary-key dup column-name>> 0% " = " 0% bind% ;
|
|
||||||
|
|
||||||
GENERIC: where ( specs obj -- )
|
GENERIC: where ( specs obj -- )
|
||||||
|
|
||||||
: interval-comparison ( ? str -- str )
|
: interval-comparison ( ? str -- str )
|
||||||
|
@ -200,24 +196,6 @@ M: string where ( spec obj -- ) object-where ;
|
||||||
2dup slot-name>> swap get-slot-named where
|
2dup slot-name>> swap get-slot-named where
|
||||||
] interleave drop ;
|
] interleave drop ;
|
||||||
|
|
||||||
M: sqlite-db <update-tuple-statement> ( class -- statement )
|
|
||||||
[
|
|
||||||
"update " 0%
|
|
||||||
0%
|
|
||||||
" set " 0%
|
|
||||||
dup remove-id
|
|
||||||
[ ", " 0% ] [ dup column-name>> 0% " = " 0% bind% ] interleave
|
|
||||||
where-primary-key%
|
|
||||||
] query-make ;
|
|
||||||
|
|
||||||
M: sqlite-db <delete-tuple-statement> ( specs table -- sql )
|
|
||||||
[
|
|
||||||
"delete from " 0% 0%
|
|
||||||
" where " 0%
|
|
||||||
find-primary-key
|
|
||||||
dup column-name>> 0% " = " 0% bind%
|
|
||||||
] query-make ;
|
|
||||||
|
|
||||||
M: sqlite-db <select-by-slots-statement> ( tuple class -- statement )
|
M: sqlite-db <select-by-slots-statement> ( tuple class -- statement )
|
||||||
[
|
[
|
||||||
"select " 0%
|
"select " 0%
|
||||||
|
@ -230,9 +208,6 @@ M: sqlite-db <select-by-slots-statement> ( tuple class -- statement )
|
||||||
dup empty? [ 2drop ] [ where-clause ] if ";" 0%
|
dup empty? [ 2drop ] [ where-clause ] if ";" 0%
|
||||||
] query-make ;
|
] query-make ;
|
||||||
|
|
||||||
M: sqlite-db random-id-quot ( -- quot )
|
|
||||||
[ 64 [ 2^ random ] keep 1 - set-bit ] ;
|
|
||||||
|
|
||||||
M: sqlite-db persistent-table ( -- assoc )
|
M: sqlite-db persistent-table ( -- assoc )
|
||||||
H{
|
H{
|
||||||
{ +native-id+ { "integer primary key" "integer primary key" f } }
|
{ +native-id+ { "integer primary key" "integer primary key" f } }
|
||||||
|
|
Loading…
Reference in New Issue