db.tuples[-docs]: add each-tuple
parent
e077aad163
commit
16be5d0353
|
@ -130,6 +130,12 @@ HELP: delete-tuples
|
||||||
|
|
||||||
{ insert-tuple update-tuple delete-tuples } related-words
|
{ insert-tuple update-tuple delete-tuples } related-words
|
||||||
|
|
||||||
|
HELP: each-tuple
|
||||||
|
{ $values
|
||||||
|
{ "query/tuple" tuple }
|
||||||
|
{ "quot" { $quotation ( tuple -- ) } } }
|
||||||
|
{ $description "An SQL query is constructed from the slots of the exemplar tuple that are not " { $link f } ". The " { $snippet "quot" } " is applied to each tuple from the database that matches the query constructed from the exemplar tuple." } ;
|
||||||
|
|
||||||
HELP: select-tuple
|
HELP: select-tuple
|
||||||
{ $values
|
{ $values
|
||||||
{ "query/tuple" tuple }
|
{ "query/tuple" tuple }
|
||||||
|
@ -148,7 +154,7 @@ HELP: count-tuples
|
||||||
{ "n" integer } }
|
{ "n" integer } }
|
||||||
{ $description "Returns the number of items that would be returned if the query were a select query. Counting the tuples with this word is more efficient than calling " { $link length } " on the result of " { $link select-tuples } "." } ;
|
{ $description "Returns the number of items that would be returned if the query were a select query. Counting the tuples with this word is more efficient than calling " { $link length } " on the result of " { $link select-tuples } "." } ;
|
||||||
|
|
||||||
{ select-tuple select-tuples count-tuples } related-words
|
{ each-tuple select-tuple select-tuples count-tuples } related-words
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -183,6 +189,7 @@ ARTICLE: "db-tuples-words" "High-level tuple/database words"
|
||||||
{ $subsections delete-tuples }
|
{ $subsections delete-tuples }
|
||||||
"Querying tuples:"
|
"Querying tuples:"
|
||||||
{ $subsections
|
{ $subsections
|
||||||
|
each-tuple
|
||||||
select-tuple
|
select-tuple
|
||||||
select-tuples
|
select-tuples
|
||||||
count-tuples
|
count-tuples
|
||||||
|
|
|
@ -33,10 +33,13 @@ GENERIC: eval-generator ( singleton -- object )
|
||||||
'[ slot-name>> _ set-slot-named ] 2each
|
'[ slot-name>> _ set-slot-named ] 2each
|
||||||
] keep ;
|
] keep ;
|
||||||
|
|
||||||
|
: query-tuples-each ( exemplar-tuple statement quot: ( tuple -- ) -- )
|
||||||
|
[ [ out-params>> ] keep query-results ] dip '[
|
||||||
|
[ sql-row-typed swap resulting-tuple @ ] 2with query-each
|
||||||
|
] with-disposal ; inline
|
||||||
|
|
||||||
: query-tuples ( exemplar-tuple statement -- seq )
|
: query-tuples ( exemplar-tuple statement -- seq )
|
||||||
[ out-params>> ] keep query-results [
|
[ ] collector [ query-tuples-each ] dip { } like ;
|
||||||
[ sql-row-typed swap resulting-tuple ] 2with query-map
|
|
||||||
] with-disposal ;
|
|
||||||
|
|
||||||
: query-modify-tuple ( tuple statement -- )
|
: query-modify-tuple ( tuple statement -- )
|
||||||
[ query-results [ sql-row-typed ] with-disposal ] keep
|
[ query-results [ sql-row-typed ] with-disposal ] keep
|
||||||
|
@ -61,6 +64,10 @@ GENERIC: eval-generator ( singleton -- object )
|
||||||
[ <insert-user-assigned-statement> ] cache
|
[ <insert-user-assigned-statement> ] cache
|
||||||
[ bind-tuple ] keep execute-statement ;
|
[ bind-tuple ] keep execute-statement ;
|
||||||
|
|
||||||
|
: do-each-tuple ( exemplar-tuple statement quot: ( tuple -- ) -- tuples )
|
||||||
|
'[ [ bind-tuple ] [ _ query-tuples-each ] 2bi ] with-disposal
|
||||||
|
; inline
|
||||||
|
|
||||||
: do-select ( exemplar-tuple statement -- tuples )
|
: do-select ( exemplar-tuple statement -- tuples )
|
||||||
[ [ bind-tuple ] [ query-tuples ] 2bi ] with-disposal ;
|
[ [ bind-tuple ] [ query-tuples ] 2bi ] with-disposal ;
|
||||||
|
|
||||||
|
@ -155,3 +162,7 @@ ERROR: no-defined-persistent object ;
|
||||||
: count-tuples ( query/tuple -- n )
|
: count-tuples ( query/tuple -- n )
|
||||||
>query [ tuple>> ] [ <count-statement> ] bi do-count
|
>query [ tuple>> ] [ <count-statement> ] bi do-count
|
||||||
[ first string>number ] map dup length 1 = [ first ] when ;
|
[ first string>number ] map dup length 1 = [ first ] when ;
|
||||||
|
|
||||||
|
: each-tuple ( query/tuple quot: ( tuple -- ) -- )
|
||||||
|
[ >query [ tuple>> ] [ query>statement ] bi ] dip do-each-tuple
|
||||||
|
; inline
|
||||||
|
|
Loading…
Reference in New Issue