diff --git a/conda-store-server/conda_store_server/storage.py b/conda-store-server/conda_store_server/storage.py index 2e37ec6d7..4efb4765f 100644 --- a/conda-store-server/conda_store_server/storage.py +++ b/conda-store-server/conda_store_server/storage.py @@ -21,10 +21,17 @@ def fset( filename: str, artifact_type: schema.BuildArtifactType, ): - db.add( - orm.BuildArtifact(build_id=build_id, key=key, artifact_type=artifact_type) + ba = orm.BuildArtifact + exists = ( + db.query(ba) + .filter(ba.build_id == build_id) + .filter(ba.key == key) + .filter(ba.artifact_type == artifact_type) + .first() ) - db.commit() + if not exists: + db.add(ba(build_id=build_id, key=key, artifact_type=artifact_type)) + db.commit() def set( self, @@ -34,10 +41,17 @@ def set( value: bytes, artifact_type: schema.BuildArtifactType, ): - db.add( - orm.BuildArtifact(build_id=build_id, key=key, artifact_type=artifact_type) + ba = orm.BuildArtifact + exists = ( + db.query(ba) + .filter(ba.build_id == build_id) + .filter(ba.key == key) + .filter(ba.artifact_type == artifact_type) + .first() ) - db.commit() + if not exists: + db.add(ba(build_id=build_id, key=key, artifact_type=artifact_type)) + db.commit() def get(self, key: str): raise NotImplementedError()