r9756: add tinyint type
[clsql.git] / db-mysql / mysql-objects.lisp
1 ;;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Base: 10 -*-
2 ;;;; *************************************************************************
3 ;;;; FILE IDENTIFICATION
4 ;;;;
5 ;;;; Name:     mysql-objects.lisp
6 ;;;; Purpose:  CLSQL Object layer for MySQL
7 ;;;; Created:  May 2004
8 ;;;;
9 ;;;; $Id$
10 ;;;;
11 ;;;; CLSQL users are granted the rights to distribute and use this software
12 ;;;; as governed by the terms of the Lisp Lesser GNU Public License
13 ;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
14 ;;;; *************************************************************************
15
16 (in-package #:clsql-mysql)
17
18 (defmethod database-get-type-specifier ((type (eql 'wall-time)) args database
19                                         (db-type (eql :mysql)))
20   (declare (ignore args database))
21   "DATETIME")
22
23 (defmethod database-get-type-specifier ((type (eql 'smallint)) args database
24                                         (db-type (eql :mysql)))
25   (declare (ignore args database))
26   "SMALLINT")
27
28 (defmethod database-get-type-specifier ((type (eql 'tinyint)) args database
29                                         (db-type (eql :mysql)))
30   (declare (ignore args database))
31   "TINYINT")
32
33 (defmethod database-output-sql-as-type ((type (eql 'boolean)) val database
34                                         (db-type (eql :mysql)))
35   (declare (ignore database))
36   (if val 1 0))
37
38 (defmethod database-output-sql-as-type ((type (eql 'generalized-boolean)) val database
39                                         (db-type (eql :mysql)))
40   (declare (ignore database))
41   (if val 1 0))
42
43 (defmethod read-sql-value (val (type (eql 'boolean)) database
44                            (db-type (eql :mysql)))
45   (declare (ignore database)) 
46   (etypecase val
47     (string (if (string= "0" val) nil t))
48     (integer (if (zerop val) nil t))))
49
50 (defmethod read-sql-value (val (type (eql 'generalized-boolean)) database
51                            (db-type (eql :mysql)))
52   (declare (ignore database)) 
53   (etypecase val
54     (string (if (string= "0" val) nil t))
55     (integer (if (zerop val) nil t))))