X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=db-sqlite%2Fsqlite-sql.lisp;h=bc93bb8f53d770c56386e10ef8ff367602518de6;hb=8133ca7db26e719bb534c036207b7aba1d6a4b75;hp=805597b0bd086a8faea3c2080d89616d3faaa2ce;hpb=5691bb90517d7c565a141d131da76c3de1f8d566;p=clsql.git diff --git a/db-sqlite/sqlite-sql.lisp b/db-sqlite/sqlite-sql.lisp index 805597b..bc93bb8 100644 --- a/db-sqlite/sqlite-sql.lisp +++ b/db-sqlite/sqlite-sql.lisp @@ -41,6 +41,8 @@ (handler-case (make-instance 'sqlite-database :name (database-name-from-spec connection-spec :sqlite) + :database-type :sqlite + :connection-spec connection-spec :sqlite-db (sqlite:sqlite-open (first connection-spec))) (sqlite:sqlite-error (err) (error 'clsql-connect-error @@ -78,7 +80,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 @@ -103,7 +105,7 @@ (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 @@ -124,7 +126,7 @@ (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) @@ -156,7 +158,7 @@ (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) @@ -282,3 +284,21 @@ (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))) + +