30 lines
2.3 KiB
Django/Jinja
30 lines
2.3 KiB
Django/Jinja
{%- set providers = [] -%}
|
|
{%- if database != 'none' %}{% set _ = providers.append('DbProvider()') %}{% endif -%}
|
|
{%- if dynamic_config %}{% set _ = providers.append('ConfigProvider()') %}{% endif -%}
|
|
{%- if database == 'postgres' %}{% set _ = providers.append('RepositoryProvider()') %}{% endif -%}
|
|
{%- if use_redis %}{% set _ = providers.append('RedisProvider()') %}{% endif -%}
|
|
{%- if use_llm %}{% set _ = providers.append('LlmProvider()') %}{% endif -%}
|
|
{%- if 'aiogram_bot' in backend_services %}{% set _ = providers.append('AiogramProvider()') %}{% endif -%}
|
|
{%- if 'api' in backend_services %}{% set _ = providers.append('FastapiProvider()') %}{% endif -%}
|
|
{%- set third = ['from dishka import make_async_container'] -%}
|
|
{%- if 'aiogram_bot' in backend_services %}{% set _ = third.append('from dishka.integrations.aiogram import AiogramProvider') %}{% endif -%}
|
|
{%- if 'api' in backend_services %}{% set _ = third.append('from dishka.integrations.fastapi import FastapiProvider') %}{% endif -%}
|
|
{%- set first = [] -%}
|
|
{%- if dynamic_config %}{% set _ = first.append('from dependencies.providers.config import ConfigProvider') %}{% endif -%}
|
|
{%- if database != 'none' %}{% set _ = first.append('from dependencies.providers.db import DbProvider') %}{% endif -%}
|
|
{%- if use_llm %}{% set _ = first.append('from dependencies.providers.llm import LlmProvider') %}{% endif -%}
|
|
{%- if use_redis %}{% set _ = first.append('from dependencies.providers.redis import RedisProvider') %}{% endif -%}
|
|
{%- if database == 'postgres' %}{% set _ = first.append('from dependencies.providers.repositories import RepositoryProvider') %}{% endif -%}
|
|
{%- set imports = (third | join('\n')) ~ (('\n\n' ~ (first | join('\n'))) if first else '') -%}
|
|
{%- set args = providers | join(', ') -%}
|
|
{%- set oneline = 'container = make_async_container(' ~ args ~ ')' -%}
|
|
{%- set hugged = 'container = make_async_container(\n ' ~ args ~ '\n)' -%}
|
|
{%- set indented = [] -%}
|
|
{%- for p in providers %}{% set _ = indented.append(' ' ~ p ~ ',') %}{% endfor -%}
|
|
{%- set exploded = 'container = make_async_container(\n' ~ (indented | join('\n')) ~ '\n)' -%}
|
|
{#- ruff-format order: one line, else all args on one continuation line, else one per line -#}
|
|
{%- set body = oneline if (oneline | length) <= 88 else (hugged if (args | length) + 4 <= 88 else exploded) -%}
|
|
{{ imports }}
|
|
|
|
{{ body }}
|