diff options
author | Tom Willemsen | 2013-03-22 02:23:42 +0100 |
---|---|---|
committer | Tom Willemsen | 2013-03-22 02:23:42 +0100 |
commit | 671d0fdcc71b21b80a7d3253ea542ace1a67f168 (patch) | |
tree | 4854bbaf24492fe4533f8f7718aec73363c368f9 | |
parent | 153c26be4388c40b7bb85726f0300b47348ef3fe (diff) | |
download | clark-671d0fdcc71b21b80a7d3253ea542ace1a67f168.tar.gz clark-671d0fdcc71b21b80a7d3253ea542ace1a67f168.zip |
Add search command
-rw-r--r-- | clark.lisp | 21 |
1 files changed, 20 insertions, 1 deletions
@@ -11,7 +11,9 @@ ("help" "Display this help and exit" "help") ("version" "Output version information and exit" - "version")) + "version") + ("search" "Search for a name or tag" + "search <query>")) "Help texts for commands.") (defconstant *version* "0.1.0" @@ -110,6 +112,23 @@ BM should be a list containing the url and name of the bookmark." (destructuring-bind (url name) bm (format t "~A~%~A~%~%" url name))) +(defun search-command (args) + "Search the database for a match." + (map + nil (lambda (bm) + (destructuring-bind (url name description) bm + (format t "~A~% ~A~% ~A~%~%" url name description))) + (execute-to-list + *db* (concatenate 'string + "SELECT url, name, description " + "FROM bookmark " + "WHERE name LIKE ? " + "OR ? IN (SELECT name " + "FROM tag " + "JOIN bookmark_tag ON (tag_id = tag.rowid) " + "WHERE bookmark_id = bookmark.rowid)") + (format nil "%~A%" (car args)) (car args)))) + (defun version-command (args) "Display clark's version number." (declare (ignore args)) |