Spaces:
Running
Running
| import functools | |
| import os | |
| from sqlalchemy import create_engine | |
| from sqlalchemy.orm import sessionmaker | |
| from functools import wraps | |
| from sqlalchemy.exc import SQLAlchemyError | |
| from fastapi import HTTPException | |
| from sqlmodel import SQLModel | |
| from dotenv import load_dotenv | |
| from backend.common.config_loader import read_env | |
| def init_db(): | |
| db_url = read_env("DB_URL", "sqlite:///backend/records.db") | |
| engine = create_engine(db_url, connect_args={"check_same_thread": False}) | |
| SQLModel.metadata.create_all(engine) | |
| return sessionmaker(autocommit=False, autoflush=False, bind=engine) | |
| def get_db_session(): | |
| db_instance = init_db() | |
| return db_instance() | |
| def handle_database_errors(func): | |
| def wrapper(*args, **kwargs): | |
| session = None | |
| try: | |
| session = get_db_session() | |
| kwargs['session'] = session | |
| return func(*args, **kwargs) | |
| except Exception as e: | |
| print(f"Database error has occurred: {e}") | |
| raise | |
| finally: | |
| if session: | |
| session.close() | |
| return wrapper | |