37 lines
No EOL
978 B
Python
37 lines
No EOL
978 B
Python
#!/usr/bin/env python3
|
|
"""
|
|
Initialize the inventory service database.
|
|
Creates all tables and performs initial setup.
|
|
"""
|
|
|
|
import asyncio
|
|
import logging
|
|
import os
|
|
import sqlalchemy as sa
|
|
from database import Base, DATABASE_URL, create_indexes
|
|
|
|
logging.basicConfig(level=logging.INFO)
|
|
logger = logging.getLogger(__name__)
|
|
|
|
async def init_database():
|
|
"""Initialize database tables and indexes."""
|
|
try:
|
|
# Create engine
|
|
engine = sa.create_engine(DATABASE_URL)
|
|
|
|
# Create all tables
|
|
logger.info("Creating database tables...")
|
|
Base.metadata.create_all(engine)
|
|
|
|
# Create indexes
|
|
logger.info("Creating performance indexes...")
|
|
create_indexes(engine)
|
|
|
|
logger.info("Database initialization completed successfully")
|
|
|
|
except Exception as e:
|
|
logger.error(f"Database initialization failed: {e}")
|
|
raise
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(init_database()) |