45 lines
2.0 KiB
Python
Executable File
45 lines
2.0 KiB
Python
Executable File
# /opt/docker/dev/service_finder/backend/app/init_db_direct.py
|
|
import asyncio
|
|
import logging
|
|
from sqlalchemy import text
|
|
from app.database import engine, Base
|
|
|
|
# 1. LOGIKA: Minden modell importálása
|
|
# Ez KRITIKUS: A SQLAlchemy Metadata csak akkor látja a táblákat, ha a Python
|
|
# értelmező már "találkozott" az osztályokkal.
|
|
from app.models.identity import User, Person, SocialAccount
|
|
from app.models.organization import Organization
|
|
from app.models.asset import Asset, AssetCatalog, AssetTelemetry
|
|
from app.models.service import ServiceProfile, ExpertiseTag, ServiceExpertise
|
|
from app.models.system import SystemParameter
|
|
from app.models.history import AuditLog
|
|
from app.models.security import PendingAction
|
|
from app.models.translation import Translation
|
|
from app.models.staged_data import ServiceStaging, DiscoveryParameter
|
|
from app.models.social import ServiceProvider, Vote, Competition, UserScore
|
|
|
|
logging.basicConfig(level=logging.INFO)
|
|
logger = logging.getLogger("DB-Initializer")
|
|
|
|
async def init_db():
|
|
logger.info("🚀 Adatbázis inicializálása indítva (MB2.0 Standard)...")
|
|
|
|
async with engine.begin() as conn:
|
|
# 2. LOGIKA: Sémák létrehozása
|
|
# SQLAlchemy nem hozza létre a sémákat automatikusan, ezt nekünk kell megtenni.
|
|
logger.info("📂 Sémák létrehozása (identity, data)...")
|
|
await conn.execute(text("CREATE SCHEMA IF NOT EXISTS identity;"))
|
|
await conn.execute(text("CREATE SCHEMA IF NOT EXISTS data;"))
|
|
|
|
# 3. LOGIKA: Táblák létrehozása
|
|
logger.info("🏗️ Táblák és kapcsolatok generálása a Metadata alapján...")
|
|
# Ez a run_sync hívás futtatja le a klasszikus szinkron create_all-t az aszinkron kapcsolaton
|
|
await conn.run_sync(Base.metadata.create_all)
|
|
|
|
logger.info("✅ Minden tábla sikeresen létrejött a megfelelő sémákban!")
|
|
|
|
if __name__ == "__main__":
|
|
try:
|
|
asyncio.run(init_db())
|
|
except Exception as e:
|
|
logger.error(f"❌ Hiba az inicializálás során: {e}") |