#!/usr/bin/env python3 """ Create PostgreSQL database for Cosmo Usage: python scripts/create_db.py """ import asyncio import sys from pathlib import Path sys.path.insert(0, str(Path(__file__).parent.parent)) from app.config import settings import asyncpg import logging logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) async def main(): """Create database if it doesn't exist""" # Connect to postgres database (default database) try: conn = await asyncpg.connect( host=settings.database_host, port=settings.database_port, user=settings.database_user, password=settings.database_password, database="postgres", # Connect to default database ) # Check if database exists exists = await conn.fetchval( "SELECT 1 FROM pg_database WHERE datname = $1", settings.database_name ) if exists: logger.info(f"✓ Database '{settings.database_name}' already exists") else: # Create database await conn.execute(f'CREATE DATABASE {settings.database_name}') logger.info(f"✓ Database '{settings.database_name}' created successfully") await conn.close() except Exception as e: logger.error(f"✗ Failed to create database: {e}") logger.error("\nPlease ensure:") logger.error(" 1. PostgreSQL is running") logger.error(" 2. Database credentials in .env are correct") logger.error(f" 3. User '{settings.database_user}' has permission to create databases") sys.exit(1) if __name__ == "__main__": asyncio.run(main())