From 8737d3aff94c31bcc0f0be4f791bd5ec9936ff2b Mon Sep 17 00:00:00 2001 From: kari Barry Date: Thu, 1 Feb 2024 17:28:34 -0500 Subject: [PATCH] =?UTF-8?q?Add=20EXPERIMENTAL=20support=20for=20updating?= =?UTF-8?q?=20`BlueSkyEventStream`=20descriptors=20=F0=9F=A7=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- suitcase/mongo_normalized/__init__.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/suitcase/mongo_normalized/__init__.py b/suitcase/mongo_normalized/__init__.py index 7b676a3..33e6963 100644 --- a/suitcase/mongo_normalized/__init__.py +++ b/suitcase/mongo_normalized/__init__.py @@ -166,14 +166,16 @@ def update(self, name, doc): The new version of the document. Its uid will be used to match it to the current version, the one to be updated. """ - if name in ['start', 'stop']: - key = 'run_start' if name == 'stop' else 'uid' + if name in ['start', 'stop', 'descriptor']: + # Keys and collection names differ slightly between start, stop and descriptor + key = 'uid' if name == 'start' else 'run_start' + name = f'_event_{name}' if name == 'descriptor' else f'_run_{name}' event_model.schema_validators[event_model.DocumentNames.start].validate(doc) - current_col = getattr(self, f'_run_{name}_collection') - revisions_col = getattr(self, f'_run_{name}_collection_revisions') + current_col = getattr(self, f'{name}_collection') + revisions_col = getattr(self, f'{name}_collection_revisions') old = current_col.find_one({key: doc[key]}) - if (old is None and name == 'stop'): - # New stop document : insert it + if (old is None and (name == '_run_stop' or name == '_event_descriptor')): + # New stop or descriptor document : insert it current_col.insert_one(doc) else: old.pop('_id')