X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=db-sqlite%2Fsqlite-sql.lisp;h=9b67f380b25cc7f9a1f35a9b3e69e23eedc2e0a0;hb=c4da3cfcbb955395d8a556e1f89aadad696302b7;hp=63edf07532ee8fae3e0e97b3aa5a3a0d6b244c83;hpb=56ccd9c18c38262936b8988264edfb927e83eb49;p=clsql.git diff --git a/db-sqlite/sqlite-sql.lisp b/db-sqlite/sqlite-sql.lisp index 63edf07..9b67f38 100644 --- a/db-sqlite/sqlite-sql.lisp +++ b/db-sqlite/sqlite-sql.lisp @@ -73,12 +73,12 @@ :error (sqlite:sqlite-error-message err)))) t) -(defmethod database-query (query-expression (database sqlite-database) types) - (declare (ignore types)) ; SQLite is typeless! +(defmethod database-query (query-expression (database sqlite-database) result-types) + (declare (ignore result-types)) ; SQLite is typeless! (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 +103,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 @@ -112,8 +112,8 @@ (n-col 0 :type fixnum)) (defmethod database-query-result-set - ((query-expression string) (database sqlite-database) &key full-set types) - (declare (ignore full-set types)) + ((query-expression string) (database sqlite-database) &key full-set result-types) + (declare (ignore full-set result-types)) (handler-case (let* ((vm (sqlite:sqlite-compile (sqlite-db database) query-expression)) @@ -124,7 +124,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 +156,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 +282,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))) + +