diff options
author | Kristofer Hallin <kristofer@sunet.se> | 2021-10-01 10:21:54 +0200 |
---|---|---|
committer | Kristofer Hallin <kristofer@sunet.se> | 2021-10-01 10:21:54 +0200 |
commit | cb47680777b3fd3bcd955f9e81ddf45c9b69ecfa (patch) | |
tree | 1fa8dfae5e9f39c634498f2c60b56a99558cae9a /src/db.py | |
parent | 0398e77a809abcaf78c6f7d3e6064a5bee50be23 (diff) |
* Use py-couchdb.
* Other minor fixes and tweaks.
Diffstat (limited to 'src/db.py')
-rwxr-xr-x | src/db.py | 34 |
1 files changed, 23 insertions, 11 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,17 +45,17 @@ class DictDB(): return self._ts - def index_add(self, path): - pass - def add(self, data, batch_write=False): key = str(self.unique_key()) if type(data) is list: for item in data: - self.couchdb[key] = item + item['_id'] = str(self._ts) + + self.couchdb.save(item) else: - self.couchdb[key] = data + data['_id'] = str(self._ts) + self.couchdb.save(data) return key |