beerds/server/main.py

65 lines
1.8 KiB
Python

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,
),
)