Aniworld/src/server/database/__init__.py
2025-12-10 21:12:34 +01:00

79 lines
2.0 KiB
Python

"""Database package for the Aniworld web application.
This package provides SQLAlchemy models, database connection management,
and session handling for persistent storage.
Modules:
- models: SQLAlchemy ORM models for anime series, episodes, download queue, and sessions
- connection: Database engine and session factory configuration
- base: Base class for all SQLAlchemy models
Usage:
from src.server.database import get_db_session, init_db
# Initialize database on application startup
init_db()
# Use in FastAPI endpoints
@app.get("/anime")
async def get_anime(db: AsyncSession = Depends(get_db_session)):
result = await db.execute(select(AnimeSeries))
return result.scalars().all()
"""
from src.server.database.base import Base
from src.server.database.connection import close_db, get_db_session, init_db
from src.server.database.init import (
CURRENT_SCHEMA_VERSION,
EXPECTED_TABLES,
check_database_health,
create_database_backup,
create_database_schema,
get_database_info,
get_schema_version,
initialize_database,
seed_initial_data,
validate_database_schema,
)
from src.server.database.models import (
AnimeSeries,
DownloadQueueItem,
Episode,
UserSession,
)
from src.server.database.service import (
AnimeSeriesService,
DownloadQueueService,
EpisodeService,
UserSessionService,
)
__all__ = [
# Base and connection
"Base",
"get_db_session",
"init_db",
"close_db",
# Initialization functions
"initialize_database",
"create_database_schema",
"validate_database_schema",
"get_schema_version",
"seed_initial_data",
"check_database_health",
"create_database_backup",
"get_database_info",
"CURRENT_SCHEMA_VERSION",
"EXPECTED_TABLES",
# Models
"AnimeSeries",
"Episode",
"DownloadQueueItem",
"UserSession",
# Services
"AnimeSeriesService",
"EpisodeService",
"DownloadQueueService",
"UserSessionService",
]