feat: добавлены настройки подключения к базе данных и зависимость для взаимодействия с базой данных
All checks were successful
Lint project / lint (push) Successful in 53s
All checks were successful
Lint project / lint (push) Successful in 53s
- Создан класс `DBSettings` в модуле `settings.py` для хранения параметров подключения к базе данных. - Добавлен класс `DBDependency` в модуль `db_dependency.py`, который управляет взаимодействием с асинхронной базой данных с использованием SQLAlchemy. - Обновлен модуль `__init__.py` для инициализации новых компонентов.
This commit is contained in:
parent
4e55c09b31
commit
083b588289
0
lkeep/core/core_dependency/__init__.py
Normal file
0
lkeep/core/core_dependency/__init__.py
Normal file
29
lkeep/core/core_dependency/db_dependency.py
Normal file
29
lkeep/core/core_dependency/db_dependency.py
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker, create_async_engine
|
||||||
|
|
||||||
|
|
||||||
|
class DBDependency:
|
||||||
|
"""
|
||||||
|
Класс для управления зависимостями базы данных, используя SQLAlchemy.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, db_url: str, db_echo: bool) -> 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._session_factory = async_sessionmaker(bind=self._engine, expire_on_commit=False, autocommit=False)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def db_session(self) -> async_sessionmaker[AsyncSession]:
|
||||||
|
"""
|
||||||
|
Декоратор для создания асинхронной сессии базы данных.
|
||||||
|
|
||||||
|
:returns: Возвращает фабрику асинхронных сессий.
|
||||||
|
:rtype: async_sessionmaker[AsyncSession]
|
||||||
|
"""
|
||||||
|
return self._session_factory
|
@ -3,6 +3,23 @@ from pydantic_settings import BaseSettings, SettingsConfigDict
|
|||||||
|
|
||||||
|
|
||||||
class DBSettings(BaseSettings):
|
class DBSettings(BaseSettings):
|
||||||
|
"""
|
||||||
|
Класс для настройки параметров подключения к базе данных.
|
||||||
|
|
||||||
|
:ivar db_name: Имя базы данных.
|
||||||
|
:type db_name: str
|
||||||
|
:ivar db_user: Логин пользователя для доступа к базе данных.
|
||||||
|
:type db_user: str
|
||||||
|
:ivar db_password: Пароль пользователя для доступа к базе данных. Значение хранится в зашифрованном виде.
|
||||||
|
:type db_password: SecretStr
|
||||||
|
:ivar db_host: Адрес хоста, на котором размещена база данных.
|
||||||
|
:type db_host: str
|
||||||
|
:ivar db_port: Порт, по которому осуществляется подключение к базе данных.
|
||||||
|
:type db_port: int
|
||||||
|
:ivar db_echo: Флаг для вывода отладочной информации о запросах к базе данных.
|
||||||
|
:type db_echo: bool
|
||||||
|
"""
|
||||||
|
|
||||||
db_name: str
|
db_name: str
|
||||||
db_user: str
|
db_user: str
|
||||||
db_password: SecretStr
|
db_password: SecretStr
|
||||||
@ -14,10 +31,23 @@ class DBSettings(BaseSettings):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def db_url(self):
|
def db_url(self):
|
||||||
|
"""
|
||||||
|
Свойство, возвращающее строку подключения к базе данных PostgreSQL.
|
||||||
|
|
||||||
|
:returns: Строка подключения к базе данных.
|
||||||
|
:rtype: str
|
||||||
|
"""
|
||||||
return f"postgresql+asyncpg://{self.db_user}:{self.db_password.get_secret_value()}@{self.db_host}:{self.db_port}/{self.db_name}"
|
return f"postgresql+asyncpg://{self.db_user}:{self.db_password.get_secret_value()}@{self.db_host}:{self.db_port}/{self.db_name}"
|
||||||
|
|
||||||
|
|
||||||
class Settings(BaseSettings):
|
class Settings(BaseSettings):
|
||||||
|
"""
|
||||||
|
Класс Settings используется для хранения настроек приложения.
|
||||||
|
|
||||||
|
:ivar db_settings: Экземпляр класса DBSettings, содержащий настройки базы данных.
|
||||||
|
:type db_settings: DBSettings
|
||||||
|
"""
|
||||||
|
|
||||||
db_settings: DBSettings = DBSettings()
|
db_settings: DBSettings = DBSettings()
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user