Skip to content

Commit

Permalink
Fix(Alembic) Remove imports from cg in alembic scripts (#2986)(patch)
Browse files Browse the repository at this point in the history
### Fixed

- Removed all import from cg in the alembic scripts
  • Loading branch information
Vince-janv authored Feb 27, 2024
1 parent e15877b commit d9a6297
Show file tree
Hide file tree
Showing 11 changed files with 260 additions and 30 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,11 @@
"""

from enum import StrEnum

import sqlalchemy as sa

from alembic import op
from cg.constants import Workflow

# revision identifiers, used by Alembic.
revision = "d241d8c493fb"
Expand All @@ -18,6 +19,25 @@
depends_on = None


class Workflow(StrEnum):
BALSAMIC: str = "balsamic"
BALSAMIC_QC: str = "balsamic-qc"
BALSAMIC_UMI: str = "balsamic-umi"
BALSAMIC_PON: str = "balsamic-pon"
DEMULTIPLEX: str = "demultiplex"
FASTQ: str = "fastq"
FLUFFY: str = "fluffy"
MICROSALT: str = "microsalt"
MIP_DNA: str = "mip-dna"
MIP_RNA: str = "mip-rna"
RAREDISEASE: str = "raredisease"
RNAFUSION: str = "rnafusion"
RSYNC: str = "rsync"
SARS_COV_2: str = "sars-cov-2"
SPRING: str = "spring"
TAXPROFILER: str = "taxprofiler"


def upgrade():
op.add_column(
table_name="order",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,33 @@
"""

from sqlalchemy import orm
from enum import StrEnum

from sqlalchemy import orm, types
from sqlalchemy.dialects import mysql
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column

from alembic import op
from cg.constants import Workflow
from cg.store.models import Analysis, Case


class Workflow(StrEnum):
BALSAMIC: str = "balsamic"
BALSAMIC_PON: str = "balsamic-pon"
BALSAMIC_QC: str = "balsamic-qc"
BALSAMIC_UMI: str = "balsamic-umi"
DEMULTIPLEX: str = "demultiplex"
FASTQ: str = "fastq"
FLUFFY: str = "fluffy"
MICROSALT: str = "microsalt"
MIP_DNA: str = "mip-dna"
MIP_RNA: str = "mip-rna"
MUTANT: str = "mutant"
RAREDISEASE: str = "raredisease"
RNAFUSION: str = "rnafusion"
RSYNC: str = "rsync"
SPRING: str = "spring"
TAXPROFILER: str = "taxprofiler"


# revision identifiers, used by Alembic.
revision = "de0f5b78dca4"
Expand Down Expand Up @@ -44,6 +65,23 @@
new_enum = mysql.ENUM(*list(new_options))


class Base(DeclarativeBase):
pass


class Analysis(Base):
__tablename__ = "analysis"

id: Mapped[int] = mapped_column(primary_key=True)
pipeline: Mapped[str]


class Case(Base):
__tablename__ = "case"
data_analysis: Mapped[str]
id: Mapped[int] = mapped_column(primary_key=True)


def upgrade():
bind = op.get_bind()
session = orm.Session(bind=bind)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,14 @@
"""

from enum import StrEnum

import sqlalchemy as sa
from sqlalchemy import Column, orm, types
from sqlalchemy.dialects import mysql
from sqlalchemy.orm import declarative_base

from alembic import op
from cg.constants import DataDelivery, Workflow

Base = declarative_base()

Expand All @@ -23,13 +24,32 @@
depends_on = None


class DataDelivery(StrEnum):
ANALYSIS_FILES: str = "analysis"
ANALYSIS_BAM_FILES: str = "analysis-bam"
FASTQ: str = "fastq"
NIPT_VIEWER: str = "nipt-viewer"
FASTQ_QC: str = "fastq_qc"
SCOUT: str = "scout"


class Pipeline(StrEnum):
BALSAMIC: str = "balsamic"
FASTQ: str = "fastq"
FLUFFY: str = "fluffy"
MICROSALT: str = "microsalt"
MIP_DNA: str = "mip-dna"
MIP_RNA: str = "mip-rna"
SARS_COV_2: str = "sars-cov-2"


class Case(Base):
__tablename__ = "family"

id = sa.Column(sa.types.Integer, primary_key=True)
internal_id = sa.Column(sa.types.String(32), unique=True, nullable=False)
name = sa.Column(sa.types.String(128), nullable=False)
data_analysis = Column(types.Enum(*list(Workflow)))
data_analysis = Column(types.Enum(*list(Pipeline)))
data_delivery = Column(types.Enum(*list(DataDelivery)))

def __str__(self) -> str:
Expand Down Expand Up @@ -58,7 +78,7 @@ def upgrade():
.filter(Case.data_analysis == "")
):
print(f"Altering family: {str(family)}")
family.data_analysis = str(Workflow.SARS_COV_2)
family.data_analysis = str(Pipeline.SARS_COV_2)
print(f"Altered family: {str(family)}")

session.commit()
Expand Down
13 changes: 12 additions & 1 deletion alembic/versions/68e54d17f4f3_add_is_clinical_to_customer.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,10 @@
"""

import sqlalchemy as sa
from sqlalchemy import Column, types
from sqlalchemy.orm import DeclarativeBase

from alembic import op
from cg.store.models import Customer

# revision identifiers, used by Alembic.
revision = "68e54d17f4f3"
Expand All @@ -18,6 +19,16 @@
depends_on = None


class Model(DeclarativeBase):
pass


class Customer(Model):
__tablename__ = "customer"
id = Column(types.Integer, primary_key=True)
is_clinical = Column(types.Boolean, nullable=True)


def upgrade():
op.add_column(table_name="customer", column=sa.Column("is_clinical", sa.BOOLEAN))
bind = op.get_bind()
Expand Down
22 changes: 21 additions & 1 deletion alembic/versions/9008aa5065b4_add_taxprofiler_analysis_option.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,13 @@
"""

from enum import StrEnum

import sqlalchemy as sa
from sqlalchemy.dialects import mysql
from sqlalchemy.orm import declarative_base

from alembic import op
from cg.constants import Workflow

# revision identifiers, used by Alembic.
revision = "9008aa5065b4"
Expand Down Expand Up @@ -43,6 +44,25 @@
new_enum = mysql.ENUM(*new_options)


class Workflow(StrEnum):
BALSAMIC: str = "balsamic"
BALSAMIC_PON: str = "balsamic-pon"
BALSAMIC_QC: str = "balsamic-qc"
BALSAMIC_UMI: str = "balsamic-umi"
DEMULTIPLEX: str = "demultiplex"
FASTQ: str = "fastq"
FLUFFY: str = "fluffy"
MICROSALT: str = "microsalt"
MIP_DNA: str = "mip-dna"
MIP_RNA: str = "mip-rna"
MUTANT: str = "mutant"
RAREDISEASE: str = "raredisease"
RNAFUSION: str = "rnafusion"
RSYNC: str = "rsync"
SPRING: str = "spring"
TAXPROFILER: str = "taxprofiler"


class Analysis(Base):
__tablename__ = "analysis"
id = sa.Column(sa.types.Integer, primary_key=True)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,13 @@
"""

from enum import StrEnum

import sqlalchemy as sa
from sqlalchemy.dialects import mysql
from sqlalchemy.orm import declarative_base

from alembic import op
from cg.constants import Workflow

# revision identifiers, used by Alembic.
revision = "9073c61bc72b"
Expand All @@ -38,6 +39,27 @@
"spring",
"taxprofiler",
)


class Pipeline(StrEnum):
BALSAMIC: str = "balsamic"
BALSAMIC_QC: str = "balsamic-qc"
BALSAMIC_UMI: str = "balsamic-umi"
BALSAMIC_PON: str = "balsamic-pon"
DEMULTIPLEX: str = "demultiplex"
FASTQ: str = "fastq"
FLUFFY: str = "fluffy"
MICROSALT: str = "microsalt"
MIP_DNA: str = "mip-dna"
MIP_RNA: str = "mip-rna"
RAREDISEASE: str = "raredisease"
RNAFUSION: str = "rnafusion"
RSYNC: str = "rsync"
SARS_COV_2: str = "sars-cov-2"
SPRING: str = "spring"
TAXPROFILER: str = "taxprofiler"


new_analysis_options = sorted(old_analysis_options + ("raredisease",))

old_analysis_enum = mysql.ENUM(*old_analysis_options)
Expand All @@ -47,13 +69,14 @@
class Analysis(Base):
__tablename__ = "analysis"
id = sa.Column(sa.types.Integer, primary_key=True)
pipeline = sa.Column(sa.types.Enum(*list(Workflow)))
pipeline = sa.Column(sa.types.Enum(*list(Pipeline)))


class Case(Base):
__tablename__ = "family"
id = sa.Column(sa.types.Integer, primary_key=True)
data_analysis = sa.Column(sa.types.Enum(*list(Workflow)))
data_analysis = sa.Column(sa.types.Enum(*list(Pipeline)))
internal_id = sa.Column(sa.types.String)


def upgrade():
Expand Down
33 changes: 27 additions & 6 deletions alembic/versions/998be2e367cf_fix_mip_on_fastq_wgs_cases.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@
"""

from datetime import datetime
from enum import StrEnum

import sqlalchemy as sa
from sqlalchemy import orm
from sqlalchemy.orm import declarative_base

from alembic import op
from cg.constants import PREP_CATEGORIES, DataDelivery, Workflow

Base = declarative_base()

Expand All @@ -23,6 +23,27 @@
branch_labels = None
depends_on = None

PREP_CATEGORIES = ("cov", "mic", "rml", "tgs", "wes", "wgs", "wts")


class DataDelivery(StrEnum):
ANALYSIS_FILES: str = "analysis"
ANALYSIS_BAM_FILES: str = "analysis-bam"
FASTQ: str = "fastq"
NIPT_VIEWER: str = "nipt-viewer"
FASTQ_QC: str = "fastq_qc"
SCOUT: str = "scout"


class Pipeline(StrEnum):
BALSAMIC: str = "balsamic"
FASTQ: str = "fastq"
FLUFFY: str = "fluffy"
MICROSALT: str = "microsalt"
MIP_DNA: str = "mip-dna"
MIP_RNA: str = "mip-rna"
SARS_COV_2: str = "sars-cov-2"


class Customer(Base):
__tablename__ = "customer"
Expand All @@ -38,7 +59,7 @@ class Case(Base):
name = sa.Column(sa.types.String(128), nullable=False)
customer_id = sa.Column(sa.ForeignKey("customer.id", ondelete="CASCADE"), nullable=False)
customer = orm.relationship(Customer, foreign_keys=[customer_id])
data_analysis = sa.Column(sa.types.Enum(*list(Workflow)))
data_analysis = sa.Column(sa.types.Enum(*list(Pipeline)))
data_delivery = sa.Column(sa.types.Enum(*list(DataDelivery)))
priority = sa.Column(sa.types.Integer, default=1, nullable=False)
_panels = sa.Column(sa.types.Text)
Expand Down Expand Up @@ -111,7 +132,7 @@ def upgrade():
session.query(Case)
.filter(Case.customer_id == 1)
.filter(Case.data_delivery == DataDelivery.FASTQ)
.filter(Case.data_analysis == Workflow.FASTQ)
.filter(Case.data_analysis == Pipeline.FASTQ)
.filter(Case.priority == "research")
.filter(Case.ordered_at >= datetime(year=2021, month=2, day=2))
):
Expand All @@ -126,7 +147,7 @@ def upgrade():
and sample.name == family.name
):
print(f"changing data analysis from FASTQ to MIP for: {family}")
family.data_analysis = Workflow.MIP_DNA
family.data_analysis = Pipeline.MIP_DNA
count += 1

session.commit()
Expand All @@ -143,7 +164,7 @@ def downgrade():
session.query(Case)
.filter(Case.customer_id == 1)
.filter(Case.data_delivery == DataDelivery.FASTQ)
.filter(Case.data_analysis == Workflow.MIP_DNA)
.filter(Case.data_analysis == Pipeline.MIP_DNA)
.filter(Case.priority == "research")
.filter(Case.ordered_at >= datetime(year=2021, month=2, day=2))
):
Expand All @@ -158,7 +179,7 @@ def downgrade():
and sample.name == family.name
):
print(f"changing data analysis from MIP to FASTQ for: {family}")
family.data_analysis = Workflow.FASTQ
family.data_analysis = Pipeline.FASTQ
count += 1

session.commit()
Expand Down
Loading

0 comments on commit d9a6297

Please sign in to comment.