Skip to content

intégrer SQLAlchemy + Alembic et centraliser l'accès DB (surcouche CRUD) #59

Description

@Nicolas-Dmb

📋 Description

Adopter SQLAlchemy 2.0 comme couche d'accès DB standard du backend, migrer la
définition du schéma (infra/postgres/init) vers Alembic, et fournir une surcouche
simple pour instancier la DB et faire du CRUD sans réécrire de SQL à chaque table.

Contexte / impact

  • Décision d'équipe : SQLAlchemy = source de vérité du schéma (Option B).
  • ⚠️ Impacte la tâche Init DB (le SQL versionné migre dans Alembic).
  • ⚠️ Impacte la tâche 5.3 Package clients (clients/db.py).
  • Driver : psycopg 3 (postgresql+psycopg://). Géométrie : GeoAlchemy2.

✅ Acceptance Criteria

  • session_scope() fonctionne en dev (Docker) et prod (local)
  • Migration Alembic recrée un schéma identique à l'existant (mêmes contraintes/index GIST)
  • UPSERT idempotent vérifié (re-run sans doublon) sur zones_hex
  • Aucun accès DB direct hors packages/clients
  • Aucun secret en dur ; erreurs de connexion loguées (JSON)
  • Doc courte : init DB (Alembic), usage de la surcouche, exemple CRUD
  • Batch massif documenté (COPY en réserve, non requis pour le MVP)
  • Y ajouter la requête de generate_h3_grid ( commentaire todo dans le fichier)
  • Ajouter à la doc Notion (le vrai format de la db, l'impl de slqAlchemy)
  • Gestion des erreurs (connexion et appels DB, log + erreur personnalisé)

🔗 Prerequisite Issues

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions