Rewrite update function for MongoDBService

This commit is contained in:
Tobias Eidelpes 2021-01-08 19:09:38 +01:00
parent f05571a81d
commit e50e027ea9

View File

@ -71,23 +71,24 @@ class MongoDBService:
@staticmethod @staticmethod
def updateSingle(identifier, decoded_image) -> bool: def updateSingle(identifier, decoded_image) -> bool:
print("MongoDBService: Trying to update file with identifier " + identifier) print("MongoDBService: Trying to update file with identifier " + identifier)
resp = MongoDBService.getSingle(identifier) instance = MongoManager.getInstance()
if resp is None: db = instance.AIC
print("Could not update Metadata: Identifier does not exist") col = db.metadata
return False
i = 0 old = {"identifier": identifier} # Query for old version
while MongoDBService.getSingle(identifier + '_' + str(i)) is not None:
print("MongoDBService: Version {} exists".format(identifier + '_' + str(i)))
i = i + 1
if i == 0: metadata_orig = MongoDBService.getSingle(identifier)
print("MongoDBService: Creating new version with identifier {}".format(identifier + '_' + str(i))) metadata_new = metadata_orig
MongoDBService.createSingle(resp, identifier + '_' + str(i), decoded_image) metadata_new['previous'] = identifier + '_' + metadata_orig['version']
else: metadata_new['version'] = str(int(metadata_new['version']) + 1) # Increment version by one
resp = MongoDBService.getSingle(identifier + '_' + str(i - 1))
print("MongoDBService: Creating new version with identifier {}".format(identifier + '_' + str(i - 1))) identifier_changed = identifier + '_' + metadata_orig['version'] # Set identifier to include version
MongoDBService.createSingle(resp, identifier + '_' + str(i), decoded_image) col.update_one(old, {"$set": {"identifier": identifier_changed, "filename": identifier_changed + '.jpg'}})
print("MongoDBService: Old object is ", col.find_one({"identifier": identifier_changed}))
MongoDBService.createSingle(metadata_new, identifier, decoded_image)
print("MongoDBService: New object is ", col.find_one({"identifier": identifier}))
return True return True