dta
dta copied to clipboard
refactor: edit DB layer with SQLAlchemy 2.0, migrate to uv
📌 Основные изменения
✅ Перевод проекта на uv вместо poetry
- Удалён
poetry.lockот Poetry и добавлен аналог от uvuv.lock -
pyproject.tomlпереписан под uv - Добавлен
requirements.txtдля возможности простой сборки
🧠 Рефактор моделей под SQLAlchemy 2.0
- Использование декларативного стиля SQLAlchemy 2.0 (Annotated Declarative Table Forms)
- Модуль моделей преобразован в полноценный пакет с
__init__.py - Упрощён и структурирован импорт моделей
🗃️ Новый пакет database
-
Новый модуль
database, инкапсулирующий взаимодействие с базами данных -
Подпакет
database.sqlalchemyсодержит:- Базовую модель и репозиторий efe0321e524e2acb507166e8db4b312d7f56b7a1
- Набор
TypeDecorator-ов вынесен в отдельный модуль 91c0a5f45619da97016805cd5cae45898d72d178 - Миксины (например,
TimestampMixin(1a4d4a5),IDRepositoryMixin(e0502f9)) - Обёртки для
sessionmaker,engineи пр. b379135e28c68edc60117964a529b625988f6d83 - Прокси класс
RepositoryProxyдля обратной совместимости f51e89004f0053847c02dcb89a6b7a5da6652ee2
🧩 Рефакторинг репозиториев
- Использование нового SQLAlchemy query builder API (
select(),update(),insert()и пр.) - Удаление использования контекстного менеджера внутри репозиториев
- Репозитории теперь принимают сущность класса
Sessionкак аргумент конструктора - Добавлен прокси-класс в
AppDatabase, поддерживающий старую логику и обеспечивающий плавный переход cdc827726f067b547121c96c6e71b4fa9a4c5830 - Полная поддержка транзакций и внешнего управления сессиями
- Улучшено покрытие тестами и читаемость
⚙️ Обратная совместимость
- Поддержана обратная совместимость через прокси-класс
🔍 Контекст
Этот рефактор направлен на упрощение архитектуры и улучшение гибкости системы управления базой данных, а также соответствие современным практикам SQLAlchemy 2.0. Он создаёт устойчивую основу для поддержки различных СУБД и более чистого, модульного кода.