From 04225050c2dd972f05e240d27dbe69b9bb680f85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isak=20Ohlsson=20=C3=85ngnell?= <40887124+islean@users.noreply.github.com> Date: Tue, 20 Feb 2024 10:43:58 +0100 Subject: [PATCH] (Streamline delivery) Add OrderCase table (#2960) (minor) ### Added - OrderCase table --- ...02_19_43eb680d6181_add_order_case_table.py | 32 +++++++++++++++++++ cg/store/models.py | 10 ++++++ 2 files changed, 42 insertions(+) create mode 100644 alembic/versions/2024_02_19_43eb680d6181_add_order_case_table.py diff --git a/alembic/versions/2024_02_19_43eb680d6181_add_order_case_table.py b/alembic/versions/2024_02_19_43eb680d6181_add_order_case_table.py new file mode 100644 index 0000000000..63e7649106 --- /dev/null +++ b/alembic/versions/2024_02_19_43eb680d6181_add_order_case_table.py @@ -0,0 +1,32 @@ +"""Add order case table + +Revision ID: 43eb680d6181 +Revises: d241d8c493fb +Create Date: 2024-02-19 10:13:21.075891 + +""" + +import sqlalchemy as sa + +from alembic import op + +# revision identifiers, used by Alembic. +revision = "43eb680d6181" +down_revision = "d241d8c493fb" +branch_labels = None +depends_on = None + + +def upgrade(): + op.create_table( + "order_case", + sa.Column("order_id", sa.Integer, nullable=False, index=True), + sa.Column("case_id", sa.Integer, nullable=False, index=True), + sa.ForeignKeyConstraint(["order_id"], ["order.id"], ondelete="CASCADE"), + sa.ForeignKeyConstraint(["case_id"], ["case.id"], ondelete="CASCADE"), + sa.UniqueConstraint("order_id", "case_id", name="_order_case_uc"), + ) + + +def downgrade(): + op.drop_table(table_name="order_case") diff --git a/cg/store/models.py b/cg/store/models.py index f69332e4c6..ddd3cc0634 100644 --- a/cg/store/models.py +++ b/cg/store/models.py @@ -55,6 +55,14 @@ def to_dict(model_instance): UniqueConstraint("customer_id", "collaboration_id", name="_customer_collaboration_uc"), ) +order_case = Table( + "order_case", + Model.metadata, + Column("order_id", ForeignKey("order.id", ondelete="CASCADE"), nullable=False), + Column("case_id", ForeignKey("case.id", ondelete="CASCADE"), nullable=False), + UniqueConstraint("order_id", "case_id", name="_order_case_uc"), +) + class PriorityMixin: @property @@ -403,6 +411,7 @@ class Case(Model, PriorityMixin): analyses = orm.relationship(Analysis, back_populates="case", order_by="-Analysis.completed_at") links = orm.relationship("CaseSample", back_populates="case") + orders = orm.relationship("Order", secondary=order_case, back_populates="cases") @property def cohorts(self) -> list[str]: @@ -882,6 +891,7 @@ class Order(Model): __tablename__ = "order" id = Column(types.Integer, primary_key=True, unique=True) + cases = orm.relationship("Case", secondary=order_case, back_populates="orders") customer_id = Column(ForeignKey("customer.id"), nullable=False) customer = orm.relationship(Customer, foreign_keys=[customer_id]) order_date = Column(types.DateTime, nullable=False, default=dt.datetime.now())