r8926: add database-create database-destroy database-probe
[clsql.git] / db-sqlite / sqlite-sql.lisp
index 805597b0bd086a8faea3c2080d89616d3faaa2ce..9b67f380b25cc7f9a1f35a9b3e69e23eedc2e0a0 100644 (file)
@@ -78,7 +78,7 @@
   (handler-case
       (multiple-value-bind (data row-n col-n)
          (sqlite:sqlite-get-table (sqlite-db database) query-expression)
-       #-clisp (declare (type sqlite:sqlite-row-pointer data))
+       #-clisp (declare (type sqlite:sqlite-row-pointer-type data))
        (if (= row-n 0)
            nil
            (prog1
   (vm (sqlite:make-null-vm)
       :type sqlite:sqlite-vm-pointer)
   (first-row (sqlite:make-null-row)
-            :type sqlite:sqlite-row-pointer)
+            :type sqlite:sqlite-row-pointer-type)
   (n-col 0 :type fixnum))
 #+clisp
 (defstruct sqlite-result-set
        (multiple-value-bind (n-col cols col-names)
            (sqlite:sqlite-step vm)
          (declare (ignore col-names)
-                  #-clisp (type sqlite:sqlite-row-pointer cols)
+                  #-clisp (type sqlite:sqlite-row-pointer-type cols)
                   )
          (setf (sqlite-result-set-first-row result-set) cols
                (sqlite-result-set-n-col result-set) n-col)
                  (multiple-value-bind (n new-row col-names)
                      (sqlite:sqlite-step (sqlite-result-set-vm result-set))
                    (declare (ignore n col-names)
-                            #-clisp (type sqlite:sqlite-row-pointer new-row)
+                            #-clisp (type sqlite:sqlite-row-pointer-type new-row)
                             )
                    (if (sqlite:null-row-p new-row)
                        (return-from database-store-next-row nil)
 
 (defmethod database-sequence-last (sequence-name (database sqlite-database))
   (declare (ignore sequence-name)))
+
+(defmethod database-create (connection-spec (type (eql :sqlite)))
+  (declare (ignore connection-spec))
+  ;; databases are created automatically by SQLite
+  t)
+
+(defmethod database-destroy (connection-spec (type (eql :sqlite)))
+  (destructuring-bind (name) connection-spec
+    (if (probe-file name)
+       (delete-file name)
+       nil)))
+
+(defmethod database-probe (connection-spec (type (eql :sqlite)))
+  (destructuring-bind (name) connection-spec
+    ;; TODO: Add a test that this file is a real sqlite database 
+    (and (probe-file name) t)))
+
+