2021-01-08 12:20:58 +01:00

121 lines
3.3 KiB
Python

from app_be.views.mongo_db import MongoManager
from django.http import JsonResponse
from app_be.services.hashservice import create_sha512
class MongoDBService:
@staticmethod
def check() -> bool:
try:
instance = MongoManager.getInstance()
instance.AIC
except:
return False
return True
@staticmethod
def getAll():
instance = MongoManager.getInstance()
db = instance.AIC
col = db.metadata
try:
for resp in col.find():
print(resp)
except:
print("Could not find Metadata")
return resp
@staticmethod
def getSingle(identifier):
metadata = None
try:
instance = MongoManager.getInstance()
db = instance.AIC
col = db.metadata
metadata = None
resp = col.find({"identifier": identifier})
metadata = resp[0]
except:
print("Could not find Metadata")
if metadata is None:
return None
else:
if '_id' in metadata:
del metadata['_id']
return metadata
@staticmethod
def createSingle(metadata, identifier, decoded_image):
instance = MongoManager.getInstance()
db = instance.AIC
col = db.metadata
try:
metadata['identifier'] = identifier
metadata['location'] = [metadata['longitude'], metadata['latitude']]
metadata['sha512'] = create_sha512(decoded_image)
col.insert_one(metadata)
except:
print("Could not insert Metadata")
return False
return True
@staticmethod
def updateSingle(identifier, decoded_image) -> bool:
print("MongoDBService: Trying to update file with identifier " + identifier)
resp = MongoDBService.getSingle(identifier)
if resp is None:
print("Could not update Metadata: Identifier does not exist")
return False
i = 0
while MongoDBService.getSingle(identifier + '_' + str(i)) is not None:
print("MongoDBService: Version %s exists".format(identifier + '_' + str(i)))
i = i + 1
if i == 0:
print("MongoDBService: Creating new version with identifier %s".format(identifier + '_' + str(i)))
MongoDBService.createSingle(resp, identifier + '_' + str(i), decoded_image)
else:
resp = MongoDBService.getSingle(identifier + '_' + str(i - 1))
print("MongoDBService: Creating new version with identifier %s".format(identifier + '_' + str(i - 1)))
MongoDBService.createSingle(resp, identifier + '_' + str(i), decoded_image)
return True
@staticmethod
def deleteSingle(identifier):
instance = MongoManager.getInstance()
db = instance.AIC
col = db.metadata
try:
resp = col.delete_one({"identifier": identifier})
return resp
except:
print("Could not delete Metadata")
return resp
@staticmethod
def deleteAll():
instance = MongoManager.getInstance()
db = instance.AIC
col = db.metadata
try:
resp = col.delete_many({})
return resp
except:
print("Could not delete Metadata")
return resp