Files
RekomenciBackend/src/template_project/web_api/ioc/make.py
T
ivankirpichnikov 96e792b122 add pipline
2025-11-23 01:42:46 +03:00

53 lines
2.0 KiB
Python

from dishka import STRICT_VALIDATION, AsyncContainer, make_async_container
from dishka.integrations.fastapi import FastapiProvider
from template_project.web_api.configuration import (
AccessTokenConfiguration,
Configuration,
DatabaseConfiguration,
FirebaseConfiguration,
MlApiConfiguration,
S3Config,
ServerConfiguration,
YandexOAuthConfiguration,
)
from template_project.web_api.ioc.connection import ConnectionProvider
from template_project.web_api.ioc.cryptographer import CryptographerProvider
from template_project.web_api.ioc.data_gateway import DataGatewayProvider
from template_project.web_api.ioc.factory import FactoryProvider
from template_project.web_api.ioc.idp import IdPProvider
from template_project.web_api.ioc.interactor import InteractorProvider
from template_project.web_api.ioc.notifications import (
NotificationServiceProvider,
)
from template_project.web_api.ioc.oauth import OAuthClientProvider
from template_project.web_api.ioc.other import OtherProvider
from template_project.web_api.ioc.storage import StorageProvider
def make_ioc(configuration: Configuration) -> AsyncContainer:
return make_async_container(
IdPProvider(),
FactoryProvider(),
FastapiProvider(),
ConnectionProvider(),
InteractorProvider(),
DataGatewayProvider(),
CryptographerProvider(),
OAuthClientProvider(),
NotificationServiceProvider(),
StorageProvider(),
OtherProvider(),
validation_settings=STRICT_VALIDATION,
context={
ServerConfiguration: configuration.server,
DatabaseConfiguration: configuration.database,
AccessTokenConfiguration: configuration.access_token,
YandexOAuthConfiguration: configuration.yandex_oauth,
FirebaseConfiguration: configuration.firebase,
Configuration: configuration,
S3Config: configuration.s3,
MlApiConfiguration: configuration.ml_api,
},
)