def _set(self, key, value, rev=None): if self.read_only: raise FamWriteError("You can't write to this database") try: if rev is not None: result = self.bucket.upsert(key, value, cas=rev) else: result = self.bucket.upsert(key, value) return ResultWrapper(key, result.cas, value) except KeyExistsError as e: raise FamResourceConflict("key alreday exists in couchbase: %s - %s" % (key, e))
def _n1ql_with_rev(self, query, *args, **kwargs): query = N1QLQuery(query, *args, **kwargs) rows = self.bucket.n1ql_query(query) results = [] bucket_name = None for row in rows: if bucket_name is None: keys = row.keys() keys.remove("id") keys.remove("cas") bucket_name = keys[0] rev = row["_sync"]["rev"] results.append(ResultWrapper(row["id"], rev, row[bucket_name])) return results
def _n1ql(self, query, *args, **kwargs): query = N1QLQuery(query, *args, **kwargs) rows = self.bucket.n1ql_query(query) rows_list = list(rows) return [ResultWrapper(row["$1"]["id"], row["$1"]["cas"], row["test"]) for row in rows_list]
def _get(self, key, class_name=None): try: result = self.bucket.get(key) except NotFoundError as e: return None return ResultWrapper(key, result.cas, result.value)