Initial commit
This commit is contained in:
@@ -0,0 +1 @@
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from functools import lru_cache
|
||||
|
||||
from sqlalchemy import create_engine, text
|
||||
from sqlalchemy.orm import Session, sessionmaker
|
||||
|
||||
from app.core.config import get_settings
|
||||
|
||||
|
||||
@lru_cache
|
||||
def get_engine():
|
||||
settings = get_settings()
|
||||
return create_engine(
|
||||
settings.mysql_dsn,
|
||||
pool_pre_ping=True,
|
||||
future=True,
|
||||
)
|
||||
|
||||
|
||||
SessionLocal = sessionmaker(bind=get_engine(), autoflush=False, autocommit=False, future=True)
|
||||
|
||||
|
||||
def get_db() -> Session:
|
||||
db = SessionLocal()
|
||||
try:
|
||||
yield db
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
|
||||
def check_database_health() -> dict[str, object]:
|
||||
settings = get_settings()
|
||||
with get_engine().connect() as conn:
|
||||
current_db = conn.execute(text("SELECT DATABASE()")).scalar()
|
||||
version = conn.execute(text("SELECT VERSION()")).scalar()
|
||||
table_count = conn.execute(
|
||||
text(
|
||||
"""
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.tables
|
||||
WHERE table_schema = :schema_name
|
||||
"""
|
||||
),
|
||||
{"schema_name": settings.mysql_database},
|
||||
).scalar()
|
||||
return {
|
||||
"connected": True,
|
||||
"database": current_db,
|
||||
"version": version,
|
||||
"table_count": int(table_count or 0),
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user