44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
"""Améliorations todos : domains[], photo_path, gps_lat, gps_lng
|
|
|
|
Revision ID: 002
|
|
Revises: 001
|
|
Create Date: 2026-05-24
|
|
"""
|
|
from alembic import op
|
|
import sqlalchemy as sa
|
|
from sqlalchemy.dialects import postgresql
|
|
|
|
revision = "002"
|
|
down_revision = "001"
|
|
branch_labels = None
|
|
depends_on = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
# Ajouter colonne domains (ARRAY) — remplace domain (string unique)
|
|
op.add_column(
|
|
"items",
|
|
sa.Column("domains", postgresql.ARRAY(sa.String(50)), server_default=sa.text("'{}'::varchar[]"), nullable=False),
|
|
schema="todos",
|
|
)
|
|
# Migrer les données existantes : domain → domains[0]
|
|
op.execute("""
|
|
UPDATE todos.items
|
|
SET domains = ARRAY[domain]
|
|
WHERE domain IS NOT NULL
|
|
""")
|
|
# Garder la colonne domain pour compatibilité lecture (ne pas la supprimer)
|
|
# Elle sera ignorée côté applicatif
|
|
|
|
# Ajouter champs photo et GPS
|
|
op.add_column("items", sa.Column("photo_path", sa.Text), schema="todos")
|
|
op.add_column("items", sa.Column("gps_lat", sa.Float), schema="todos")
|
|
op.add_column("items", sa.Column("gps_lng", sa.Float), schema="todos")
|
|
|
|
|
|
def downgrade() -> None:
|
|
op.drop_column("items", "domains", schema="todos")
|
|
op.drop_column("items", "photo_path", schema="todos")
|
|
op.drop_column("items", "gps_lat", schema="todos")
|
|
op.drop_column("items", "gps_lng", schema="todos")
|