Files
service-finder/backend/app/workers/py_to_database.py
2026-03-10 07:34:01 +00:00

52 lines
1.9 KiB
Python

# /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())