# /opt/docker/dev/service_finder/backend/app/workers/py_to_database.py import asyncio import importlib import os import sys from sqlalchemy import text from app.database import engine, Base # Biztosítjuk, hogy a Python látja az /app mappát sys.path.append("/app") async def sync_database(): print("\n" + "═"*60) print("🚀 SENTINEL DATABASE SYNC - MB2.0") print("═"*60) # 1. Sémák kényszerítése (hogy ne ezen bukjon el) async with engine.begin() as conn: for schema in ["data", "identity", "system", "audit"]: await conn.execute(text(f"CREATE SCHEMA IF NOT EXISTS {schema}")) print("✅ Sémák ellenőrizve.") # 2. Modellek importálása (Szabályos úton) # A diagnózis alapján ezek a fájlok biztosan ott vannak model_modules = [ "address", "audit", "document", "history", "legal", "organization", "security", "social", "system", "vehicle_definitions", "asset", "core_logic", "gamification", "identity", "logistics", "payment", "service", "staged_data", "translation" ] print(f"📂 Modellek betöltése...") for m in model_modules: try: # Ez a módszer regisztrálja a modult a sys.modules-ba importlib.import_module(f"app.models.{m}") print(f" 📦 [OK] app.models.{m}") except Exception as e: print(f" ⚠️ [INFO] app.models.{m} betöltése (vagy függősége) kihagyva: {e}") # 3. Fizikai szinkronizáció print(f"\n🏗️ Táblák létrehozása (Összesen: {len(Base.metadata.tables)} darab)...") async with engine.begin() as conn: # Ez a parancs hozza létre az összes hiányzó táblát await conn.run_sync(Base.metadata.create_all) print("\n" + "═"*60) print("✅ KÉSZ! Az adatbázis most már tartalmazza a System és Translation táblákat is.") print("═"*60) if __name__ == "__main__": asyncio.run(sync_database())