diff options
Diffstat (limited to 'src/carquinyol/datastore.py')
-rw-r--r-- | src/carquinyol/datastore.py | 80 |
1 files changed, 29 insertions, 51 deletions
diff --git a/src/carquinyol/datastore.py b/src/carquinyol/datastore.py index 0d81063..ccad08a 100644 --- a/src/carquinyol/datastore.py +++ b/src/carquinyol/datastore.py @@ -115,59 +115,35 @@ class DataStore(dbus.service.Object): else: return True - @trace() - def _create_completion_cb(self, async_cb, async_err_cb, tree_id, version_id, exc=None): - if exc is not None: - async_err_cb(exc) - return - - self.Created(tree_id, version_id) - self._optimizer.optimize(tree_id, version_id) - logger.debug("created (%s,%s)" % (tree_id,version_id)) - async_cb(tree_id,version_id) - @dbus.service.method(DS_DBUS_INTERFACE, in_signature='a{sv}sb', out_signature='ss', - async_callbacks=('async_cb', 'async_err_cb'), byte_arrays=True) - def create(self, props, file_path, transfer_ownership, - async_cb, async_err_cb): + @trace() + def create(self, props, file_path, transfer_ownership): """ Short-term compatibility wrapper for save(). """ - tree_id, child_id = self.save('', '', props, file_path, transfer_ownership) + tree_id, child_id = self._save('', '', props, file_path, transfer_ownership) self.Created(tree_id, child_id) return (tree_id, child_id) + @trace() @dbus.service.signal(DS_DBUS_INTERFACE, signature="ss") def Created(self, tree_id, version_id): pass - @trace() - def _update_completion_cb(self, async_cb, async_err_cb, tree_id, version_id, exc=None): - if exc is not None: - async_err_cb(exc) - return - - self.Updated(tree_id,version_id) - self._optimizer.optimize(tree_id,version_id) - logger.debug("updated %s %s" % (tree_id, version_id)) - async_cb(tree_id, version_id) - @dbus.service.method(DS_DBUS_INTERFACE, in_signature='ssa{sv}sb', out_signature='ss', - async_callbacks=('async_cb', 'async_err_cb'), byte_arrays=True) - @trace(skip_args=[3], skip_kwargs=["props"]) # "preview" metadata will clutter logfile otherwise - def update(self, tree_id, version_id, props, file_path, transfer_ownership, - async_cb, async_err_cb): + @trace() + def update(self, tree_id, version_id, props, file_path, transfer_ownership): """ Short-term compatibility wrapper for save() / change_metadata(). """ if file_path : - tree_id, child_id = self.save(tree_id, version_id, props, file_path, transfer_ownership) + tree_id, child_id = self._save(tree_id, version_id, props, file_path, transfer_ownership) else : self.change_metadata(tree_id, version_id, props) child_id = version_id @@ -183,19 +159,22 @@ class DataStore(dbus.service.Object): in_signature='ssa{sv}sb', out_signature='ss', byte_arrays=True) - @trace(skip_args=[3], skip_kwargs=["metadata"]) # "preview" metadata will clutter logfile otherwise + @trace() def save(self, tree_id, parent_id, metadata, path, delete_after): + return self._save(self, tree_id, parent_id, metadata, path, delete_after) + + def _save(self, tree_id, parent_id, metadata, path, delete_after): # TODO: copy docstring from datastore-redesign.html if (not tree_id) and parent_id : raise sugar.datastore.InvalidArgumentError("tree_id is empty but parent_id is not") if tree_id and not parent_id : - # TODO: check tree_id does not exist yet - pass + if self._find({'tree_id': tree_id}, {'limit': 1})[1] : + raise sugar.datastore.InvalidArgumentError("no parent_id given but tree_id already exists") elif parent_id : - # TODO: check parent_id does exist - pass + if not self._find({'tree_id': tree_id, 'version_id': parent_id}, {'limit': 1})[1] : + raise sugar.datastore.InvalidArgumentError("given parent_id does not exist") if not tree_id : tree_id = self._gen_uuid() @@ -244,17 +223,26 @@ class DataStore(dbus.service.Object): in_signature='ssa{sv}', out_signature='', byte_arrays=True) - @trace(skip_args=[3], skip_kwargs=["metadata"]) # "preview" metadata will clutter logfile otherwise + @trace() def change_metadata(self, tree_id, version_id, metadata) : # TODO: copy docstring from datastore-redesign.html - # TODO - pass + self._metadata_store.store(tree_id, version_id, metadata) @dbus.service.method(DS_DBUS_INTERFACE, in_signature='a{sv}a{sv}', out_signature='aa{sv}u') @trace() - def find(self, query, options, querystring = None): + def find(self, query, options): + return self._find(query, options) + + @dbus.service.method(DS_DBUS_INTERFACE, + in_signature='sa{sv}a{sv}', + out_signature='aa{sv}u') + @trace() + def textsearch(self, querystring, query, options) : + return self._find(query, options, querystring = querystring) + + def _find(self, query, options, querystring = None) : t = time.time() # don't expose internal details @@ -303,19 +291,9 @@ class DataStore(dbus.service.Object): metadata = self._metadata_store.retrieve(tree_id, version_id, options.get('metadata')) entries.append(metadata) - logger.debug('find(): %r' % (time.time() - t)) -# logger.debug('count=%r, entries=%r' % (count, entries)) - logger.debug('count=%r' % (count,)) return entries, count @dbus.service.method(DS_DBUS_INTERFACE, - in_signature='sa{sv}a{sv}', - out_signature='aa{sv}u') - @trace() - def textsearch(self, querystring, query, options) : - return self.find(query, options, querystring = querystring) - - @dbus.service.method(DS_DBUS_INTERFACE, in_signature='ss', out_signature='s', sender_keyword='sender') @@ -324,7 +302,7 @@ class DataStore(dbus.service.Object): """ Short-term compatibility wrapper for get_filename(). """ - return self.get_data(uid, vid, sender) + return self.get_data(tree_id, version_id, sender) @dbus.service.method(DS_DBUS_INTERFACE, in_signature='ss', |