Files
ChatBot/database/flask_integration.py
2025-10-03 15:03:18 +02:00

38 lines
1.2 KiB
Python

import logging
from flask import g, current_app
from .interface import DatabaseInterface
logger = logging.getLogger(__name__)
class FlaskDatabaseManager:
"""Flask-Integration für Thread-Safe Database Management"""
def __init__(self, database_factory_func):
self.database_factory_func = database_factory_func
def get_db(self) -> DatabaseInterface:
"""
Holt die Datenbank-Instanz für den aktuellen Request
Verwendet Flask's 'g' object für request-lokale Speicherung
"""
if 'database' not in g:
g.database = self.database_factory_func()
g.database.connect()
g.database.create_user_table()
logger.debug("Database instance created for request")
return g.database
def close_db(self, error=None):
"""
Schließt die Datenbank-Verbindung am Ende des Requests
"""
database = g.pop('database', None)
if database is not None:
database.disconnect()
logger.debug("Database connection closed for request")
def init_app(self, app):
"""Registriert die Database-Manager-Funktionen bei Flask"""
app.teardown_appcontext(self.close_db)