refactored read-sql-value to centralize this logic and reduce
[clsql.git] / db-mysql / mysql-objects.lisp
index 015edbb6501791e3a45f82889f10ffc6f7ebfe9c..0a9e7b324e1c1bd8c46cc1f40dc8d15fdfaf1dd7 100644 (file)
 
 (in-package #:clsql-mysql)
 
-(defmethod database-get-type-specifier ((type (eql 'wall-time)) args database
+(defmethod database-get-type-specifier ((type symbol) args database
                                         (db-type (eql :mysql)))
-  (declare (ignore args database))
-  "DATETIME")
+  (declare (ignore args database db-type))
+  (case type
+    (wall-time "DATETIME")
+    (tinyint "TINYINT")
+    (smallint "SMALLINT")
+    (mediumint "MEDIUMINT")
+    (t (call-next-method))))
 
-(defmethod database-get-type-specifier ((type (eql 'smallint)) args database
-                                        (db-type (eql :mysql)))
-  (declare (ignore args database))
-  "SMALLINT")
-
-(defmethod database-get-type-specifier ((type (eql 'mediumint)) args database
-                                        (db-type (eql :mysql)))
-  (declare (ignore args database))
-  "MEDIUMINT")
-
-(defmethod database-get-type-specifier ((type (eql 'tinyint)) args database
-                                        (db-type (eql :mysql)))
-  (declare (ignore args database))
-  "TINYINT")
-
-(defmethod database-output-sql-as-type ((type (eql 'boolean)) val database
-                                        (db-type (eql :mysql)))
-  (declare (ignore database))
-  (if val 1 0))
-
-(defmethod database-output-sql-as-type ((type (eql 'generalized-boolean)) val database
-                                        (db-type (eql :mysql)))
-  (declare (ignore database))
-  (if val 1 0))
-
-(defmethod read-sql-value (val (type (eql 'boolean)) database
-                           (db-type (eql :mysql)))
-  (declare (ignore database))
-  (etypecase val
-    (string (if (string= "0" val) nil t))
-    (integer (if (zerop val) nil t))))
-
-(defmethod read-sql-value (val (type (eql 'generalized-boolean)) database
-                           (db-type (eql :mysql)))
-  (declare (ignore database))
-  (etypecase val
-    (string (if (string= "0" val) nil t))
-    (integer (if (zerop val) nil t))))