X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=sql.lisp;h=83f38e97164311bea10885f4f95866bfc18800d9;hb=e34ed32c0c1b5fa230505357e71add61ab0b5c87;hp=6b8ad01aa19e4f56567585e7a921c7da461ba072;hpb=8e895602ced5ab847ecc36c1eaa7be1c9a872a22;p=umlisp.git diff --git a/sql.lisp b/sql.lisp index 6b8ad01..83f38e9 100644 --- a/sql.lisp +++ b/sql.lisp @@ -32,7 +32,11 @@ *umls-sql-db*) (defun umls-sql-db! (db) - (setq *umls-sql-db* db)) + (etypecase db + (string + (setq *umls-sql-db* db)) + (keyword + (setq *umls-sql-db* (lookup-db-name db))))) (defvar *umls-sql-user* "secret") (defun umls-sql-user () @@ -62,10 +66,13 @@ (sql-disconnect-pooled) (setq *umls-sql-type* h)) +(defun umls-connection-spec () + (list *umls-sql-host* *umls-sql-db* + *umls-sql-user* *umls-sql-passwd*)) + (defun sql-connect () "Connect to UMLS database, automatically used pooled connections" - (clsql:connect (list *umls-sql-host* (lookup-db-name *umls-sql-db*) - *umls-sql-user* *umls-sql-passwd*) + (clsql:connect (umls-connection-spec) :database-type *umls-sql-type* :pool t)) (defun sql-disconnect (conn) @@ -81,17 +88,17 @@ (progn ,@body) (when ,conn (clsql:disconnect :database ,conn))))) -(defun sql (stmt conn) - (if (string-equal "SELECT" (subseq stmt 0 6)) - (sql-query stmt conn) - (sql-execute stmt conn))) - (defun sql-query (cmd conn &key (result-types :auto)) (clsql:query cmd :database conn :result-types result-types :field-names nil)) (defun sql-execute (cmd conn) (clsql:execute-command cmd :database conn)) +(defun sql (stmt conn) + (if (string-equal "SELECT" (subseq stmt 0 6)) + (sql-query stmt conn) + (sql-execute stmt conn))) + (defun umls-sql (stmt) (check-type stmt string) (with-sql-connection (conn)