Skip to content

База данных и модели

Подключение

  • Движок: asyncpg, URL берётся из переменных окружения (.env).
  • ORM: SQLAlchemy Declarative (Base / BaseWithDates в src/database/register.py).
  • Сессии: async_session_maker, используется через dependency injection в FastAPI (get_async_session) либо через паттерн Unit of Work (src/utils/unitofwork.py).
  • Миграции: Alembic (alembic.ini, скрипт src/database/env.py).

Единственные репозитории

Паттерн репозиторий реализован только для системных сущностей (src/repositories/vendor.py):

Репозиторий Модель CRUD
AppRepository App add_one, find_all, find_one, get_one, edit_one
AccountRepository Account add_one, find_all, find_one, get_one, edit_one
InstallRepository Install add_one, find_all, find_one, get_one, edit_one

Данные конкретных приложений (правила, настройки) читаются/пишутся напрямую через ORM либо через SettingsStore (src/utils/database/settings.py).

Системные модели

Таблица Сущность Назначение
account Account Учётные записи пользователей МойСклад. Поля: id, uid, uuid, email.
app App Зарегистрированные приложения в маркетплейсе. Поля: id, uid, uuid, secret_key, default_status.
install Install Связь account ↔ app. Содержит access_token для доступа к аккаунту, статус установки (status), причину. Имеет one-to-one связи с таблицами настроек всех приложений.

Модели приложений

Таблица Приложение Поля и назначение
edocsuz-sync.sorochinsky edocsuz-sync Данные авторизации в ЭДО: login, password, token, last_login, login_error_reason, флаг применения по умолчанию, UUID папки товаров pf_uuid, список загруженных документов.
ei_data / ei_rule expenseitems Общие настройки и правила назначения статьи расходов. Правило: контрагент, проект, подстроки в комментарии/назначении платежа → статья расходов. Логические операнды: CONTAINS_ANYONE, CONTAINS_EVERYONE, NOT_CONTAINS_EVERYONE.
pl_data / pl_rule / pl_ap_rule payments-linking Общие настройки привязки платежей + правила 4 типов: по номерам, по маске, по контрагенту, счёт=проект.
prorder_data processingorder Привязка доп. полей заказа покупателя и производственного заказа.
sr_data salesreturn UUID статьи расходов «Возврат».
sp_data / sp_rule set-project Правила назначения проекта: проект + типы документов + контрагент + назначение платежа.
sprefix_data / sprefix_rule set-prefix Правила префикса номеров: тип документа + организация + префикс.
dft_data / dft_pos_table_settings doc-from-table Настройки Google-таблицы: колонки кода, количества, единиц измерения, тип создаваемого документа, техпроцесс, папка товаров.

SettingsStore

src/utils/database/settings.py — паттерн хранилища настроек для конкретной установки (account + app). Реализует CRUD для «правил» через UnitOfWork: - insert_or_update_rule / get_rule / get_rules - delete_rule / get_data / update_field

Используется сервисами set_prefix, payments_linking, expenseitems, set_project и др.