Return-Path: X-Original-To: apmail-couchdb-user-archive@www.apache.org Delivered-To: apmail-couchdb-user-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id C3F7C98AE for ; Fri, 17 May 2013 14:41:04 +0000 (UTC) Received: (qmail 82168 invoked by uid 500); 17 May 2013 14:41:03 -0000 Delivered-To: apmail-couchdb-user-archive@couchdb.apache.org Received: (qmail 82010 invoked by uid 500); 17 May 2013 14:41:00 -0000 Mailing-List: contact user-help@couchdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@couchdb.apache.org Delivered-To: mailing list user@couchdb.apache.org Received: (qmail 81945 invoked by uid 99); 17 May 2013 14:40:59 -0000 Received: from minotaur.apache.org (HELO minotaur.apache.org) (140.211.11.9) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 17 May 2013 14:40:59 +0000 Received: from localhost (HELO mail-lb0-f176.google.com) (127.0.0.1) (smtp-auth username rnewson, mechanism plain) by minotaur.apache.org (qpsmtpd/0.29) with ESMTP; Fri, 17 May 2013 14:40:58 +0000 Received: by mail-lb0-f176.google.com with SMTP id x10so4471558lbi.35 for ; Fri, 17 May 2013 07:40:57 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:x-received:in-reply-to:references:date:message-id :subject:from:to:content-type:content-transfer-encoding; bh=uSk6FoocpwAN9EMnXI/a98sTGM8gAdIJ+iikNAXaTsc=; b=OWNTvnpbwHKAS1NVN+0W+pY4Lear5nRHbuUxgthq+BPeLe6y9tqWWLDS3CsgzblQa4 eLHr8CeG2BYF09ypVKrF32bSveW6KQgf6O3r5l7qQc/jQjHSs4DNh98uHIAUioucpYGY Xk+ki5laYGWP1oTnXs1OwCIEzxcf+KzWl/GMCKEyjZhtErUMnhuMKE3/ZIpestMwcv81 3YvckZJ+ldHnUUnTpwwOF2NAmczWd52Jrs8pbLPvDF6Oi0JWuLCFx+kML9fA/xs3t9Ho H7IS7wFseLiESkjqvPpodO/GJRu0v++nzTy9UsoTZZQFj9TAlaIpju0A5i/s+o1WoktM ow7Q== MIME-Version: 1.0 X-Received: by 10.112.157.129 with SMTP id wm1mr22467700lbb.69.1368801657086; Fri, 17 May 2013 07:40:57 -0700 (PDT) Received: by 10.112.80.132 with HTTP; Fri, 17 May 2013 07:40:56 -0700 (PDT) In-Reply-To: <70BAE84F-500B-4372-A81D-EABDD80B5A0B@sri.com> References: <20130516144732.0dda4bbf@svilendobrev.com> <70BAE84F-500B-4372-A81D-EABDD80B5A0B@sri.com> Date: Fri, 17 May 2013 15:40:56 +0100 Message-ID: Subject: Re: tracking changes - how to check what was deleted? From: Robert Newson To: "user@couchdb.apache.org" Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable VDU does receive the 'stub', which is always a document. The term 'stub' can mislead people into thinking a deleted document is not an actual document (it is). Here I insist that deleted documents have a reason; =E2=9E=9C ~ curl localhost:5984/db1/_design/foo -XPUT -d '{"validate_doc_update":"function(newDoc) { if(newDoc._deleted && !newDoc.reason) { throw({forbidden:\"must have a reason\"}); } }"}' {"ok":true,"id":"_design/foo","rev":"1-ab8a8ecd8cf3de35ed7541facfb75029"} An empty doc; =E2=9E=9C ~ curl localhost:5984/db1/bar -XPUT -d {} {"ok":true,"id":"bar","rev":"1-967a00dff5e02add41819138abb3284d"} I try delete with DELETE method, which just does _id, _rev, _deleted. =E2=9E=9C ~ curl 'localhost:5984/db1/bar?rev=3D1-967a00dff5e02add41819138= abb3284d' -XDELETE {"error":"forbidden","reason":"must have a reason"} Now I delete with a PUT and a reason; =E2=9E=9C curl 'localhost:5984/db1/bar?rev=3D1-967a00dff5e02add41819138abb3= 284d' -XPUT -d '{"reason":"because I said so","_deleted":true}' {"ok":true,"id":"bar","rev":"2-6e10b3cc9ea15f6a9d81aa72aaa6e098"} And it's really deleted; =E2=9E=9C ~ curl localhost:5984/db1/bar {"error":"not_found","reason":"deleted"} And my reason is recorded; =E2=9E=9C ~ curl 'localhost:5984/db1/bar?rev=3D2-6e10b3cc9ea15f6a9d81aa72a= aa6e098' {"_id":"bar","_rev":"2-6e10b3cc9ea15f6a9d81aa72aaa6e098","reason":"because I said so","_deleted":true} B. On 17 May 2013 14:52, Jim Klo wrote: > It's a great tip, my only complaint about it is that the deleted stub doe= sn't get handed to the VDU function, unless that's changed in 1.3 > > - Jim > > > On May 17, 2013, at 12:04 AM, "Dave Cottlehuber" wrot= e: > >> On 17 May 2013 01:32, Randall Leeds wrote: >>> Actually, it's even easier than this. It is acceptable to put a body in= the >>> DELETE. You can store whatever fields you want accessible in your delet= ion >>> stubs. >> >> **WIN** best tip of the month!