feat: persister les événements de présence et activer les clés étrangères SQLite
Ajoute le modèle WorkplacePresenceEvent pour stocker les événements de présence reçus de Home Assistant, avec clé d'idempotence unique, lien vers une journée et, facultativement, une plage horaire. Active les contraintes de clés étrangères sur chaque connexion SQLite et documente le schéma dans l'onboarding. Couvre le tout par des tests de modèle et de factory. Co-authored-by: OpenAI/GPT-5.6-Luna-Pro <vibecoder@antoineve.me>
This commit is contained in:
@@ -24,6 +24,15 @@ from flask_sqlalchemy import SQLAlchemy
|
||||
db = SQLAlchemy()
|
||||
|
||||
|
||||
def _enable_sqlite_foreign_keys(dbapi_connection, connection_record):
|
||||
"""Active les contraintes de clés étrangères sur chaque connexion SQLite."""
|
||||
cursor = dbapi_connection.cursor()
|
||||
try:
|
||||
cursor.execute("PRAGMA foreign_keys=ON")
|
||||
finally:
|
||||
cursor.close()
|
||||
|
||||
|
||||
def _migrate_db(app):
|
||||
"""Applique les migrations de schéma manquantes de manière incrémentale (sans Alembic).
|
||||
|
||||
@@ -182,6 +191,9 @@ def create_app(
|
||||
app.config["HOME_ASSISTANT"] = get_home_assistant_config()
|
||||
|
||||
db.init_app(app)
|
||||
with app.app_context():
|
||||
if db.engine.dialect.name == "sqlite":
|
||||
sa.event.listen(db.engine, "connect", _enable_sqlite_foreign_keys)
|
||||
app.jinja_env.filters["date_fr"] = _date_fr
|
||||
app.jinja_env.filters["day_type_fr"] = _day_type_fr
|
||||
|
||||
|
||||
Reference in New Issue
Block a user