refactored read-sql-value to centralize this logic and reduce
[clsql.git] / db-mysql / mysql-objects.lisp
index 5ddad8b5d73817da2aaded534fb153b30e3f10ce..0a9e7b324e1c1bd8c46cc1f40dc8d15fdfaf1dd7 100644 (file)
@@ -6,8 +6,6 @@
 ;;;; Purpose:  CLSQL Object layer for MySQL
 ;;;; Created:  May 2004
 ;;;;
-;;;; $Id$
-;;;;
 ;;;; CLSQL users are granted the rights to distribute and use this software
 ;;;; as governed by the terms of the Lisp Lesser GNU Public License
 ;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
 
 (in-package #:clsql-mysql)
 
-(defmethod database-get-type-specifier ((type (eql 'wall-time)) args database
-                                       (db-type (eql :mysql)))
-  (declare (ignore args database))
-  "DATETIME")
-
-(defmethod database-get-type-specifier ((type (eql 'smallint)) args database
-                                       (db-type (eql :mysql)))
-  (declare (ignore args database))
-  "SMALLINT")
-
-(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 database-get-type-specifier ((type symbol) args database
+                                        (db-type (eql :mysql)))
+  (declare (ignore args database db-type))
+  (case type
+    (wall-time "DATETIME")
+    (tinyint "TINYINT")
+    (smallint "SMALLINT")
+    (mediumint "MEDIUMINT")
+    (t (call-next-method))))
 
-(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))))