From 67c8bbe5c792a655ab69e83b264f9af5df470651 Mon Sep 17 00:00:00 2001 From: Sascha Matzke Date: Wed, 6 Jan 2010 15:56:38 +0100 Subject: [PATCH] removed generic words; added kill-cursor + filter-fields words --- extra/mongodb/driver/driver.factor | 50 ++++++++-------------- extra/mongodb/msg/msg.factor | 2 +- extra/mongodb/operations/operations.factor | 2 +- 3 files changed, 19 insertions(+), 35 deletions(-) diff --git a/extra/mongodb/driver/driver.factor b/extra/mongodb/driver/driver.factor index e1bf4f6746..78d0b62734 100644 --- a/extra/mongodb/driver/driver.factor +++ b/extra/mongodb/driver/driver.factor @@ -165,9 +165,7 @@ M: mdb-collection create-collection : fix-query-collection ( mdb-query -- mdb-query ) [ check-collection ] change-collection ; inline -GENERIC: get-more ( mdb-cursor -- mdb-cursor seq ) - -M: mdb-cursor get-more +: get-more ( mdb-cursor -- mdb-cursor seq ) [ [ query>> dup [ collection>> ] [ return#>> ] bi ] [ id>> ] bi swap >>query send-query ] [ f f ] if* ; @@ -177,21 +175,17 @@ PRIVATE> : ( collection assoc -- mdb-query-msg ) ; inline -GENERIC# limit 1 ( mdb-query-msg limit# -- mdb-query-msg ) - -M: mdb-query-msg limit +: limit ( mdb-query-msg limit# -- mdb-query-msg ) >>return# ; inline -GENERIC# skip 1 ( mdb-query-msg skip# -- mdb-query-msg ) - -M: mdb-query-msg skip +: skip ( mdb-query-msg skip# -- mdb-query-msg ) >>skip# ; inline : asc ( key -- spec ) 1 2array ; inline : desc ( key -- spec ) -1 2array ; inline : sort ( mdb-query-msg sort-quot -- mdb-query-msg ) - output>array [ 1array >hashtable ] map >>orderby ; inline + output>array >hashtable >>orderby ; inline : filter-fields ( mdb-query-msg filterseq -- mdb-query-msg ) [ asc ] map >hashtable >>returnfields ; inline @@ -212,21 +206,15 @@ M: mdb-query-msg find M: mdb-cursor find get-more ; -GENERIC: explain. ( mdb-query-msg -- ) - -M: mdb-query-msg explain. +: explain. ( mdb-query-msg -- ) t >>explain find nip . ; -GENERIC: find-one ( mdb-query-msg -- result/f ) - -M: mdb-query-msg find-one +: find-one ( mdb-query-msg -- result/f ) fix-query-collection 1 >>return# send-query-plain objects>> dup empty? [ drop f ] [ first ] if ; -GENERIC: count ( mdb-query-msg -- result ) - -M: mdb-query-msg count +: count ( mdb-query-msg -- result ) [ collection>> "count" H{ } clone [ set-at ] keep ] keep query>> [ over [ "query" ] dip set-at ] when* [ cmd-collection ] dip find-one @@ -254,18 +242,15 @@ M: mdb-collection validate. PRIVATE> -GENERIC: save ( collection assoc -- ) -M: assoc save +: save ( collection assoc -- ) [ check-collection ] dip send-message-check-error ; -GENERIC: save-unsafe ( collection assoc -- ) -M: assoc save-unsafe +: save-unsafe ( collection assoc -- ) [ check-collection ] dip send-message ; -GENERIC: ensure-index ( index-spec -- ) -M: index-spec ensure-index +: ensure-index ( index-spec -- ) [ [ uuid1 "_id" ] dip set-at ] keep [ { [ [ name>> "name" ] dip set-at ] [ [ ns>> index-ns "ns" ] dip set-at ] @@ -288,24 +273,23 @@ M: index-spec ensure-index : >upsert ( mdb-update-msg -- mdb-update-msg ) 1 >>upsert? ; -GENERIC: update ( mdb-update-msg -- ) -M: mdb-update-msg update +: update ( mdb-update-msg -- ) send-message-check-error ; -GENERIC: update-unsafe ( mdb-update-msg -- ) -M: mdb-update-msg update-unsafe +: update-unsafe ( mdb-update-msg -- ) send-message ; -GENERIC: delete ( collection selector -- ) -M: assoc delete +: delete ( collection selector -- ) [ check-collection ] dip send-message-check-error ; -GENERIC: delete-unsafe ( collection selector -- ) -M: assoc delete-unsafe +: delete-unsafe ( collection selector -- ) [ check-collection ] dip send-message ; +: kill-cursor ( mdb-cursor -- ) + id>> send-message ; + : load-index-list ( -- index-list ) index-collection H{ } clone find nip ; diff --git a/extra/mongodb/msg/msg.factor b/extra/mongodb/msg/msg.factor index c486346795..ada0ab42d0 100644 --- a/extra/mongodb/msg/msg.factor +++ b/extra/mongodb/msg/msg.factor @@ -29,7 +29,7 @@ TUPLE: mdb-query-msg < mdb-msg { return# integer initial: 0 } { query assoc } { returnfields assoc } -{ orderby sequence } +{ orderby assoc } explain hint ; TUPLE: mdb-insert-msg < mdb-msg diff --git a/extra/mongodb/operations/operations.factor b/extra/mongodb/operations/operations.factor index 7e99c52aac..108f610940 100644 --- a/extra/mongodb/operations/operations.factor +++ b/extra/mongodb/operations/operations.factor @@ -107,7 +107,7 @@ USE: tools.walker :: build-query-object ( query -- selector ) H{ } clone :> selector - query { [ orderby>> [ "orderby" selector set-at ] when* ] + query { [ orderby>> [ "$orderby" selector set-at ] when* ] [ explain>> [ "$explain" selector set-at ] when* ] [ hint>> [ "$hint" selector set-at ] when* ] [ query>> "query" selector set-at ]