未知(继上次中断)
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
"""migrate ae seriousness to roman numerals
|
||||
|
||||
Revision ID: 20260116_04
|
||||
Revises: 20260116_03
|
||||
Create Date: 2026-01-16 17:00:00.000000
|
||||
|
||||
"""
|
||||
from typing import Sequence, Union
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision: str = "20260116_04"
|
||||
down_revision: Union[str, None] = "20260116_03"
|
||||
branch_labels: Union[str, Sequence[str], None] = None
|
||||
depends_on: Union[str, Sequence[str], None] = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
conn = op.get_bind()
|
||||
conn.execute(
|
||||
sa.text(
|
||||
"""
|
||||
UPDATE adverse_events
|
||||
SET seriousness = CASE
|
||||
WHEN UPPER(TRIM(seriousness)) = 'SERIOUS' THEN 'IV'
|
||||
WHEN UPPER(TRIM(seriousness)) IN ('NON_SERIOUS', 'NON-SERIOUS', 'NON SERIOUS') THEN 'II'
|
||||
WHEN TRIM(seriousness) = '1' THEN 'I'
|
||||
WHEN TRIM(seriousness) = '2' THEN 'II'
|
||||
WHEN TRIM(seriousness) = '3' THEN 'III'
|
||||
WHEN TRIM(seriousness) = '4' THEN 'IV'
|
||||
WHEN TRIM(seriousness) = '5' THEN 'V'
|
||||
WHEN UPPER(TRIM(seriousness)) IN ('I', 'II', 'III', 'IV', 'V') THEN UPPER(TRIM(seriousness))
|
||||
ELSE seriousness
|
||||
END
|
||||
"""
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
conn = op.get_bind()
|
||||
conn.execute(
|
||||
sa.text(
|
||||
"""
|
||||
UPDATE adverse_events
|
||||
SET seriousness = CASE
|
||||
WHEN UPPER(TRIM(seriousness)) = 'I' THEN '1'
|
||||
WHEN UPPER(TRIM(seriousness)) = 'II' THEN '2'
|
||||
WHEN UPPER(TRIM(seriousness)) = 'III' THEN '3'
|
||||
WHEN UPPER(TRIM(seriousness)) = 'IV' THEN '4'
|
||||
WHEN UPPER(TRIM(seriousness)) = 'V' THEN '5'
|
||||
ELSE seriousness
|
||||
END
|
||||
"""
|
||||
)
|
||||
)
|
||||
@@ -0,0 +1,95 @@
|
||||
"""remove document workflows
|
||||
|
||||
Revision ID: 20260116_05
|
||||
Revises: 20260116_04
|
||||
Create Date: 2026-01-16 17:30:00.000000
|
||||
|
||||
"""
|
||||
from typing import Sequence, Union
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
from sqlalchemy.dialects import postgresql
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision: str = "20260116_05"
|
||||
down_revision: Union[str, None] = "20260116_04"
|
||||
branch_labels: Union[str, Sequence[str], None] = None
|
||||
depends_on: Union[str, Sequence[str], None] = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
op.drop_table("workflow_actions")
|
||||
op.drop_table("version_workflows")
|
||||
op.drop_table("workflow_nodes")
|
||||
op.drop_table("workflow_templates")
|
||||
op.execute("DROP TYPE IF EXISTS workflow_action_type")
|
||||
op.execute("DROP TYPE IF EXISTS workflow_status")
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
workflow_status = sa.Enum("PENDING", "APPROVED", "REJECTED", "CANCELED", name="workflow_status")
|
||||
workflow_action_type = sa.Enum("SUBMIT", "APPROVE", "REJECT", name="workflow_action_type")
|
||||
workflow_status.create(op.get_bind(), checkfirst=True)
|
||||
workflow_action_type.create(op.get_bind(), checkfirst=True)
|
||||
|
||||
op.create_table(
|
||||
"workflow_templates",
|
||||
sa.Column("id", postgresql.UUID(as_uuid=True), primary_key=True, nullable=False),
|
||||
sa.Column("trial_id", postgresql.UUID(as_uuid=True), nullable=True),
|
||||
sa.Column("name", sa.String(length=200), nullable=False),
|
||||
sa.Column("description", sa.Text(), nullable=True),
|
||||
sa.Column("is_active", sa.Boolean(), server_default="true", nullable=False),
|
||||
sa.Column("created_by", postgresql.UUID(as_uuid=True), nullable=True),
|
||||
sa.Column("created_at", sa.DateTime(timezone=True), server_default=sa.text("now()"), nullable=False),
|
||||
sa.Column("updated_at", sa.DateTime(timezone=True), server_default=sa.text("now()"), nullable=False),
|
||||
sa.ForeignKeyConstraint(["trial_id"], ["studies.id"]),
|
||||
sa.ForeignKeyConstraint(["created_by"], ["users.id"]),
|
||||
)
|
||||
|
||||
op.create_table(
|
||||
"workflow_nodes",
|
||||
sa.Column("id", postgresql.UUID(as_uuid=True), primary_key=True, nullable=False),
|
||||
sa.Column("template_id", postgresql.UUID(as_uuid=True), nullable=False),
|
||||
sa.Column("node_order", sa.Integer(), nullable=False),
|
||||
sa.Column("role", sa.String(length=50), nullable=False),
|
||||
sa.Column("name", sa.String(length=100), nullable=True),
|
||||
sa.Column("is_required", sa.Boolean(), server_default="true", nullable=False),
|
||||
sa.Column("created_at", sa.DateTime(timezone=True), server_default=sa.text("now()"), nullable=False),
|
||||
sa.ForeignKeyConstraint(["template_id"], ["workflow_templates.id"]),
|
||||
sa.UniqueConstraint("template_id", "node_order", name="uq_workflow_nodes_order"),
|
||||
)
|
||||
|
||||
op.create_table(
|
||||
"version_workflows",
|
||||
sa.Column("id", postgresql.UUID(as_uuid=True), primary_key=True, nullable=False),
|
||||
sa.Column("document_id", postgresql.UUID(as_uuid=True), nullable=False),
|
||||
sa.Column("version_id", postgresql.UUID(as_uuid=True), nullable=False),
|
||||
sa.Column("template_id", postgresql.UUID(as_uuid=True), nullable=False),
|
||||
sa.Column("status", workflow_status, server_default="PENDING", nullable=False),
|
||||
sa.Column("current_node", sa.Integer(), nullable=True),
|
||||
sa.Column("submitted_by", postgresql.UUID(as_uuid=True), nullable=True),
|
||||
sa.Column("submitted_at", sa.DateTime(timezone=True), nullable=True),
|
||||
sa.Column("completed_at", sa.DateTime(timezone=True), nullable=True),
|
||||
sa.Column("created_at", sa.DateTime(timezone=True), server_default=sa.text("now()"), nullable=False),
|
||||
sa.Column("updated_at", sa.DateTime(timezone=True), server_default=sa.text("now()"), nullable=False),
|
||||
sa.ForeignKeyConstraint(["document_id"], ["documents.id"]),
|
||||
sa.ForeignKeyConstraint(["version_id"], ["document_versions.id"]),
|
||||
sa.ForeignKeyConstraint(["template_id"], ["workflow_templates.id"]),
|
||||
sa.ForeignKeyConstraint(["submitted_by"], ["users.id"]),
|
||||
sa.UniqueConstraint("version_id", name="uq_version_workflow_version"),
|
||||
)
|
||||
|
||||
op.create_table(
|
||||
"workflow_actions",
|
||||
sa.Column("id", postgresql.UUID(as_uuid=True), primary_key=True, nullable=False),
|
||||
sa.Column("workflow_id", postgresql.UUID(as_uuid=True), nullable=False),
|
||||
sa.Column("node_order", sa.Integer(), nullable=True),
|
||||
sa.Column("action", workflow_action_type, nullable=False),
|
||||
sa.Column("actor_id", postgresql.UUID(as_uuid=True), nullable=True),
|
||||
sa.Column("comment", sa.Text(), nullable=True),
|
||||
sa.Column("acted_at", sa.DateTime(timezone=True), server_default=sa.text("now()"), nullable=False),
|
||||
sa.ForeignKeyConstraint(["workflow_id"], ["version_workflows.id"]),
|
||||
sa.ForeignKeyConstraint(["actor_id"], ["users.id"]),
|
||||
)
|
||||
@@ -0,0 +1,41 @@
|
||||
"""migrate ae seriousness cn to roman numerals
|
||||
|
||||
Revision ID: 20260116_06
|
||||
Revises: 20260116_05
|
||||
Create Date: 2026-01-16 18:30:00.000000
|
||||
|
||||
"""
|
||||
from typing import Sequence, Union
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision: str = "20260116_06"
|
||||
down_revision: Union[str, None] = "20260116_05"
|
||||
branch_labels: Union[str, Sequence[str], None] = None
|
||||
depends_on: Union[str, Sequence[str], None] = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
conn = op.get_bind()
|
||||
conn.execute(
|
||||
sa.text(
|
||||
"""
|
||||
UPDATE adverse_events
|
||||
SET seriousness = CASE
|
||||
WHEN TRIM(seriousness) IN ('轻微', '轻度') THEN 'I'
|
||||
WHEN TRIM(seriousness) = '一般' THEN 'II'
|
||||
WHEN TRIM(seriousness) = '中度' THEN 'III'
|
||||
WHEN TRIM(seriousness) IN ('严重', '重度') THEN 'IV'
|
||||
WHEN TRIM(seriousness) = '危重' THEN 'V'
|
||||
ELSE seriousness
|
||||
END
|
||||
"""
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
pass
|
||||
@@ -0,0 +1,41 @@
|
||||
"""migrate ae seriousness enum strings to roman numerals
|
||||
|
||||
Revision ID: 20260116_07
|
||||
Revises: 20260116_06
|
||||
Create Date: 2026-01-16 19:00:00.000000
|
||||
|
||||
"""
|
||||
from typing import Sequence, Union
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision: str = "20260116_07"
|
||||
down_revision: Union[str, None] = "20260116_06"
|
||||
branch_labels: Union[str, Sequence[str], None] = None
|
||||
depends_on: Union[str, Sequence[str], None] = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
conn = op.get_bind()
|
||||
conn.execute(
|
||||
sa.text(
|
||||
"""
|
||||
UPDATE adverse_events
|
||||
SET seriousness = CASE
|
||||
WHEN TRIM(seriousness) = 'AESERIOUSNESS.I' THEN 'I'
|
||||
WHEN TRIM(seriousness) = 'AESERIOUSNESS.II' THEN 'II'
|
||||
WHEN TRIM(seriousness) = 'AESERIOUSNESS.III' THEN 'III'
|
||||
WHEN TRIM(seriousness) = 'AESERIOUSNESS.IV' THEN 'IV'
|
||||
WHEN TRIM(seriousness) = 'AESERIOUSNESS.V' THEN 'V'
|
||||
ELSE seriousness
|
||||
END
|
||||
"""
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
pass
|
||||
@@ -0,0 +1,41 @@
|
||||
"""migrate ae seriousness enum strings case-insensitive
|
||||
|
||||
Revision ID: 20260116_08
|
||||
Revises: 20260116_07
|
||||
Create Date: 2026-01-16 19:10:00.000000
|
||||
|
||||
"""
|
||||
from typing import Sequence, Union
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision: str = "20260116_08"
|
||||
down_revision: Union[str, None] = "20260116_07"
|
||||
branch_labels: Union[str, Sequence[str], None] = None
|
||||
depends_on: Union[str, Sequence[str], None] = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
conn = op.get_bind()
|
||||
conn.execute(
|
||||
sa.text(
|
||||
"""
|
||||
UPDATE adverse_events
|
||||
SET seriousness = CASE
|
||||
WHEN UPPER(TRIM(seriousness)) = 'AESERIOUSNESS.I' THEN 'I'
|
||||
WHEN UPPER(TRIM(seriousness)) = 'AESERIOUSNESS.II' THEN 'II'
|
||||
WHEN UPPER(TRIM(seriousness)) = 'AESERIOUSNESS.III' THEN 'III'
|
||||
WHEN UPPER(TRIM(seriousness)) = 'AESERIOUSNESS.IV' THEN 'IV'
|
||||
WHEN UPPER(TRIM(seriousness)) = 'AESERIOUSNESS.V' THEN 'V'
|
||||
ELSE seriousness
|
||||
END
|
||||
"""
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
pass
|
||||
Reference in New Issue
Block a user