71 lines
3.7 KiB
Python
71 lines
3.7 KiB
Python
|
|
"""Relie le cycle de vie des équipements à la maintenance préventive.
|
||
|
|
|
||
|
|
Revision ID: a4b8c2d6e0f1
|
||
|
|
Revises: f1a2b3c4d5e6
|
||
|
|
"""
|
||
|
|
from alembic import op
|
||
|
|
import sqlalchemy as sa
|
||
|
|
|
||
|
|
|
||
|
|
revision = "a4b8c2d6e0f1"
|
||
|
|
down_revision = "f1a2b3c4d5e6"
|
||
|
|
branch_labels = None
|
||
|
|
depends_on = None
|
||
|
|
|
||
|
|
|
||
|
|
def upgrade():
|
||
|
|
op.add_column("equipment_categories", sa.Column("default_management_mode", sa.String(30), nullable=False, server_default="quantitatif"))
|
||
|
|
op.add_column("equipments", sa.Column("management_mode", sa.String(30)))
|
||
|
|
op.add_column("equipment_quantity_movements", sa.Column("movement_type", sa.String(30), nullable=False, server_default="transfert"))
|
||
|
|
|
||
|
|
op.add_column("lot_tasks", sa.Column("application_scope", sa.String(20), nullable=False, server_default="auto"))
|
||
|
|
op.add_column("lot_tasks", sa.Column("unavailable_policy", sa.String(20), nullable=False, server_default="suspend"))
|
||
|
|
op.add_column("lot_tasks", sa.Column("after_repair_policy", sa.String(20), nullable=False, server_default="preserve"))
|
||
|
|
op.add_column("lot_tasks", sa.Column("is_safety_critical", sa.Boolean(), nullable=False, server_default=sa.false()))
|
||
|
|
|
||
|
|
for name, column in [
|
||
|
|
("suspension_reason", sa.Column("suspension_reason", sa.String(500))),
|
||
|
|
("suspended_at", sa.Column("suspended_at", sa.DateTime())),
|
||
|
|
("room_name_snapshot", sa.Column("room_name_snapshot", sa.String(200))),
|
||
|
|
("lot_name_snapshot", sa.Column("lot_name_snapshot", sa.String(500))),
|
||
|
|
("equipment_name_snapshot", sa.Column("equipment_name_snapshot", sa.String(200))),
|
||
|
|
("lifecycle_status_snapshot", sa.Column("lifecycle_status_snapshot", sa.String(30))),
|
||
|
|
]:
|
||
|
|
op.add_column("scheduled_tasks", column)
|
||
|
|
|
||
|
|
op.create_table(
|
||
|
|
"equipment_lifecycle_events",
|
||
|
|
sa.Column("id", sa.BigInteger(), autoincrement=True, nullable=False),
|
||
|
|
sa.Column("equipment_id", sa.Integer(), nullable=False),
|
||
|
|
sa.Column("event_type", sa.String(40), nullable=False),
|
||
|
|
sa.Column("previous_status", sa.String(30)),
|
||
|
|
sa.Column("new_status", sa.String(30)),
|
||
|
|
sa.Column("quantity", sa.Integer(), nullable=False, server_default="1"),
|
||
|
|
sa.Column("reason", sa.String(500)),
|
||
|
|
sa.Column("room_id_snapshot", sa.Integer()),
|
||
|
|
sa.Column("room_name_snapshot", sa.String(200)),
|
||
|
|
sa.Column("lot_id_snapshot", sa.Integer()),
|
||
|
|
sa.Column("lot_name_snapshot", sa.String(500)),
|
||
|
|
sa.Column("intervention_id", sa.Integer()),
|
||
|
|
sa.Column("created_by_id", sa.Integer()),
|
||
|
|
sa.Column("created_at", sa.DateTime(), nullable=False),
|
||
|
|
sa.ForeignKeyConstraint(["equipment_id"], ["equipments.id"], ondelete="CASCADE"),
|
||
|
|
sa.ForeignKeyConstraint(["intervention_id"], ["interventions.id"], ondelete="SET NULL"),
|
||
|
|
sa.ForeignKeyConstraint(["created_by_id"], ["users.id"], ondelete="SET NULL"),
|
||
|
|
sa.PrimaryKeyConstraint("id"),
|
||
|
|
)
|
||
|
|
op.create_index("ix_equipment_lifecycle_events_equipment_id", "equipment_lifecycle_events", ["equipment_id"])
|
||
|
|
op.create_index("ix_equipment_lifecycle_events_event_type", "equipment_lifecycle_events", ["event_type"])
|
||
|
|
op.create_index("ix_equipment_lifecycle_events_created_at", "equipment_lifecycle_events", ["created_at"])
|
||
|
|
|
||
|
|
|
||
|
|
def downgrade():
|
||
|
|
op.drop_table("equipment_lifecycle_events")
|
||
|
|
for name in ("lifecycle_status_snapshot", "equipment_name_snapshot", "lot_name_snapshot", "room_name_snapshot", "suspended_at", "suspension_reason"):
|
||
|
|
op.drop_column("scheduled_tasks", name)
|
||
|
|
for name in ("is_safety_critical", "after_repair_policy", "unavailable_policy", "application_scope"):
|
||
|
|
op.drop_column("lot_tasks", name)
|
||
|
|
op.drop_column("equipment_quantity_movements", "movement_type")
|
||
|
|
op.drop_column("equipments", "management_mode")
|
||
|
|
op.drop_column("equipment_categories", "default_management_mode")
|