From aa5bab9f272cd53bd3404e4c35d2e0ce7014cdb1 Mon Sep 17 00:00:00 2001 From: "shimoda.m@nds-tyo.co.jp" Date: Mon, 21 Aug 2023 18:15:49 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20DB=E5=A4=9A=E9=87=8D=E6=8E=A5=E7=B6=9A?= =?UTF-8?q?=E6=99=82=E3=81=AB=E8=A4=87=E6=95=B0=E3=82=B9=E3=83=AC=E3=83=83?= =?UTF-8?q?=E3=83=89=E3=81=8C=E5=87=BA=E6=9D=A5=E4=B8=8A=E3=81=8C=E3=81=A3?= =?UTF-8?q?=E3=81=A6=E3=81=97=E3=81=BE=E3=81=86=E5=95=8F=E9=A1=8C=E3=81=AE?= =?UTF-8?q?=E5=AF=BE=E5=87=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecs/jskult-webapp/src/core/__init__.py | 0 ecs/jskult-webapp/src/core/tasks.py | 21 ------------------- ecs/jskult-webapp/src/db/tasks.py | 14 ------------- ecs/jskult-webapp/src/depends/database.py | 11 +--------- ecs/jskult-webapp/src/main.py | 5 ----- .../src/router/session_router.py | 17 +++++++++++++-- 6 files changed, 16 insertions(+), 52 deletions(-) delete mode 100644 ecs/jskult-webapp/src/core/__init__.py delete mode 100644 ecs/jskult-webapp/src/core/tasks.py delete mode 100644 ecs/jskult-webapp/src/db/tasks.py diff --git a/ecs/jskult-webapp/src/core/__init__.py b/ecs/jskult-webapp/src/core/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ecs/jskult-webapp/src/core/tasks.py b/ecs/jskult-webapp/src/core/tasks.py deleted file mode 100644 index 93f4c8f5..00000000 --- a/ecs/jskult-webapp/src/core/tasks.py +++ /dev/null @@ -1,21 +0,0 @@ -"""FastAPIサーバーの起動・終了イベントのラッパー""" - -from typing import Callable - -from fastapi import FastAPI - -from src.db.tasks import close_db, init_db - - -def create_start_app_handler(app: FastAPI) -> Callable: - def start_app() -> None: - init_db(app) - - return start_app - - -def create_stop_app_handler(app: FastAPI) -> Callable: - def stop_app() -> None: - close_db(app) - - return stop_app diff --git a/ecs/jskult-webapp/src/db/tasks.py b/ecs/jskult-webapp/src/db/tasks.py deleted file mode 100644 index da1a6fdc..00000000 --- a/ecs/jskult-webapp/src/db/tasks.py +++ /dev/null @@ -1,14 +0,0 @@ -from fastapi import FastAPI - -from src.db.database import Database - - -def init_db(app: FastAPI) -> None: - # DB接続モジュールを初期化 - database = Database.get_instance() - # FastAPI App内で使える変数として追加 - app.state._db = database - - -def close_db(app: FastAPI) -> None: - app.state._db = None diff --git a/ecs/jskult-webapp/src/depends/database.py b/ecs/jskult-webapp/src/depends/database.py index c5b28042..65a8a967 100644 --- a/ecs/jskult-webapp/src/depends/database.py +++ b/ecs/jskult-webapp/src/depends/database.py @@ -1,17 +1,8 @@ -from typing import Callable, Type - -from fastapi import Depends from starlette.requests import Request from src.db.database import Database -from src.repositories.base_repository import BaseRepository def get_database(request: Request) -> Database: + # medaca_routerでDB接続エンジンが初期化される return request.app.state._db - - -def get_repository(Repo_type: Type[BaseRepository]) -> Callable: - def get_repo(db: Database = Depends(get_database)) -> Type[BaseRepository]: - return Repo_type(db) - return get_repo diff --git a/ecs/jskult-webapp/src/main.py b/ecs/jskult-webapp/src/main.py index c63fcb58..6ed9e6da 100644 --- a/ecs/jskult-webapp/src/main.py +++ b/ecs/jskult-webapp/src/main.py @@ -7,7 +7,6 @@ from starlette import status import src.static as static from src.controller import (bio, bio_download, healthcheck, login, logout, master_mainte, menu, root, ultmarc) -from src.core import tasks from src.error.exception_handler import http_exception_handler from src.error.exceptions import UnexpectedException @@ -41,7 +40,3 @@ app.add_exception_handler(status.HTTP_403_FORBIDDEN, http_exception_handler) # サーバーエラーが発生した場合のハンドラー。HTTPExceptionではハンドリングできないため、個別に設定 app.add_exception_handler(UnexpectedException, http_exception_handler) - -# サーバー起動・終了イベントを登録 -app.add_event_handler('startup', tasks.create_start_app_handler(app)) -app.add_event_handler('shutdown', tasks.create_stop_app_handler(app)) diff --git a/ecs/jskult-webapp/src/router/session_router.py b/ecs/jskult-webapp/src/router/session_router.py index 324c777f..a5ae4b64 100644 --- a/ecs/jskult-webapp/src/router/session_router.py +++ b/ecs/jskult-webapp/src/router/session_router.py @@ -5,6 +5,7 @@ from fastapi.exceptions import HTTPException from fastapi.routing import APIRoute from starlette import status +from src.db.database import Database from src.depends.auth import (check_session_expired, get_current_session, verify_session) from src.error.exceptions import DBException, UnexpectedException @@ -75,6 +76,18 @@ class MeDaCaRoute(APIRoute): return response +class PrepareDatabaseRoute(MeDaCaRoute): + """事前処理として、データベースのエンジンを作成するルートハンドラー + Args: + MeDaCaRoute (MeDaCaRoute): 共通ルートハンドラー + """ + async def pre_process_route(self, request: Request): + request = await super().pre_process_route(request) + # DBエンジンを構築して状態にセット + request.app.state._db = Database.get_instance() + return request + + class BeforeCheckSessionRoute(MeDaCaRoute): """事前処理として、セッションチェックを行うルートハンドラー @@ -97,11 +110,11 @@ class BeforeCheckSessionRoute(MeDaCaRoute): return session_request -class AfterSetCookieSessionRoute(MeDaCaRoute): +class AfterSetCookieSessionRoute(PrepareDatabaseRoute): """事後処理として、セッションキーをcookieに設定するカスタムルートハンドラー Args: - MeDaCaRoute (MeDaCaRoute): 共通ルートハンドラー + PrepareDatabaseRoute (PrepareDatabaseRoute): DBチェックハンドラー """ async def post_process_route(self, request: Request, response: Response): response = await super().post_process_route(request, response)