File size: 1,171 Bytes
09fa60b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/usr/bin/env python3
"""Initialize database with tables."""

import asyncio
import sys
from pathlib import Path

# Fix Windows console encoding
if sys.platform == "win32":
    import io
    sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace')
    sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8', errors='replace')

# Add parent directory to path
sys.path.insert(0, str(Path(__file__).parent.parent))

from app.db.database import init_db, engine
from app.db.models import Base
from app.core.logging import configure_logging
import structlog

logger = structlog.get_logger(__name__)


async def main():
    """Initialize database."""
    configure_logging()
    logger.info("initializing_database")
    
    try:
        await init_db()
        logger.info("database_initialized_successfully")
        print("[OK] Database initialized successfully!")
    except Exception as e:
        logger.error("database_initialization_failed", exc_info=e)
        print(f"[ERROR] Database initialization failed: {e}")
        sys.exit(1)


if __name__ == "__main__":
    asyncio.run(main())