Spaces:
Sleeping
Sleeping
| import logging | |
| from sqlmodel import Session, create_engine, SQLModel | |
| import os | |
| from dotenv import load_dotenv | |
| logger = logging.getLogger(__name__) | |
| load_dotenv() | |
| # Database setup | |
| DATABASE_URL = os.getenv("DATABASE_URL") | |
| if not DATABASE_URL: | |
| raise RuntimeError("DATABASE_URL is missing") | |
| logger.info(f"Connecting to database: {DATABASE_URL.replace('@', '[@]').replace(':', '[:]') if DATABASE_URL else 'None'}") | |
| engine = create_engine(DATABASE_URL, echo=True, pool_pre_ping=True) | |
| def create_db_and_tables(): | |
| """Create database tables""" | |
| logger.info("Creating database tables...") | |
| try: | |
| SQLModel.metadata.create_all(engine) | |
| logger.info("Database tables created successfully") | |
| except Exception as e: | |
| logger.error(f"Error creating database tables: {str(e)}") | |
| raise | |
| def get_session(): | |
| logger.debug("Opening database session") | |
| with Session(engine) as session: | |
| try: | |
| yield session | |
| except Exception as e: | |
| logger.error(f"Error in database session: {str(e)}") | |
| raise | |
| finally: | |
| logger.debug("Closing database session") |