[postmodern-devel] PATCH: New query formats - plists and plist

Andrey Moskvitin archimag at gmail.com
Fri Mar 26 21:56:22 UTC 2010


Hi,

I propose to add new query formats:

diff --git a/doc/postmodern.html b/doc/postmodern.html
index 3691ae8..9ac466f 100644
--- a/doc/postmodern.html
+++ b/doc/postmodern.html
@@ -202,6 +202,10 @@
       row.</td></tr>
       <tr><td><code>:list</code>, <code>:row</code></td><td>Return a
       single row as a list.</td></tr>
+      <tr><td><code>:plists</code></td><td>Return a list of plists which
map column
+      names to values,with the names represented as
+      keywords.</td></tr>
+      <tr><td><code>:plist</code></td><td>Return a single row as an
plist.</td></tr>
       <tr><td><code>:alists</code></td><td>Return a list of alists which
map column
       names to values,with the names represented as
       keywords.</td></tr>
diff --git a/postmodern/query.lisp b/postmodern/query.lisp
index 3e5bfa5..921d03d 100644
--- a/postmodern/query.lisp
+++ b/postmodern/query.lisp
@@ -9,6 +9,15 @@
                          :for symbol :in symbols
                          :collect (cons symbol (next-field field))))))

+;; Like symbol-alist-row-reader, but return plist
+(def-row-reader symbol-plist-row-reader (fields)
+  (let ((symbols (map 'list (lambda (desc) (from-sql-name (field-name
desc))) fields)))
+    (loop :while (next-row)
+          :collect (loop :for field :across fields
+                         :for symbol :in symbols
+                         :collect symbol
+                         :collect (next-field field)))))
+
 ;; A row-reader for reading only a single column, and returning a list
 ;; of single values.
 (def-row-reader column-row-reader (fields)
@@ -22,6 +31,8 @@
     (:list list-row-reader t)
     (:rows list-row-reader nil)
     (:row list-row-reader t)
+    (:plists symbol-plist-row-reader nil)
+    (:plist symbol-plist-row-reader t)
     (:alists symbol-alist-row-reader nil)
     (:alist symbol-alist-row-reader t)
     (:str-alists alist-row-reader nil)


Moskvitin Andrey
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/postmodern-devel/attachments/20100327/b588874c/attachment.html>


More information about the postmodern-devel mailing list