"Refactor database schema for guest blueprint"

This commit is contained in:
2025-05-29 11:32:28 +02:00
parent 61630a97c6
commit 4e4d89b6aa
5 changed files with 505 additions and 295 deletions

View File

@@ -5,6 +5,7 @@ Datenbank-Migrationsskript für Guest-Requests, UserPermissions und Notification
import os
import sys
import sqlite3
from datetime import datetime
# Pfad zur App hinzufügen
@@ -15,6 +16,61 @@ from utils.logging_config import get_logger
logger = get_logger("migrate")
def column_exists(cursor, table_name, column_name):
"""Prüft, ob eine Spalte in einer Tabelle existiert."""
cursor.execute(f"PRAGMA table_info({table_name})")
columns = [row[1] for row in cursor.fetchall()]
return column_name in columns
def get_database_path():
"""Ermittelt den Pfad zur Datenbankdatei."""
db_path = os.path.join('database', 'app.db')
if not os.path.exists(db_path):
# Fallback für alternative Pfade
alternative_paths = [
'app.db',
'../database/app.db',
'./database/app.db'
]
for path in alternative_paths:
if os.path.exists(path):
db_path = path
break
return db_path
def migrate_guest_requests_table():
"""Migriert die guest_requests Tabelle für neue Spalten."""
db_path = get_database_path()
if not os.path.exists(db_path):
logger.warning(f"Datenbankdatei nicht gefunden: {db_path}")
return False
try:
conn = sqlite3.connect(db_path)
cursor = conn.cursor()
# Prüfen ob otp_used_at Spalte bereits existiert
if not column_exists(cursor, 'guest_requests', 'otp_used_at'):
cursor.execute("""
ALTER TABLE guest_requests
ADD COLUMN otp_used_at DATETIME
""")
logger.info("Spalte 'otp_used_at' zur guest_requests Tabelle hinzugefügt")
else:
logger.info("Spalte 'otp_used_at' existiert bereits")
conn.commit()
conn.close()
return True
except Exception as e:
logger.error(f"Fehler bei der Migration der guest_requests Tabelle: {str(e)}")
if 'conn' in locals():
conn.rollback()
conn.close()
return False
def main():
"""Führt die Datenbank-Migration aus."""
try:
@@ -23,6 +79,10 @@ def main():
# Datenbank initialisieren (erstellt neue Tabellen)
init_db()
# Spezifische Spalten-Migrationen
logger.info("Führe spezifische Tabellen-Migrationen aus...")
migrate_guest_requests_table()
logger.info("Datenbank-Migration erfolgreich abgeschlossen")
# Testen, ob die neuen Tabellen funktionieren