diff options
| author | Georgios Andreadis <info@gandreadis.com> | 2020-06-29 16:05:23 +0200 |
|---|---|---|
| committer | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2020-08-24 16:18:36 +0200 |
| commit | 4f9a40abdc7836345113c047f27fcc96800cb3f5 (patch) | |
| tree | e443d14e34a884b1a4d9c549f81d51202eddd5f7 /opendc/util/database.py | |
| parent | cd5f7bf3a72913e1602cb4c575e61ac7d5519be0 (diff) | |
Prepare web-server repository for monorepo
This change prepares the web-server Git repository for the monorepo residing at
https://github.com/atlarge-research.com/opendc. To accomodate for this, we
move all files into a web-server subdirectory.
Diffstat (limited to 'opendc/util/database.py')
| -rw-r--r-- | opendc/util/database.py | 93 |
1 files changed, 0 insertions, 93 deletions
diff --git a/opendc/util/database.py b/opendc/util/database.py deleted file mode 100644 index 50bc93a8..00000000 --- a/opendc/util/database.py +++ /dev/null @@ -1,93 +0,0 @@ -import json -import urllib.parse -from datetime import datetime - -from bson.json_util import dumps -from pymongo import MongoClient - -DATETIME_STRING_FORMAT = '%Y-%m-%dT%H:%M:%S' -CONNECTION_POOL = None - - -class Database: - def __init__(self): - self.opendc_db = None - - def init_database(self, user, password, database, host): - user = urllib.parse.quote_plus(user) # TODO: replace this with environment variable - password = urllib.parse.quote_plus(password) # TODO: same as above - database = urllib.parse.quote_plus(database) - host = urllib.parse.quote_plus(host) - - client = MongoClient('mongodb://%s:%s@%s/default_db?authSource=%s' % (user, password, host, database)) - self.opendc_db = client.opendc - - def fetch_one(self, query, collection): - """Uses existing mongo connection to return a single (the first) document in a collection matching the given - query as a JSON object. - - The query needs to be in json format, i.e.: `{'name': prefab_name}`. - """ - bson = getattr(self.opendc_db, collection).find_one(query) - - return self.convert_bson_to_json(bson) - - def fetch_all(self, query, collection): - """Uses existing mongo connection to return all documents matching a given query, as a list of JSON objects. - - The query needs to be in json format, i.e.: `{'name': prefab_name}`. - """ - results = [] - cursor = getattr(self.opendc_db, collection).find(query) - for doc in cursor: - results.append(self.convert_bson_to_json(doc)) - return results - - def insert(self, obj, collection): - """Updates an existing object.""" - bson = getattr(self.opendc_db, collection).insert(obj) - - return self.convert_bson_to_json(bson) - - def update(self, _id, obj, collection): - """Updates an existing object.""" - bson = getattr(self.opendc_db, collection).update({'_id': _id}, obj) - - return self.convert_bson_to_json(bson) - - def delete_one(self, query, collection): - """Deletes one object matching the given query. - - The query needs to be in json format, i.e.: `{'name': prefab_name}`. - """ - bson = getattr(self.opendc_db, collection).delete_one(query) - - return self.convert_bson_to_json(bson) - - def delete_all(self, query, collection): - """Deletes all objects matching the given query. - - The query needs to be in json format, i.e.: `{'name': prefab_name}`. - """ - bson = getattr(self.opendc_db, collection).delete_many(query) - - return self.convert_bson_to_json(bson) - - @staticmethod - def convert_bson_to_json(bson): - """Converts a BSON representation to JSON and returns the JSON representation.""" - json_string = dumps(bson) - return json.loads(json_string) - - @staticmethod - def datetime_to_string(datetime_to_convert): - """Return a database-compatible string representation of the given datetime object.""" - return datetime_to_convert.strftime(DATETIME_STRING_FORMAT) - - @staticmethod - def string_to_datetime(string_to_convert): - """Return a datetime corresponding to the given string representation.""" - return datetime.strptime(string_to_convert, DATETIME_STRING_FORMAT) - - -DB = Database() |
