]> gitweb.factorcode.org Git - factor.git/commitdiff
fix randomly generated ids
authorDoug Coleman <doug.coleman@gmail.com>
Mon, 28 Apr 2008 22:17:19 +0000 (17:17 -0500)
committerDoug Coleman <doug.coleman@gmail.com>
Mon, 28 Apr 2008 22:17:19 +0000 (17:17 -0500)
extra/db/postgresql/postgresql.factor
extra/db/sqlite/sqlite.factor
extra/db/tuples/tuples-tests.factor
extra/db/types/types.factor

index e728f2f011b5cac93f1cff8ae00df37766bcbb62..9f747082c65b3ba2f931acb8e8fe1f3717dc23eb 100755 (executable)
@@ -49,7 +49,8 @@ M: literal-bind postgresql-bind-conversion ( tuple literal-bind -- obj )
     nip value>> <low-level-binding> ;
 
 M: generator-bind postgresql-bind-conversion ( tuple generate-bind -- obj )
-    nip generator-singleton>> eval-generator <low-level-binding> ;
+    dup generator-singleton>> eval-generator
+    [ swap slot-name>> rot set-slot-named ] [ <low-level-binding> ] bi ;
 
 M: postgresql-statement bind-tuple ( tuple statement -- )
     tuck in-params>>
@@ -205,8 +206,10 @@ M: postgresql-db <insert-user-assigned-statement> ( class -- statement )
         [ ", " 0% ] [
             dup type>> +random-id+ = [
                 [
-                    drop bind-name%
-                    f random-id-generator
+                    bind-name%
+                    slot-name>>
+                    f
+                    random-id-generator
                 ] [ type>> ] bi <generator-bind> 1,
             ] [
                 bind%
index 6297f89d8e6b861ced8639a175f4f8ce332cf98c..4aaa9668f0f1b4e5367b9b71fbb9e617625c8d7d 100755 (executable)
@@ -79,8 +79,10 @@ M: literal-bind sqlite-bind-conversion ( tuple literal-bind -- array )
     <sqlite-low-level-binding> ;
 
 M: generator-bind sqlite-bind-conversion ( tuple generate-bind -- array )
-    nip [ key>> ] [ generator-singleton>> eval-generator ] [ type>> ] tri
-    <sqlite-low-level-binding> ;
+    tuck
+    [ generator-singleton>> eval-generator tuck ] [ slot-name>> ] bi
+    rot set-slot-named
+    >r [ key>> ] [ type>> ] bi r> swap <sqlite-low-level-binding> ;
 
 M: sqlite-statement bind-tuple ( tuple statement -- )
     [
@@ -138,10 +140,11 @@ M: sqlite-db <insert-db-assigned-statement> ( tuple -- statement )
         ") values(" 0%
         [ ", " 0% ] [
             dup type>> +random-id+ = [
+                [ slot-name>> ]
                 [
                     column-name>> ":" prepend dup 0%
                     random-id-generator
-                ] [ type>> ] bi <generator-bind> 1,
+                ] [ type>> ] tri <generator-bind> 1,
             ] [
                 bind%
             ] if
index 7b22a3c59404a2d62ac6945d426365c74b96c088..f5f229bfd2e0dc00f2267a18c68b55685c3fb9b0 100755 (executable)
@@ -330,7 +330,7 @@ C: <secret> secret
 
     [ ] [ secret ensure-table ] unit-test
 
-    [ ] [ f "kilroy was here" <secret> insert-tuple ] unit-test
+    [ t ] [ f "kilroy was here" <secret> [ insert-tuple ] keep n>> integer? ] unit-test
 
     [ ] [ f "kilroy was here2" <secret> insert-tuple ] unit-test
 
@@ -342,7 +342,7 @@ C: <secret> secret
     ] unit-test
 
     [ t ] [
-        T{ secret } select-tuples length 3 =
+        T{ secret } select-tuples dup . length 3 =
     ] unit-test ;
 
 [ db-assigned-person-schema test-tuples ] test-sqlite
index e11d2466436df1d8a614fc6ddb6ce0cf17b14fa8..8328bd762609474900f39467c5f7e77c2855177c 100755 (executable)
@@ -15,7 +15,7 @@ TUPLE: sql-spec class slot-name column-name type primary-key modifiers ;
 TUPLE: literal-bind key type value ;
 C: <literal-bind> literal-bind
 
-TUPLE: generator-bind key generator-singleton type ;
+TUPLE: generator-bind slot-name key generator-singleton type ;
 C: <generator-bind> generator-bind
 SINGLETON: random-id-generator