r8942: add :query to sql recording, support describe-table
[clsql.git] / base / basic-sql.lisp
index 61a932e5ad02df135fc3e6c0687c4c6c962ca0d8..64fdb44038d4741eecb6b5c7ceb27e5768067e66 100644 (file)
@@ -31,14 +31,14 @@ that expression and a list of field names selected in sql-exp."))
 
 (defmethod query ((query-expression string) &key (database *default-database*)
                   (result-types nil) (flatp nil))
-  (record-sql-command query-expression database)
+  (record-sql-action query-expression :query database)
   (let* ((res (database-query query-expression database result-types))
          (res (if (and flatp (= (length
                                  (slot-value query-expression 'selections))
                                 1))
                   (mapcar #'car res)
                   res)))
-    (record-sql-result res database)
+    (record-sql-action res :result database)
     res))
 
 ;;; Execute
@@ -54,12 +54,16 @@ pair."))
 
 (defmethod execute-command ((sql-expression string)
                             &key (database *default-database*))
-  (record-sql-command sql-expression database)
+  (record-sql-action sql-expression :command database)
   (let ((res (database-execute-command sql-expression database)))
-    (record-sql-result res database))
+    (record-sql-action res :result database))
   (values))
 
 
+(defun describe-table (table &key (database *default-database*))
+  "Return list of 2-element lists containing table name and type."
+  (database-describe-table database table))
+
 (defmacro do-query (((&rest args) query-expression
                     &key (database '*default-database*) (result-types nil))
                    &body body)