Skip to content

Commit

Permalink
changed `execute' to always returns an instance of <dbd-query>.
Browse files Browse the repository at this point in the history
  • Loading branch information
fukamachi committed Dec 19, 2011
1 parent 19af9d1 commit 6057501
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 21 deletions.
16 changes: 1 addition & 15 deletions src/driver.lisp
Expand Up @@ -91,23 +91,9 @@ This method may be overrided by subclasses."
query query
params)) params))


@export
(defgeneric fetch (result)
(:documentation "Fetch the first row from `result` which is returned by `execute`."))

@export
(defmethod fetch ((result list))
(pop result))

@export
(defmethod fetch ((result vector))
(handler-case (vector-pop result)
(simple-error (condition)
@ignore condition
nil)))

@export @export
(defmethod fetch ((query <dbd-query>)) (defmethod fetch ((query <dbd-query>))
"Fetch the first row from `query` which is returned by `execute`."
(fetch-using-connection (query-connection query) query)) (fetch-using-connection (query-connection query) query))


@export @export
Expand Down
16 changes: 10 additions & 6 deletions src/test.lisp
Expand Up @@ -19,7 +19,7 @@
@export @export
(defun run-driver-tests (driver-name &rest params) (defun run-driver-tests (driver-name &rest params)
(let ((*db* (apply #'connect driver-name params))) (let ((*db* (apply #'connect driver-name params)))
(plan 15) (plan 17)
(run-test-all))) (run-test-all)))


(deftest |connect| (deftest |connect|
Expand All @@ -39,18 +39,22 @@
(setf query (prepare *db* "SELECT * FROM person")) (setf query (prepare *db* "SELECT * FROM person"))
(is-type query '<dbd-query>) (is-type query '<dbd-query>)
(setf result (execute query)) (setf result (execute query))
(ok result) (is-type result '<dbd-query>)
(ok (property-list-p (fetch result))) (let ((result (fetch result)))
(ok (property-list-p (fetch result))) (is-type result 'property-list)
(is (getf result :|name|) "fukamachi"))
(let ((result (fetch result)))
(is-type result 'property-list)
(is (getf result :|name|) "matsuyama"))
(is (fetch result) nil))) (is (fetch result) nil)))


(deftest |place holder| (deftest |place holder|
(let (query result) (let (query result)
(setf query (prepare *db* "SELECT * FROM person WHERE name = ?")) (setf query (prepare *db* "SELECT * FROM person WHERE name = ?"))
(is-type query '<dbd-query>) (is-type query '<dbd-query>)
(setf result (execute query "matsuyama")) (setf result (execute query "matsuyama"))
(ok result) (is-type result '<dbd-query>)
(ok (property-list-p (fetch result))) (is-type (fetch result) 'property-list)
(is (fetch result) nil))) (is (fetch result) nil)))


(deftest |with-transaction| (deftest |with-transaction|
Expand Down

0 comments on commit 6057501

Please sign in to comment.