66 lines
1.4 KiB
Python
66 lines
1.4 KiB
Python
from dataclasses import dataclass
|
||
from environs import Env
|
||
|
||
|
||
@dataclass
|
||
class DatabaseConfig:
|
||
database: str
|
||
host: str
|
||
user: str
|
||
password: str
|
||
|
||
|
||
@dataclass
|
||
class TgBot:
|
||
token: str
|
||
admin_ids: list[int]
|
||
superadmin: int
|
||
|
||
|
||
@dataclass
|
||
class TableSchemas:
|
||
main_table: str
|
||
main_table_cols: str
|
||
|
||
|
||
@dataclass
|
||
class ChatBot:
|
||
url: str
|
||
api_key: str
|
||
bot_model: str
|
||
|
||
|
||
@dataclass
|
||
class Config:
|
||
tg_bot: TgBot
|
||
db: DatabaseConfig
|
||
table: TableSchemas
|
||
chat_bot: ChatBot
|
||
|
||
|
||
def config_loader(path: str | None = None) -> Config:
|
||
env: Env = Env()
|
||
env.read_env(path)
|
||
# Загружаем конфигурацию из .env файла и возвращаем его экземпляром Config dataclass'а'
|
||
return Config(
|
||
tg_bot=TgBot(
|
||
token=env('BOT_TOKEN'),
|
||
admin_ids=list(map(int, env.list('ADMIN_IDS'))),
|
||
superadmin=env('superadmin')
|
||
),
|
||
db=DatabaseConfig(
|
||
database=env('DATABASE'),
|
||
host=env('DB_HOST'),
|
||
user=env('DB_USER'),
|
||
password=env('DB_PASSWORD')
|
||
),
|
||
table=TableSchemas(
|
||
main_table=env('MAIN_TABLE'),
|
||
main_table_cols=env('MAIN_TABLE_COLS'),
|
||
),
|
||
chat_bot=ChatBot(
|
||
url=env('CHAT_BOT_URL'),
|
||
api_key=env('CHAT_BOT_API_KEY'),
|
||
bot_model=env('BOT_MODEL')
|
||
)
|
||
) |