added each-chunk, find-all and select-all-tuples words

db4
Sascha Matzke 2010-08-09 15:22:51 +02:00 committed by Doug Coleman
parent 2374126ed8
commit 942fbe2666
2 changed files with 21 additions and 2 deletions

View File

@ -225,6 +225,15 @@ M: mdb-query-msg find
M: mdb-cursor find
get-more ;
: each-chunk ( selector quot: ( seq -- ) -- )
swap find
[ pick call( seq -- ) ] when*
[ swap each-chunk ] [ drop ] if* ;
: find-all ( selector -- seq )
[ V{ } clone ] dip
over '[ _ push-all ] each-chunk >array ;
: explain. ( mdb-query-msg -- )
t >>explain find nip . ;

View File

@ -38,6 +38,8 @@ SYNTAX: MDBTUPLE:
[ drop-table ]
[ ensure-table ] bi ;
DEFER: tuple>query
<PRIVATE
GENERIC: id-selector ( object -- selector )
@ -52,6 +54,10 @@ M: mdb-persistent id-selector
swap '[ [ _ ] 2dip
[ id-selector ] dip
<update> >upsert update ] assoc-each ; inline
: prepare-tuple-query ( tuple/query -- query )
dup mdb-query-msg? [ tuple>query ] unless ;
PRIVATE>
: save-tuple-deep ( tuple -- )
@ -83,12 +89,16 @@ PRIVATE>
tuple>selector <query> ;
: select-tuple ( tuple/query -- tuple/f )
dup mdb-query-msg? [ tuple>query ] unless
prepare-tuple-query
find-one [ assoc>tuple ] [ f ] if* ;
: select-tuples ( tuple/query -- cursor tuples/f )
dup mdb-query-msg? [ tuple>query ] unless
prepare-tuple-query
find [ assoc>tuple ] map ;
: select-all-tuples ( tuple/query -- tuples )
prepare-tuple-query
find-all [ assoc>tuple ] map ;
: count-tuples ( tuple/query -- n )
dup mdb-query-msg? [ tuple>query ] unless count ;