incubator-couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Antony Blakey <antony.bla...@gmail.com>
Subject Re: Document Updates
Date Fri, 14 Nov 2008 02:21:17 GMT

On 14/11/2008, at 12:32 PM, Antony Blakey wrote:

> {
>  "docs": [
>    /* Just for backwards compatibility ... but does that matter for  
> an alpha product ? */
>    ... as now ...
>  ],
>
>  "PUT": [
>    /* As now with docs, but not allowing "delete":true ? */
>    { "_id": ..., "_rev": ..., ... }
>    ...
>  ],
>  "PATCH": [
>    { "_id": ..., "_rev": ..., deltas: [ { "replace":... }, ... ] }
>    ...
>  ],
>  "DELETE": [
>    { "_id": ..., "_rev": ... },
>    ...
>  ]
> }
>
> This has the benefit of (roughly) representing the HTTP methods that  
> it aggregates.

On second thought, given that it represents an aggregation of commands  
that have an explicit ordering, maybe it shouldn't be grouped by  
method but instead use the method as a key. Like this:

[
   { "delete":{ "_id": ..., "_rev": ... } },
   { "put": { "_id": ..., "_rev": ..., ... },
   { "patch": { "_id": ..., "_rev": ... } "with": [ { "replace": ...  
"with": ... }, ... ] },
   ...
]

The benefit of this that generating this is easier to reason about and  
generate if your client code is doing deletes and inserts of documents  
with the same id. It accurately represents adding a transactional  
boundary without requiring a change in semantics.

Antony Blakey
-------------
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

When I hear somebody sigh, 'Life is hard,' I am always tempted to ask,  
'Compared to what?'
   -- Sydney Harris



Mime
View raw message