From a97894437aba7aa654745d93f1eb9c097ba91c44 Mon Sep 17 00:00:00 2001 From: Gilles Soulier Date: Sun, 24 May 2026 16:01:18 +0200 Subject: [PATCH] feat(todos): migration domains[], photo_path, gps_lat/lng --- .../alembic/versions/002_todo_improvements.py | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 backend/alembic/versions/002_todo_improvements.py diff --git a/backend/alembic/versions/002_todo_improvements.py b/backend/alembic/versions/002_todo_improvements.py new file mode 100644 index 0000000..682b3d6 --- /dev/null +++ b/backend/alembic/versions/002_todo_improvements.py @@ -0,0 +1,43 @@ +"""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")