init commit. Skeleton prepared

This commit is contained in:
2025-08-08 19:48:03 +09:00
commit d58302c2c8
127 changed files with 1329 additions and 0 deletions

View File

View File

View File

@@ -0,0 +1,7 @@
from fastapi import APIRouter
router = APIRouter()
@router.get("/ping")
def ping():
return {"ping": "pong"}

View File

View File

@@ -0,0 +1,9 @@
from pydantic_settings import BaseSettings
class Settings(BaseSettings):
database_url: str | None = None
class Config:
env_prefix = ""
env_file = ".env"
case_sensitive = False

View File

View File

@@ -0,0 +1,26 @@
import os
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, DeclarativeBase
from typing import Generator
DEFAULT_DB_URL = "postgresql+psycopg2://postgres:postgres@postgres:5432/match_db"
class Base(DeclarativeBase):
pass
DATABASE_URL = os.getenv("DATABASE_URL", DEFAULT_DB_URL)
engine = create_engine(
DATABASE_URL,
pool_pre_ping=True,
future=True,
)
SessionLocal = sessionmaker(bind=engine, autoflush=False, autocommit=False)
def get_db() -> Generator:
db = SessionLocal()
try:
yield db
finally:
db.close()

View File

@@ -0,0 +1,11 @@
from fastapi import FastAPI
from .api.routes.ping import router as ping_router
app = FastAPI(title="MATCH Service")
@app.get("/health")
def health():
return {"status": "ok", "service": "match"}
# v1 API
app.include_router(ping_router, prefix="/v1")

View File

@@ -0,0 +1 @@
from app.db.session import Base # re-export for convenience

View File

@@ -0,0 +1,5 @@
from sqlalchemy.orm import Session
class BaseRepository:
def __init__(self, db: Session):
self.db = db

View File

@@ -0,0 +1,4 @@
from pydantic import BaseModel
class Message(BaseModel):
message: str

View File

@@ -0,0 +1,5 @@
from sqlalchemy.orm import Session
class BaseService:
def __init__(self, db: Session):
self.db = db