Merge branch 'master' of git://factorcode.org/git/factor
commit
a52ec223d8
|
@ -175,7 +175,7 @@ M: postgresql-db create-sql-statement ( class -- seq )
|
||||||
|
|
||||||
: drop-table-sql ( table -- statement )
|
: drop-table-sql ( table -- statement )
|
||||||
[
|
[
|
||||||
"drop table " 0% 0% ";" 0% drop
|
"drop table " 0% 0% drop
|
||||||
] query-make ;
|
] query-make ;
|
||||||
|
|
||||||
M: postgresql-db drop-sql-statement ( class -- seq )
|
M: postgresql-db drop-sql-statement ( class -- seq )
|
||||||
|
|
|
@ -147,7 +147,8 @@ M: db <select-by-slots-statement> ( tuple class -- statement )
|
||||||
number>string " limit " prepend append
|
number>string " limit " prepend append
|
||||||
] curry change-sql drop ;
|
] curry change-sql drop ;
|
||||||
|
|
||||||
: make-advanced-statement ( tuple advanced -- )
|
: make-advanced-statement ( tuple advanced -- tuple' )
|
||||||
|
dupd
|
||||||
{
|
{
|
||||||
[ group>> [ do-group ] [ drop ] if* ]
|
[ group>> [ do-group ] [ drop ] if* ]
|
||||||
[ order>> [ do-order ] [ drop ] if* ]
|
[ order>> [ do-order ] [ drop ] if* ]
|
||||||
|
@ -155,6 +156,6 @@ M: db <select-by-slots-statement> ( tuple class -- statement )
|
||||||
[ offset>> [ do-offset ] [ drop ] if* ]
|
[ offset>> [ do-offset ] [ drop ] if* ]
|
||||||
} 2cleave ;
|
} 2cleave ;
|
||||||
|
|
||||||
M: db <advanced-select-statement> ( tuple class advanced -- tuple )
|
M: db <advanced-select-statement> ( tuple class group order limit offset -- tuple )
|
||||||
>r <select-by-slots-statement> r>
|
advanced-statement boa
|
||||||
dupd make-advanced-statement ;
|
[ <select-by-slots-statement> ] dip make-advanced-statement ;
|
||||||
|
|
|
@ -4,9 +4,11 @@ IN: db.sql.tests
|
||||||
! TUPLE: person name age ;
|
! TUPLE: person name age ;
|
||||||
: insert-1
|
: insert-1
|
||||||
{ insert
|
{ insert
|
||||||
{ table "person" }
|
{
|
||||||
{ columns "name" "age" }
|
{ table "person" }
|
||||||
{ values "erg" 26 }
|
{ columns "name" "age" }
|
||||||
|
{ values "erg" 26 }
|
||||||
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
: update-1
|
: update-1
|
||||||
|
|
|
@ -43,7 +43,7 @@ HOOK: <update-tuple-statement> db ( class -- obj )
|
||||||
HOOK: <delete-tuples-statement> db ( tuple class -- obj )
|
HOOK: <delete-tuples-statement> db ( tuple class -- obj )
|
||||||
HOOK: <select-by-slots-statement> db ( tuple class -- tuple )
|
HOOK: <select-by-slots-statement> db ( tuple class -- tuple )
|
||||||
TUPLE: advanced-statement group order offset limit ;
|
TUPLE: advanced-statement group order offset limit ;
|
||||||
HOOK: <advanced-select-statement> db ( tuple class advanced -- tuple )
|
HOOK: <advanced-select-statement> db ( tuple class group order offset limit -- tuple )
|
||||||
|
|
||||||
HOOK: insert-tuple* db ( tuple statement -- )
|
HOOK: insert-tuple* db ( tuple statement -- )
|
||||||
|
|
||||||
|
@ -143,9 +143,12 @@ M: retryable execute-statement* ( statement type -- )
|
||||||
[ bind-tuple ] keep execute-statement
|
[ bind-tuple ] keep execute-statement
|
||||||
] with-disposal ;
|
] with-disposal ;
|
||||||
|
|
||||||
: select-tuples ( tuple -- tuples )
|
: do-select ( exemplar-tuple statement -- tuples )
|
||||||
dup dup class <select-by-slots-statement> [
|
[ [ bind-tuple ] [ query-tuples ] 2bi ] with-disposal ;
|
||||||
[ bind-tuple ] [ query-tuples ] 2bi
|
|
||||||
] with-disposal ;
|
|
||||||
|
|
||||||
: select-tuple ( tuple -- tuple/f ) select-tuples ?first ;
|
: select-tuples ( tuple -- tuples )
|
||||||
|
dup dup class <select-by-slots-statement> do-select ;
|
||||||
|
|
||||||
|
: select-tuple ( tuple -- tuple/f )
|
||||||
|
dup dup class f f f 1 <advanced-select-statement>
|
||||||
|
do-select ?first ;
|
||||||
|
|
Loading…
Reference in New Issue