66
app/config.py
Normal file
66
app/config.py
Normal file
@@ -0,0 +1,66 @@
|
||||
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')
|
||||
)
|
||||
)
|
Reference in New Issue
Block a user