summaryrefslogtreecommitdiff
path: root/api/opendc/util/database.py
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2020-10-27 10:58:38 +0100
committerGitHub <noreply@github.com>2020-10-27 10:58:38 +0100
commit38fc6fa35ca4545a6068aaa759359c271c9f5197 (patch)
tree7a473d575f04223b57cc103a97a341be9d4bb55a /api/opendc/util/database.py
parent89cba029a37e79b7c730caffc04ce547cda4837c (diff)
parent839b332a2b9d7dcb5536c080e822f85447b615de (diff)
Merge pull request #50 from atlarge-research/bug/bson-objectid
Use BSON ObjectId for model identifiers
Diffstat (limited to 'api/opendc/util/database.py')
-rw-r--r--api/opendc/util/database.py23
1 files changed, 4 insertions, 19 deletions
diff --git a/api/opendc/util/database.py b/api/opendc/util/database.py
index 80cdcbab..dd26533d 100644
--- a/api/opendc/util/database.py
+++ b/api/opendc/util/database.py
@@ -1,8 +1,6 @@
-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'
@@ -31,32 +29,25 @@ class Database:
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)
+ return getattr(self.opendc_db, collection).find_one(query)
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
+ return list(cursor)
def insert(self, obj, collection):
"""Updates an existing object."""
bson = getattr(self.opendc_db, collection).insert(obj)
- return self.convert_bson_to_json(bson)
+ return 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)
+ return getattr(self.opendc_db, collection).update({'_id': _id}, obj)
def delete_one(self, query, collection):
"""Deletes one object matching the given query.
@@ -73,12 +64,6 @@ class Database:
getattr(self.opendc_db, collection).delete_many(query)
@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)