gmao/migrations/versions/e6f0a1b2c3d4_unify_maintenance_rules.py
root b6c94b74d7
Some checks are pending
CI - Tests et Syntax / lint-and-test (push) Waiting to run
Unifie les règles et échéances de maintenance
2026-08-14 21:39:55 +00:00

34 lines
2 KiB
Python

"""Unifie les règles de maintenance dans les tâches de lot.
Revision ID: e6f0a1b2c3d4
Revises: d5e9f0a1b2c3
"""
from alembic import op
import sqlalchemy as sa
revision = "e6f0a1b2c3d4"
down_revision = "d5e9f0a1b2c3"
branch_labels = None
depends_on = None
def upgrade():
for name, column in [
("trigger_type", sa.Column("trigger_type", sa.String(20), nullable=False, server_default="calendar")),
("trigger_event", sa.Column("trigger_event", sa.String(80))),
("meter_threshold", sa.Column("meter_threshold", sa.Float())),
("season_start_month", sa.Column("season_start_month", sa.Integer())),
("season_end_month", sa.Column("season_end_month", sa.Integer())),
("advance_days", sa.Column("advance_days", sa.Integer(), nullable=False, server_default="0")),
("is_active", sa.Column("is_active", sa.Boolean(), nullable=False, server_default=sa.true())),
]: op.add_column("lot_tasks", column)
op.add_column("equipment_categories", sa.Column("recurrence_alert_enabled", sa.Boolean(), nullable=False, server_default=sa.false()))
op.add_column("equipment_categories", sa.Column("recurrence_threshold", sa.Integer(), nullable=False, server_default="3"))
op.add_column("equipment_categories", sa.Column("recurrence_window_days", sa.Integer(), nullable=False, server_default="365"))
op.add_column("contracts", sa.Column("visit_interval_days", sa.Integer()))
op.add_column("contracts", sa.Column("last_visit_date", sa.Date()))
op.add_column("contracts", sa.Column("next_visit_date", sa.Date()))
def downgrade():
for name in ("next_visit_date", "last_visit_date", "visit_interval_days"): op.drop_column("contracts", name)
for name in ("recurrence_window_days", "recurrence_threshold", "recurrence_alert_enabled"): op.drop_column("equipment_categories", name)
for name in ("is_active", "advance_days", "season_end_month", "season_start_month", "meter_threshold", "trigger_event", "trigger_type"): op.drop_column("lot_tasks", name)