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

Drew Crampsie drewc at tech.coop
Wed Apr 14 23:12:39 UTC 2010


On 26 March 2010 23:51, Marijn Haverbeke <marijnh at gmail.com> wrote:
> Hi Andrey,
>
> Thanks for submitting a patch. But -- why plists? Do you have some
> library for which you need results like this?


FWIW, i've had a plist row reader in RELATIONAL-OBJECTS-FOR-LISP since
pretty much day 1. I'm not sure why i didn't send a patch... probably
because i didn't think of it as more generally useful as i have a lot
of different,  more specific row readers.

Anyway, thought i'd chime in.

Cheers,

drewc

> Best,
> Marijn
>
> On Fri, Mar 26, 2010 at 10:56 PM, Andrey Moskvitin <archimag at gmail.com> wrote:
>> 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
>> _______________________________________________
>> postmodern-devel mailing list
>> postmodern-devel at common-lisp.net
>> http://common-lisp.net/cgi-bin/mailman/listinfo/postmodern-devel
>>
>>
>
> _______________________________________________
> postmodern-devel mailing list
> postmodern-devel at common-lisp.net
> http://common-lisp.net/cgi-bin/mailman/listinfo/postmodern-devel
>




More information about the postmodern-devel mailing list