count word now takes a "normal" query object as argument
refactored the creation/validation of collectionsdb4
parent
c936517c45
commit
d78dc167b6
|
@ -73,7 +73,9 @@ SYNTAX: r/ ( token -- mdbregexp )
|
||||||
: send-message ( message -- )
|
: send-message ( message -- )
|
||||||
[ mdb-connection> handle>> ] dip '[ _ write-message ] with-stream* ;
|
[ mdb-connection> handle>> ] dip '[ _ write-message ] with-stream* ;
|
||||||
|
|
||||||
|
DEFER: check-collection
|
||||||
: send-query-plain ( query-message -- result )
|
: send-query-plain ( query-message -- result )
|
||||||
|
[ check-collection ] change-collection
|
||||||
[ mdb-connection> handle>> ] dip
|
[ mdb-connection> handle>> ] dip
|
||||||
'[ _ write-message read-message ] with-stream* ;
|
'[ _ write-message read-message ] with-stream* ;
|
||||||
|
|
||||||
|
@ -135,9 +137,7 @@ M: mdb-collection create-collection ( mdb-collection -- )
|
||||||
MEMO: reserved-namespace? ( name -- ? )
|
MEMO: reserved-namespace? ( name -- ? )
|
||||||
[ "$cmd" = ] [ "system" head? ] bi or ;
|
[ "$cmd" = ] [ "system" head? ] bi or ;
|
||||||
|
|
||||||
PRIVATE>
|
MEMO: check-collection ( collection -- fq-collection )
|
||||||
|
|
||||||
MEMO: ensure-collection ( collection -- fq-collection )
|
|
||||||
dup mdb-collection? [ name>> ] when
|
dup mdb-collection? [ name>> ] when
|
||||||
"." split1 over mdb-instance name>> =
|
"." split1 over mdb-instance name>> =
|
||||||
[ nip ] [ drop ] if
|
[ nip ] [ drop ] if
|
||||||
|
@ -145,8 +145,9 @@ MEMO: ensure-collection ( collection -- fq-collection )
|
||||||
[ [ (ensure-collection) ] keep ] unless
|
[ [ (ensure-collection) ] keep ] unless
|
||||||
[ mdb-instance name>> ] dip "%s.%s" sprintf ; inline
|
[ mdb-instance name>> ] dip "%s.%s" sprintf ; inline
|
||||||
|
|
||||||
|
PRIVATE>
|
||||||
|
|
||||||
: <query> ( collection query -- mdb-query )
|
: <query> ( collection query -- mdb-query )
|
||||||
[ ensure-collection ] dip
|
|
||||||
<mdb-query-msg> ; inline
|
<mdb-query-msg> ; inline
|
||||||
|
|
||||||
GENERIC# limit 1 ( mdb-query limit# -- mdb-query )
|
GENERIC# limit 1 ( mdb-query limit# -- mdb-query )
|
||||||
|
@ -183,19 +184,18 @@ GENERIC: explain. ( mdb-query -- )
|
||||||
M: mdb-query-msg explain.
|
M: mdb-query-msg explain.
|
||||||
t >>explain find nip . ;
|
t >>explain find nip . ;
|
||||||
|
|
||||||
|
|
||||||
GENERIC: find-one ( mdb-query -- result/f )
|
GENERIC: find-one ( mdb-query -- result/f )
|
||||||
M: mdb-query-msg find-one
|
M: mdb-query-msg find-one
|
||||||
1 >>return# send-query-plain objects>>
|
1 >>return# send-query-plain objects>>
|
||||||
dup empty? [ drop f ] [ first ] if ;
|
dup empty? [ drop f ] [ first ] if ;
|
||||||
|
|
||||||
GENERIC: count ( collection selector -- result )
|
GENERIC: count ( mdb-query -- result )
|
||||||
M: assoc count
|
M: mdb-query-msg count
|
||||||
[ "count" H{ } clone [ set-at ] keep ] dip
|
[ collection>> "count" H{ } clone [ set-at ] keep ] keep
|
||||||
[ over [ "query" ] dip set-at ] when*
|
query>> [ over [ "query" ] dip set-at ] when*
|
||||||
[ cmd-collection ] dip <mdb-query-msg> find-one
|
[ cmd-collection ] dip <mdb-query-msg> find-one
|
||||||
[ check-ok ] keep '[ "n" _ at >fixnum ] [ f ] if ;
|
[ check-ok ] keep '[ "n" _ at >fixnum ] [ f ] if ;
|
||||||
|
|
||||||
: lasterror ( -- error )
|
: lasterror ( -- error )
|
||||||
cmd-collection H{ { "getlasterror" 1 } } <mdb-query-msg>
|
cmd-collection H{ { "getlasterror" 1 } } <mdb-query-msg>
|
||||||
find-one [ "err" ] dip at ;
|
find-one [ "err" ] dip at ;
|
||||||
|
@ -218,12 +218,12 @@ PRIVATE>
|
||||||
|
|
||||||
GENERIC: save ( collection assoc -- )
|
GENERIC: save ( collection assoc -- )
|
||||||
M: assoc save
|
M: assoc save
|
||||||
[ ensure-collection ] dip
|
[ check-collection ] dip
|
||||||
<mdb-insert-msg> send-message-check-error ;
|
<mdb-insert-msg> send-message-check-error ;
|
||||||
|
|
||||||
GENERIC: save-unsafe ( collection object -- )
|
GENERIC: save-unsafe ( collection object -- )
|
||||||
M: assoc save-unsafe
|
M: assoc save-unsafe
|
||||||
[ ensure-collection ] dip
|
[ check-collection ] dip
|
||||||
<mdb-insert-msg> send-message ;
|
<mdb-insert-msg> send-message ;
|
||||||
|
|
||||||
GENERIC: ensure-index ( collection name spec -- )
|
GENERIC: ensure-index ( collection name spec -- )
|
||||||
|
@ -244,7 +244,7 @@ M: assoc ensure-index
|
||||||
check-ok [ "could not drop index" throw ] unless ;
|
check-ok [ "could not drop index" throw ] unless ;
|
||||||
|
|
||||||
: <update> ( collection selector object -- update-msg )
|
: <update> ( collection selector object -- update-msg )
|
||||||
[ ensure-collection ] 2dip <mdb-update-msg> ;
|
[ check-collection ] 2dip <mdb-update-msg> ;
|
||||||
|
|
||||||
: >upsert ( mdb-update-msg -- mdb-update-msg )
|
: >upsert ( mdb-update-msg -- mdb-update-msg )
|
||||||
1 >>upsert? ;
|
1 >>upsert? ;
|
||||||
|
@ -259,18 +259,21 @@ M: mdb-update-msg update-unsafe
|
||||||
|
|
||||||
GENERIC: delete ( collection selector -- )
|
GENERIC: delete ( collection selector -- )
|
||||||
M: assoc delete
|
M: assoc delete
|
||||||
[ ensure-collection ] dip
|
[ check-collection ] dip
|
||||||
<mdb-delete-msg> send-message-check-error ;
|
<mdb-delete-msg> send-message-check-error ;
|
||||||
|
|
||||||
GENERIC: delete-unsafe ( collection selector -- )
|
GENERIC: delete-unsafe ( collection selector -- )
|
||||||
M: assoc delete-unsafe
|
M: assoc delete-unsafe
|
||||||
[ ensure-collection ] dip
|
[ check-collection ] dip
|
||||||
<mdb-delete-msg> send-message ;
|
<mdb-delete-msg> send-message ;
|
||||||
|
|
||||||
: load-index-list ( -- index-list )
|
: load-index-list ( -- index-list )
|
||||||
index-collection
|
index-collection
|
||||||
H{ } clone <mdb-query-msg> find nip ;
|
H{ } clone <mdb-query-msg> find nip ;
|
||||||
|
|
||||||
|
: ensure-collection ( name -- )
|
||||||
|
check-collection drop ;
|
||||||
|
|
||||||
: drop-collection ( name -- )
|
: drop-collection ( name -- )
|
||||||
[ cmd-collection ] dip
|
[ cmd-collection ] dip
|
||||||
"drop" H{ } clone [ set-at ] keep
|
"drop" H{ } clone [ set-at ] keep
|
||||||
|
|
Loading…
Reference in New Issue