Initial commit: FastAPI app with Loguru, PostgreSQL, and Docker Compose

Made-with: Cursor
This commit is contained in:
Kevin
2026-04-20 17:58:03 +08:00
commit d1a3d029ec
15 changed files with 834 additions and 0 deletions

0
app/__init__.py Normal file
View File

18
app/config.py Normal file
View File

@@ -0,0 +1,18 @@
from pydantic_settings import BaseSettings, SettingsConfigDict
class Settings(BaseSettings):
"""Application configuration loaded from environment / .env."""
database_url: str = (
"postgresql+asyncpg://postgres:postgres@localhost:5432/operation_room"
)
model_config = SettingsConfigDict(
env_file=".env",
env_file_encoding="utf-8",
extra="ignore",
)
settings = Settings()

29
app/database.py Normal file
View File

@@ -0,0 +1,29 @@
from collections.abc import AsyncGenerator
from sqlalchemy import text
from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker, create_async_engine
from app.config import settings
engine = create_async_engine(
settings.database_url,
pool_pre_ping=True,
)
AsyncSessionLocal = async_sessionmaker(
engine,
class_=AsyncSession,
expire_on_commit=False,
autoflush=False,
autobegin=False,
)
async def get_db() -> AsyncGenerator[AsyncSession, None]:
async with AsyncSessionLocal() as session:
yield session
async def check_database() -> None:
async with engine.connect() as conn:
await conn.execute(text("SELECT 1"))