# retoor 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()