From a90c932b40c6c880c71c192a7803bfe400378b47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20H=C3=B6ning?= Date: Wed, 28 Feb 2024 14:04:25 +0100 Subject: [PATCH] add unique constraints separately, as it needs the probability fields as well MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Nicolas Höning --- timely_beliefs/beliefs/classes.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/timely_beliefs/beliefs/classes.py b/timely_beliefs/beliefs/classes.py index 94550365..5b080509 100644 --- a/timely_beliefs/beliefs/classes.py +++ b/timely_beliefs/beliefs/classes.py @@ -32,7 +32,7 @@ from sqlalchemy.ext.hybrid import hybrid_method, hybrid_property from sqlalchemy.orm import Session, backref, declarative_mixin, relationship from sqlalchemy.orm.util import AliasedClass -from sqlalchemy.schema import Index +from sqlalchemy.schema import Index, UniqueConstraint from sqlalchemy.sql.elements import BinaryExpression from sqlalchemy.sql.expression import Selectable @@ -184,13 +184,20 @@ class TimedBeliefDBMixin(TimedBelief): @declared_attr def __table_args__(cls): return ( + UniqueConstraint( + "event_start", + "belief_horizon", + "sensor_id", + "source_id", + "cumulative_probability", + name=f"{cls.__tablename__}_one_belief_by_one_source_uc", + ), Index( - f"{cls.__tablename__}_quad_unique_and_search_idx", + f"{cls.__tablename__}_quad_search_idx", "event_start", "source_id", "sensor_id", "belief_horizon", - unique=True, ), )