diff options
Diffstat (limited to 'src/db.py')
-rwxr-xr-x | src/db.py | 38 |
1 files changed, 23 insertions, 15 deletions
@@ -10,19 +10,31 @@ # invoking time.time() several times quickly enough. import time -import struct -import couchdb +import couch class DictDB(): def __init__(self, database, hostname, username, password): - self.server = couchdb.Server( + self.server = couch.client.Server( f"http://{username}:{password}@{hostname}:5984/") - if database not in self.server: - self.server.create(database) + try: + self.couchdb = self.server.database(database) + except couch.exceptions.NotFound: + print("Creating database and indexes.") + index = { + "index": { + "fields": [ + "domain" + ] + }, + "name": "domain-json-index", + "type": "json" + } + + self.couchdb = self.server.create(database) + print(self.couchdb.index(index)) - self.couchdb = self.server[database] self._ts = time.time() def unique_key(self): @@ -33,21 +45,17 @@ class DictDB(): return self._ts - def index_add(self, path): - pass - def add(self, data, batch_write=False): keys = [] if type(data) is list: for item in data: - key = str(self.unique_key()) - self.couchdb[key] = item - keys.append(key) + item['_id'] = str(self.unique_key()) + + self.couchdb.save(item) else: - key = str(self.unique_key()) - self.couchdb[key] = data - keys.append(key) + data['_id'] = str(self.unique_key()) + self.couchdb.save(data) return keys |