|
7 | 7 | #:mito.class)
|
8 | 8 | (:import-from #:mito.dao.column
|
9 | 9 | #:dao-table-column-deflate)
|
| 10 | + (:import-from #:mito.conversion |
| 11 | + #:convert-for-driver-type) |
10 | 12 | (:import-from #:mito.connection
|
11 | 13 | #:*connection*
|
12 | 14 | #:check-connected
|
|
39 | 41 | #:ensure-list
|
40 | 42 | #:once-only
|
41 | 43 | #:with-gensyms)
|
42 |
| - (:export #:convert-for-driver-type |
43 |
| - #:insert-dao |
| 44 | + (:export #:insert-dao |
44 | 45 | #:update-dao
|
45 | 46 | #:create-dao
|
46 | 47 | #:delete-dao
|
|
75 | 76 | t)
|
76 | 77 | (values nil nil))))
|
77 | 78 |
|
78 |
| -(defvar *db-datetime-format* |
79 |
| - '((:year 4) #\- (:month 2) #\- (:day 2) #\Space (:hour 2) #\: (:min 2) #\: (:sec 2) #\. (:usec 6) :gmt-offset-or-z)) |
80 |
| - |
81 |
| -(defvar *db-datetime-format-without-timezone* |
82 |
| - '((:year 4) #\- (:month 2) #\- (:day 2) #\Space (:hour 2) #\: (:min 2) #\: (:sec 2) #\. (:usec 6))) |
83 |
| - |
84 |
| -(defvar *db-date-format* |
85 |
| - '((:year 4) #\- (:month 2) #\- (:day 2))) |
86 |
| - |
87 |
| -(defgeneric convert-for-driver-type (driver-type col-type value) |
88 |
| - (:method (driver-type col-type value) |
89 |
| - (declare (ignore driver-type col-type)) |
90 |
| - value) |
91 |
| - (:method (driver-type col-type (value string)) |
92 |
| - (declare (ignore driver-type col-type)) |
93 |
| - value) |
94 |
| - (:method ((driver-type (eql :mysql)) (col-type (eql :boolean)) value) |
95 |
| - (ecase value |
96 |
| - (t 1) |
97 |
| - ('nil 0))) |
98 |
| - (:method ((driver-type (eql :mysql)) (col-type (eql :datetime)) (value local-time:timestamp)) |
99 |
| - (local-time:format-timestring nil value |
100 |
| - :format *db-datetime-format-without-timezone*)) |
101 |
| - (:method (driver-type (col-type (eql :datetime)) (value local-time:timestamp)) |
102 |
| - (local-time:format-timestring nil value |
103 |
| - :format *db-datetime-format* |
104 |
| - :timezone local-time:+gmt-zone+)) |
105 |
| - (:method (driver-type (col-type (eql :date)) (value local-time:timestamp)) |
106 |
| - (local-time:format-timestring nil value |
107 |
| - :format *db-date-format*)) |
108 |
| - (:method (driver-type (col-type (eql :timestamp)) value) |
109 |
| - (convert-for-driver-type driver-type :datetime value)) |
110 |
| - (:method (driver-type (col-type (eql :timestamptz)) value) |
111 |
| - (convert-for-driver-type driver-type :datetime value)) |
112 |
| - (:method ((driver-type (eql :sqlite3)) (col-type (eql :boolean)) value) |
113 |
| - (ecase value |
114 |
| - (t 1) |
115 |
| - ('nil 0))) |
116 |
| - (:method ((driver-type (eql :postgres)) (col-type (eql :boolean)) value) |
117 |
| - (ecase value |
118 |
| - (t '(:raw "true")) |
119 |
| - ('nil '(:raw "false"))))) |
120 |
| - |
121 | 79 | (defun make-set-clause (obj)
|
122 | 80 | (let ((class (class-of obj)))
|
123 | 81 | (apply #'sxql:make-clause :set=
|
|
0 commit comments