52 lines
1.5 KiB
Python
Raw Normal View History

2026-07-23 01:15:04 +02:00
# retoor <retoor@molodetz.nl>
from __future__ import annotations
from contextlib import asynccontextmanager
from fastapi import FastAPI
from devplacepy_services.base.health import health_router
from devplacepy_services.base.http import shutdown_pool, startup_pool
from devplacepy_services.base.middleware import (
InternalAuthMiddleware,
InternalCallCounterMiddleware,
RequestStatsMiddleware,
SanitizeErrorsMiddleware,
)
from devplacepy_services.base.service import BaseMicroservice
from devplacepy_services.database import broker_setup
from devplacepy_services.database.routes import router as database_router
class DatabaseService(BaseMicroservice):
name = "database"
title = "Database"
default_port = 10601
workers = 1
stateful = True
depends_on = []
@asynccontextmanager
async def lifespan(self, app: FastAPI):
app.state.service_name = self.name
self.started_at = __import__("time").monotonic()
await startup_pool()
await broker_setup.startup()
yield
await broker_setup.shutdown()
await shutdown_pool()
def build_app(self):
app = self.create_app()
app.add_middleware(SanitizeErrorsMiddleware)
app.add_middleware(InternalAuthMiddleware)
app.add_middleware(InternalCallCounterMiddleware)
app.add_middleware(RequestStatsMiddleware)
app.include_router(health_router(self))
app.include_router(database_router)
return app
_service = DatabaseService()
app = _service.build_app()