[CalendarServer-changes] [6996] CalendarServer/branches/users/glyph/dalify/txdav/common/datastore/ sql.py

source_changes at macosforge.org source_changes at macosforge.org
Wed Feb 16 06:38:15 PST 2011


Revision: 6996
          http://trac.macosforge.org/projects/calendarserver/changeset/6996
Author:   glyph at apple.com
Date:     2011-02-16 06:38:15 -0800 (Wed, 16 Feb 2011)
Log Message:
-----------
dalify the rest of _deletedSyncToken

Modified Paths:
--------------
    CalendarServer/branches/users/glyph/dalify/txdav/common/datastore/sql.py

Modified: CalendarServer/branches/users/glyph/dalify/txdav/common/datastore/sql.py
===================================================================
--- CalendarServer/branches/users/glyph/dalify/txdav/common/datastore/sql.py	2011-02-16 14:38:04 UTC (rev 6995)
+++ CalendarServer/branches/users/glyph/dalify/txdav/common/datastore/sql.py	2011-02-16 14:38:15 UTC (rev 6996)
@@ -1750,6 +1750,37 @@
                 rev.COLLECTION_NAME == None))
 
 
+    @classproperty
+    def _sharedRemovalQuery(cls):
+        """
+        DAL query to update the sync token for a shared collection.
+        """
+        rev = cls._revisionsSchema
+        return Update({rev.RESOURCE_ID: None,
+                       rev.REVISION: schema.REVISION_SEQ,
+                       rev.DELETED: True},
+                      Where=(rev.HOME_RESOURCE_ID == Parameter("homeID")).And(
+                          rev.RESOURCE_ID == Parameter("resourceID")).And(
+                              rev.RESOURCE_NAME == None),
+                     #Return=rev.REVISION
+                     )
+
+
+    @classproperty
+    def _unsharedRemovalQuery(cls):
+        """
+        DAL query to update the sync token for an owned collection.
+        """
+        rev = cls._revisionsSchema
+        return Update({rev.RESOURCE_ID: None,
+                       rev.REVISION: schema.REVISION_SEQ,
+                       rev.DELETED: True},
+                      Where=(rev.RESOURCE_ID == Parameter("resourceID")).And(
+                          rev.RESOURCE_NAME == None),
+                      # Return=rev.REVISION,
+                     )
+
+
     @inlineCallbacks
     def _deletedSyncToken(self, sharedRemoval=False):
         # Remove all child entries
@@ -1762,25 +1793,12 @@
         # non-shared collection, then we need to mark all collections
         # with the resource-id as being deleted to account for direct shares.
         if sharedRemoval:
-            yield self._txn.execSQL("""
-                update %(name)s
-                set (%(column_RESOURCE_ID)s, %(column_REVISION)s, %(column_DELETED)s)
-                 = (null, nextval('%(sequence)s'), TRUE)
-                where %(column_HOME_RESOURCE_ID)s = %%s and %(column_RESOURCE_ID)s = %%s and %(column_RESOURCE_NAME)s is null
-                returning %(column_REVISION)s
-                """ % self._revisionsTable,
-                [self._home._resourceID, self._resourceID,]
-            )
+            yield self._sharedRemovalQuery.on(self._txn,
+                                              homeID=self._home._resourceID,
+                                              resourceID=self._resourceID)
         else:
-            yield self._txn.execSQL("""
-                update %(name)s
-                set (%(column_RESOURCE_ID)s, %(column_REVISION)s, %(column_DELETED)s)
-                 = (null, nextval('%(sequence)s'), TRUE)
-                where %(column_RESOURCE_ID)s = %%s and %(column_RESOURCE_NAME)s is null
-                returning %(column_REVISION)s
-                """ % self._revisionsTable,
-                [self._resourceID,]
-            )
+            yield self._unsharedRemovalQuery.on(self._txn,
+                                                resourceID=self._resourceID)
         self._syncTokenRevision = None
 
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20110216/15315495/attachment.html>


More information about the calendarserver-changes mailing list