mirror of
https://github.com/fromchat-messenger/web.git
synced 2026-09-22 19:15:08 +03:00
40 lines
1.0 KiB
Python
40 lines
1.0 KiB
Python
import os
|
|
from sqlalchemy.orm import sessionmaker
|
|
from sqlalchemy import create_engine
|
|
from constants import DATABASE_URL
|
|
|
|
# Ensure data directory exists
|
|
os.makedirs("data", exist_ok=True)
|
|
|
|
POOL_SIZE = int(os.getenv("DB_POOL_SIZE", "20"))
|
|
MAX_OVERFLOW = int(os.getenv("DB_MAX_OVERFLOW", "40"))
|
|
POOL_RECYCLE = int(os.getenv("DB_POOL_RECYCLE", "1800"))
|
|
POOL_TIMEOUT = int(os.getenv("DB_POOL_TIMEOUT", "30"))
|
|
|
|
POOL_CONFIG = {
|
|
"pool_size": POOL_SIZE,
|
|
"max_overflow": MAX_OVERFLOW,
|
|
"pool_recycle": POOL_RECYCLE,
|
|
"pool_timeout": POOL_TIMEOUT,
|
|
"pool_pre_ping": True,
|
|
}
|
|
|
|
engine_kwargs = {
|
|
"pool_size": POOL_SIZE,
|
|
"max_overflow": MAX_OVERFLOW,
|
|
"pool_recycle": POOL_RECYCLE,
|
|
"pool_pre_ping": True,
|
|
"pool_timeout": POOL_TIMEOUT,
|
|
}
|
|
|
|
connect_args = {}
|
|
if DATABASE_URL.startswith("sqlite"):
|
|
connect_args["check_same_thread"] = False
|
|
|
|
engine = create_engine(
|
|
DATABASE_URL,
|
|
connect_args=connect_args,
|
|
**engine_kwargs,
|
|
)
|
|
|
|
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) |