msg>> text ;
: >pwd-digest ( user password -- digest )
- "mongo" swap 3array ":" join md5-checksum ;
+ "mongo" swap 3array ":" join md5-checksum ;
<PRIVATE
GENERIC: update-query ( mdb-result-msg mdb-query-msg/mdb-getmore-msg -- )
-M: mdb-query-msg update-query
+M: mdb-query-msg update-query
swap [ start#>> ] [ returned#>> ] bi + >>skip# drop ;
M: mdb-getmore-msg update-query
- query>> update-query ;
-
+ query>> update-query ;
+
: make-cursor ( mdb-result-msg mdb-query-msg/mdb-getmore-msg -- mdb-cursor/f )
over cursor>> 0 >
[ [ update-query ]
DEFER: send-query
-GENERIC: verify-query-result ( mdb-result-msg mdb-query-msg/mdb-getmore-msg -- mdb-result-msg mdb-query-msg/mdb-getmore-msg )
+GENERIC: verify-query-result ( mdb-result-msg mdb-query-msg/mdb-getmore-msg -- mdb-result-msg mdb-query-msg/mdb-getmore-msg )
M: mdb-query-msg verify-query-result ;
M: mdb-getmore-msg verify-query-result
over flags>> ResultFlag_CursorNotFound =
[ nip query>> [ send-query-plain ] keep ] when ;
-
+
: send-query ( mdb-query-msg/mdb-getmore-msg -- mdb-cursor/f seq )
[ send-query-plain ] keep
- verify-query-result
+ verify-query-result
[ collection>> >>collection drop ]
- [ return#>> >>requested# ]
+ [ return#>> >>requested# ]
[ make-cursor ] 2tri
swap objects>> ;
PRIVATE>
SYNTAX: r/
- \ / [ >mdbregexp ] parse-literal ;
+ \ / [ >mdbregexp ] parse-literal ;
: with-db ( mdb quot -- )
'[ _ mdb-open &dispose _ with-connection ] with-destructors ; inline
} cleave send-cmd check-ok
[ drop [ ] [ name>> ] bi mdb-instance collections>> set-at ]
[ throw ] if ;
-
+
: load-collection-list ( -- collection-list )
namespaces-collection
H{ } clone <mdb-query-msg> send-query-plain objects>> ;
: get-more ( mdb-cursor -- mdb-cursor seq )
[ [ query>> dup [ collection>> ] [ return#>> ] bi ]
- [ id>> ] bi <mdb-getmore-msg> swap >>query send-query ]
+ [ id>> ] bi <mdb-getmore-msg> swap >>query send-query ]
[ f f ] if* ;
PRIVATE>
GENERIC# hint 1 ( mdb-query-msg index-hint -- mdb-query-msg )
-M: mdb-query-msg hint
+M: mdb-query-msg hint
>>hint ;
GENERIC: find ( selector -- mdb-cursor/f seq )
: count ( mdb-query-msg -- result )
[ count-cmd make-cmd ] dip
[ collection>> "count" set-cmd-opt ]
- [ query>> "query" set-cmd-opt ] bi send-cmd
+ [ query>> "query" set-cmd-opt ] bi send-cmd
[ check-ok nip ] keep '[ "n" _ at >fixnum ] [ f ] if ;
: lasterror ( -- error )
: drop-collection ( name -- )
[ drop-cmd make-cmd ] dip
"drop" set-cmd-opt send-cmd drop ;
-
-