Spaces:
Sleeping
Sleeping
| #!/usr/bin/env python3 | |
| """ | |
| Database Initialization Script | |
| Run this once to create all tables and seed default data. | |
| Usage: | |
| python -m scripts.init_db | |
| # or from backend root: | |
| python scripts/init_db.py | |
| """ | |
| import logging | |
| import os | |
| import sys | |
| # Add the parent directory to path so app imports work | |
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | |
| logging.basicConfig(level=logging.INFO) | |
| logger = logging.getLogger(__name__) | |
| def main(): | |
| logger.info("Starting MiningNiti database initialization...") | |
| try: | |
| from app.config import settings | |
| from app.db.session import check_db_connection, engine, init_db | |
| # Check connection | |
| logger.info(f"Connecting to database...") | |
| if not check_db_connection(): | |
| logger.error("❌ Cannot connect to database. Check your DATABASE_URL.") | |
| sys.exit(1) | |
| logger.info("✅ Database connection OK") | |
| # Try to enable pgvector extension | |
| try: | |
| from sqlalchemy import text | |
| with engine.connect() as conn: | |
| conn.execute(text("CREATE EXTENSION IF NOT EXISTS vector")) | |
| conn.commit() | |
| logger.info("✅ pgvector extension enabled") | |
| except Exception as e: | |
| logger.warning(f"⚠️ Could not enable pgvector extension: {e}") | |
| logger.warning( | |
| " Vector search will not work. Install pgvector or use Supabase." | |
| ) | |
| # Create all tables | |
| logger.info("Creating database tables...") | |
| init_db() | |
| logger.info("✅ All tables created successfully") | |
| # Verify tables exist | |
| from sqlalchemy import inspect | |
| inspector = inspect(engine) | |
| tables = inspector.get_table_names() | |
| logger.info(f"✅ Tables in database: {', '.join(sorted(tables))}") | |
| logger.info("\n🚀 MiningNiti database is ready!") | |
| except Exception as e: | |
| logger.error(f"❌ Initialization failed: {e}") | |
| import traceback | |
| traceback.print_exc() | |
| sys.exit(1) | |
| if __name__ == "__main__": | |
| main() | |