]> gitweb.factorcode.org Git - factor.git/commitdiff
fix timestamps in db
authorDoug Coleman <doug.coleman@gmail.com>
Thu, 24 Apr 2008 03:23:22 +0000 (22:23 -0500)
committerDoug Coleman <doug.coleman@gmail.com>
Thu, 24 Apr 2008 03:23:22 +0000 (22:23 -0500)
extra/db/postgresql/lib/lib.factor
extra/db/sqlite/lib/lib.factor
extra/db/tuples/tuples-tests.factor

index d270e6f40d8ea6a7a2fa4c67e03f4bfdbac5b179..436d7018038cff60684d0a86aca78732790c4b40 100755 (executable)
@@ -69,6 +69,11 @@ M: postgresql-result-null summary ( obj -- str )
 : malloc-byte-array/length
     [ malloc-byte-array dup free-always ] [ length ] bi ;
 
+: default-param-value
+    number>string* dup [
+        utf8 malloc-string dup free-always
+    ] when 0 ;
+
 : param-values ( statement -- seq seq2 )
     [ bind-params>> ] [ in-params>> ] bi
     [
@@ -77,11 +82,11 @@ M: postgresql-result-null summary ( obj -- str )
                 dup [ object>bytes malloc-byte-array/length ] [ 0 ] if
             ] }
             { BLOB [ dup [ malloc-byte-array/length ] [ 0 ] if ] }
-            [
-                drop number>string* dup [
-                    utf8 malloc-string dup free-always
-                ] when 0
-            ]
+            { DATE [ dup [ timestamp>ymd ] when default-param-value ] }
+            { TIME [ dup [ timestamp>hms ] when default-param-value ] }
+            { DATETIME [ dup [ timestamp>ymdhms ] when default-param-value ] }
+            { TIMESTAMP [ dup [ timestamp>ymdhms ] when default-param-value ] }
+            [ drop default-param-value ]
         } case 2array
     ] 2map flip dup empty? [
         drop f f
index b6078fc983d99e8ff688d128f38b7fb989ef5930..9f29b9e6fb190f92af70d2f9274ad2ae85368f2a 100755 (executable)
@@ -97,10 +97,10 @@ IN: db.sqlite.lib
         { TEXT [ sqlite-bind-text-by-name ] }
         { VARCHAR [ sqlite-bind-text-by-name ] }
         { DOUBLE [ sqlite-bind-double-by-name ] }
-        { DATE [ sqlite-bind-text-by-name ] }
-        { TIME [ sqlite-bind-text-by-name ] }
-        { DATETIME [ sqlite-bind-text-by-name ] }
-        { TIMESTAMP [ sqlite-bind-text-by-name ] }
+        { DATE [ timestamp>ymd sqlite-bind-text-by-name ] }
+        { TIME [ timestamp>hms sqlite-bind-text-by-name ] }
+        { DATETIME [ timestamp>ymdhms sqlite-bind-text-by-name ] }
+        { TIMESTAMP [ timestamp>ymdhms sqlite-bind-text-by-name ] }
         { BLOB [ sqlite-bind-blob-by-name ] }
         { FACTOR-BLOB [
             object>bytes
index 32562a4ae85b0980afc0801e7e2a2c6855d9bf90..b166bdc28c584b7a4ef6c7ff85e225415c208a50 100755 (executable)
@@ -121,8 +121,16 @@ SYMBOL: person4
     } define-persistent
     "billy" 10 3.14 f f f f f <person> person1 set
     "johnny" 10 3.14 f f f f f <person> person2 set
-    "teddy" 10 3.14 "2008-03-05 16:24:11" "2008-11-22" "12:34:56" B{ 115 116 111 114 101 105 110 97 98 108 111 98 } f <person> person3 set
-    "eddie" 10 3.14 "2008-03-05 16:24:11" "2008-11-22" "12:34:56" f H{ { 1 2 } { 3 4 } { 5 "lol" } } <person> person4 set ;
+    "teddy" 10 3.14
+        T{ timestamp f 2008 3 5 16 24 11 T{ duration f 0 0 0 0 0 0 } }
+        T{ timestamp f 2008 11 22 0 0 0 T{ duration f 0 0 0 0 0 0 } }
+        T{ timestamp f f f f 12 34 56 T{ duration f 0 0 0 0 0 0 } }
+        B{ 115 116 111 114 101 105 110 97 98 108 111 98 } f <person> person3 set
+    "eddie" 10 3.14
+        T{ timestamp f 2008 3 5 16 24 11 T{ duration f 0 0 0 0 0 0 } }
+        T{ timestamp f 2008 11 22 0 0 0 T{ duration f 0 0 0 0 0 0 } }
+        T{ timestamp f f f f 12 34 56 T{ duration f 0 0 0 0 0 0 } }
+        f H{ { 1 2 } { 3 4 } { 5 "lol" } } <person> person4 set ;
 
 : assigned-person-schema ( -- )
     person "PERSON"
@@ -139,8 +147,17 @@ SYMBOL: person4
     } define-persistent
     1 "billy" 10 3.14 f f f f f <assigned-person> person1 set
     2 "johnny" 10 3.14 f f f f f <assigned-person> person2 set
-    3 "teddy" 10 3.14 "2008-03-05 16:24:11" "2008-11-22" "12:34:56" B{ 115 116 111 114 101 105 110 97 98 108 111 98 } f <assigned-person> person3 set
-    4 "eddie" 10 3.14 "2008-03-05 16:24:11" "2008-11-22" "12:34:56" f H{ { 1 2 } { 3 4 } { 5 "lol" } } <assigned-person> person4 set ;
+    3 "teddy" 10 3.14
+        T{ timestamp f 2008 3 5 16 24 11 T{ duration f 0 0 0 0 0 0 } }
+        T{ timestamp f 2008 11 22 0 0 0 T{ duration f 0 0 0 0 0 0 } }
+        T{ timestamp f f f f 12 34 56 T{ duration f 0 0 0 0 0 0 } }
+        B{ 115 116 111 114 101 105 110 97 98 108 111 98 }
+        f <assigned-person> person3 set
+    4 "eddie" 10 3.14
+        T{ timestamp f 2008 3 5 16 24 11 T{ duration f 0 0 0 0 0 0 } }
+        T{ timestamp f 2008 11 22 0 0 0 T{ duration f 0 0 0 0 0 0 } }
+        T{ timestamp f f f f 12 34 56 T{ duration f 0 0 0 0 0 0 } }
+        f H{ { 1 2 } { 3 4 } { 5 "lol" } } <assigned-person> person4 set ;
 
 TUPLE: paste n summary author channel mode contents timestamp annotations ;
 TUPLE: annotation n paste-id summary author mode contents ;