]> gitweb.factorcode.org Git - factor.git/commitdiff
Merge branch 'mongo-factor-driver' of git@github.com:x6j8x/factor into mongo-factor...
authorSascha Matzke <sascha.matzke@didolo.org>
Mon, 11 May 2009 08:08:22 +0000 (10:08 +0200)
committerSascha Matzke <sascha.matzke@didolo.org>
Mon, 11 May 2009 08:08:22 +0000 (10:08 +0200)
extra/mongodb/tuple/collection/collection.factor
extra/mongodb/tuple/tuple.factor

index 1bd2d94e69c865432577fc3a9a8b4053ae0feadd..60b2d25764a8546976c9349f65cb353153aca75e 100644 (file)
@@ -92,6 +92,8 @@ GENERIC: mdb-index-map ( tuple -- sequence )
       [ ] [ name>> ] bi  H{ } clone [ set-at ] keep
     ] [ 2drop H{ } clone ] if ;
 
+
+
 PRIVATE>
 
 : MDB_ADDON_SLOTS ( -- slots )
@@ -116,7 +118,7 @@ PRIVATE>
     [ drop MDB_USER_KEY set-word-prop ] [ 3drop ] if ; inline
 
 : set-index-map ( class index-list -- )
-    [ [ dup user-defined-key-index ] dip index-list>map  ] output>sequence
+    [ dup user-defined-key-index ] dip index-list>map 2array
     assoc-combine MDB_INDEX_MAP set-word-prop ; inline
 
 M: tuple-class tuple-collection ( tuple -- mdb-collection )
index 917395797984c98cd4d3cdc6a58ea74ad4f78348..1b4b3cd4f11a66990feeb756bf296a825ce9ab37 100644 (file)
@@ -54,19 +54,30 @@ M: mdb-persistent id-selector
            <update> >upsert update ] assoc-each ; inline
 PRIVATE>
  
-: save-tuple ( tuple -- )
-   tuple>storable [ (save-tuples) ] assoc-each ;
+: save-tuple-deep ( tuple -- )
+    tuple>storable [ (save-tuples) ] assoc-each ; 
  
 : update-tuple ( tuple -- )
-   save-tuple ;
+    [ tuple-collection name>> ]
+    [ id-selector ]
+    [ tuple>assoc ] tri
+    <mdb-update-msg> update ;
+
+: save-tuple ( tuple -- )
+    update-tuple ;
 
 : insert-tuple ( tuple -- )
-   save-tuple ;
+   [ tuple-collection name>> ]
+   [ tuple>assoc ] bi
+   save ;
 
 : delete-tuple ( tuple -- )
    [ tuple-collection name>> ] keep
    id-selector delete ;
 
+: delete-tuples ( seq -- )
+    [ delete-tuple ] each ;
+
 : tuple>query ( tuple -- query )
    [ tuple-collection name>> ] keep
    tuple>selector <query> ;