"""Helpers partagés par les routers CRUD.""" import uuid from fastapi import HTTPException from sqlalchemy import delete from sqlmodel import Session def owned_or_404(instance, edition_id: uuid.UUID): """404 si l'instance est absente ou rattachée à une autre édition.""" if instance is None or instance.edition_id != edition_id: raise HTTPException(status_code=404, detail={"code": "error.not_found"}) return instance def replace_links( session: Session, link_model, *, filter_column, filter_value, pairs ) -> None: """Remplace toutes les lignes d'une table d'association pour une clé.""" session.execute( delete(link_model).where(filter_column == filter_value) ) for row in pairs: session.add(link_model(**row))