import asyncio from pathlib import Path import os import inject import markdown from litestar import ( Controller, get, post, MediaType, Litestar, ) from litestar.enums import RequestEncodingType from litestar.datastructures import UploadFile from litestar.params import Body from litestar.exceptions import HTTPException from litestar.contrib.jinja import JinjaTemplateEngine from litestar.template.config import TemplateConfig from litestar.response import Template from litestar.static_files import create_static_files_router from server.infra import logger from server.config import get_app_config from server.infra.web import BreedsController, DescriptionController, SeoController from server.infra.db import AsyncDB from server.modules.descriptions import CharactersService, Breed, CharactersRepository from server.modules.recognizer import RecognizerService, RecognizerRepository os.environ["CUDA_VISIBLE_DEVICES"] = "-1" loop = asyncio.new_event_loop() def inject_config(binder: inject.Binder): """initialization inject_config for server FastApi""" loop.run_until_complete(db.connect()) cnf = get_app_config() db = AsyncDB(cnf) binder.bind(RecognizerService, RecognizerService(RecognizerRepository())) binder.bind(CharactersService, CharactersService(CharactersRepository())) if __name__ == "__main__": inject.configure(inject_config) app = Litestar( debug=True, route_handlers=[ BreedsController, DescriptionController, SeoController, create_static_files_router(path="/static", directories=["server/static"]), ], template_config=TemplateConfig( directory=Path("server/templates"), engine=JinjaTemplateEngine, ), )