refactor: улучшенная структура и настройки приложения

- Добавлен атрибут `secret_key` для хранения секретного ключа.
- Обновлён класс `Settings` с использованием `SecretStr`.
- Изменены параметры конструктора в классе `DBDependency`, теперь они инициализируются через настройки.
This commit is contained in:
proDream 2025-01-11 02:29:45 +04:00
parent b10286773a
commit 2520d49a2b
2 changed files with 9 additions and 7 deletions

View File

@ -1,21 +1,18 @@
from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker, create_async_engine
from lkeep.core.settings import settings
class DBDependency:
"""
Класс для управления зависимостями базы данных, используя SQLAlchemy.
"""
def __init__(self, db_url: str, db_echo: bool) -> None:
def __init__(self) -> None:
"""
Инициализирует экземпляр класса, отвечающего за взаимодействие с асинхронной базой данных.
:param db_url: URL для подключения к базе данных.
:type db_url: str
:param db_echo: Флаг, определяющий вывод подробных логов при взаимодействии с базой данных.
:type db_echo: bool
"""
self._engine = create_async_engine(url=db_url, echo=db_echo)
self._engine = create_async_engine(url=settings.db_settings.db_url, echo=settings.db_settings.db_echo)
self._session_factory = async_sessionmaker(bind=self._engine, expire_on_commit=False, autocommit=False)
@property

View File

@ -54,9 +54,14 @@ class Settings(BaseSettings):
:ivar db_settings: Экземпляр класса DBSettings, содержащий настройки базы данных.
:type db_settings: DBSettings
:ivar secret_key: Секретный ключ для шифрования
:type secret_key: SecretStr
"""
db_settings: DBSettings = DBSettings()
secret_key: SecretStr
model_config = SettingsConfigDict(env_file=".env", env_file_encoding="utf8", extra="ignore")
settings = Settings()