[jira] Updated: (COUCHDB-802) Doc ID should auto-generate if not provided, before sending to _update function [PATCH]

2010-06-16 Thread Zachary Zolton (JIRA)

 [ 
https://issues.apache.org/jira/browse/COUCHDB-802?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Zachary Zolton updated COUCHDB-802:
---

Attachment: COUCHDB-802-with-test.diff

Will this test suffice? (^_^)


 Doc ID should auto-generate if not provided, before sending to _update 
 function [PATCH]
 ---

 Key: COUCHDB-802
 URL: https://issues.apache.org/jira/browse/COUCHDB-802
 Project: CouchDB
  Issue Type: Bug
  Components: HTTP Interface, JavaScript View Server
Affects Versions: 0.11
 Environment: Linux
Reporter: Jason Smith
Priority: Minor
 Fix For: 0.11.1

 Attachments: COUCHDB-802-with-test.diff, new_id.diff

   Original Estimate: 24h
  Remaining Estimate: 24h

 The main bug is this: _show and _update functions should be able to mimic the 
 standard HTTP/JSON API. A common pattern people are moving to is rewriting to 
 _show and _update, so the client thinks it is hitting normal couch, however 
 additional logic happens (e.g. auto-timestamping).
 Unfortunately, _update cannot return an auto-generated ID for POST to 
 /db/_design/ddoc/_update. The semantics should match POST to /db/ -- If an 
 _id is provided, use that; otherwise auto-generate one. The best an _update 
 function can do now is Math.random() or similar; however one loses the 
 advantage of sequential UUID generation from couch's internals.
 The fix is for couch to send a random UUID if the update URL did not include 
 the final /Id component. The function itself in the view server can decide 
 whether to use it. Assuming that change, the update function could at least 
 be capable of duplicating the direct API using the following Javascript logic:
   function(doc, req) {
 if(doc  doc._id == req.id) {
   // To be pedantic, I could confirm req.method == PUT
   log(I am an update by id);
 } else if(doc === null  req.id) {
   if(req.method == POST) {
 log(I am a create, id was auto-generated);
   } else if(req.method == PUT) {
 log(I am a create, id was supplied by client);
   }
 }
   }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.



[jira] Updated: (COUCHDB-802) Doc ID should auto-generate if not provided, before sending to _update function [PATCH]

2010-06-16 Thread Dmitry Unkovsky (JIRA)

 [ 
https://issues.apache.org/jira/browse/COUCHDB-802?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dmitry Unkovsky updated COUCHDB-802:


Attachment: COUCHDB-802-with-test_take2.diff
COUCHDB-802-with-test_take3.diff

It seemed to break previous tests. Should not to POST against hello update 
handler (that's take2) or slightly modify update tests against hello handler 
(take3).

 Doc ID should auto-generate if not provided, before sending to _update 
 function [PATCH]
 ---

 Key: COUCHDB-802
 URL: https://issues.apache.org/jira/browse/COUCHDB-802
 Project: CouchDB
  Issue Type: Bug
  Components: HTTP Interface, JavaScript View Server
Affects Versions: 0.11
 Environment: Linux
Reporter: Jason Smith
Priority: Minor
 Fix For: 0.11.1

 Attachments: COUCHDB-802-with-test.diff, 
 COUCHDB-802-with-test_take2.diff, COUCHDB-802-with-test_take3.diff, 
 new_id.diff

   Original Estimate: 24h
  Remaining Estimate: 24h

 The main bug is this: _show and _update functions should be able to mimic the 
 standard HTTP/JSON API. A common pattern people are moving to is rewriting to 
 _show and _update, so the client thinks it is hitting normal couch, however 
 additional logic happens (e.g. auto-timestamping).
 Unfortunately, _update cannot return an auto-generated ID for POST to 
 /db/_design/ddoc/_update. The semantics should match POST to /db/ -- If an 
 _id is provided, use that; otherwise auto-generate one. The best an _update 
 function can do now is Math.random() or similar; however one loses the 
 advantage of sequential UUID generation from couch's internals.
 The fix is for couch to send a random UUID if the update URL did not include 
 the final /Id component. The function itself in the view server can decide 
 whether to use it. Assuming that change, the update function could at least 
 be capable of duplicating the direct API using the following Javascript logic:
   function(doc, req) {
 if(doc  doc._id == req.id) {
   // To be pedantic, I could confirm req.method == PUT
   log(I am an update by id);
 } else if(doc === null  req.id) {
   if(req.method == POST) {
 log(I am a create, id was auto-generated);
   } else if(req.method == PUT) {
 log(I am a create, id was supplied by client);
   }
 }
   }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.