Метод PATCH /v1/connector/{id_connector}/configuration-metadata

Краткое описание

Частично обновляет существующие метаданные конфигурации 1С для указанного коннектора. Позволяет обновить только те типы метаданных (справочники, документы, перечисления и т.д.), которые уже существуют. Требуется аутентификация (Depends(check_login_pass)).

Входные параметры

Параметры пути (обязательные):

  1. id_connector (string, IDConnectorPath)

    • Уникальный идентификатор коннектора

    • Коннектор должен существовать в системе

Тело запроса (JSON) — схема: ConfigurationMetadataUpdateSchema

  1. data (object, обязательный)

    • Словарь метаданных для обновления

    • Ключ: type (тип метаданных)

    • Значение: данные метаданных (любая JSON структура)

    • Пример:

      { "catalogs": { "Товары": {...}, "Контрагенты": {...} }, "documents": { "Счета-фактуры": {...} } }

Заголовки:

  1. Content-Type: application/json

  2. Authorization (опционально) — токен аутентификации

Алгоритм работы метода

ЭТАП 1: Парсинг параметра пути

  • Извлекается id_connector из URL

ЭТАП 2: Валидация тела запроса

  • Тело запроса валидируется по схеме ConfigurationMetadataUpdateSchema

  • Если валидация не пройдена — возвращается HTTP 400

ЭТАП 3: Формирование SQL запроса

  • Создаётся SELECT для поиска существующих метаданных:

    SELECT * FROM ConfigurationMetadataEntity WHERE id_connector = {id_connector} AND type IN ({entity_types})
  • entity_types — список типов из переданных данных

ЭТАП 4: Выполнение запроса поиска

  • db_session.exec(stmt).all() — получаются все совпадающие записи

  • Преобразуются в словарь: {type: entity, ...}

ЭТАП 5: Проверка существования

  • Если ни один тип не найден в БД — возвращается HTTP 404 Not Found

  • Ошибка: Configuration metadata entities not found

ЭТАП 6: Обновление существующих типов

  • Для каждого типа из передаваемых данных:

    • Если тип существует в БД (в db_entities):

      • Обновляется поле data с новыми значениями

      • Обновляется поле ecc_dt = datetime.now()

      • Добавляется в response_entities (для ответа)

      • Если тип НЕ существует в БД:

      • Добавляется в failed_types с сообщением Entity not found

      • НЕ создаётся новая запись (используйте PUT для создания)

ЭТАП 7: Сохранение изменений

db_session.add(db_entity) — добавляет обновлённые записи в сессию db_session.commit() — фиксирует все изменения в БД атомарно

ЭТАП 8: Возврат результата

  • Возвращается объект ConfigurationMetadataUpdateResponseSchema

  • Содержит:

    • id_connector — переданный идентификатор

    • data — словарь успешно обновленных типов

    • failed_types — словарь типов, которые не удалось обновить (не найдены)

Успешный ответ (200 OK)

  • Формат: JSON, схема ConfigurationMetadataUpdateResponseSchema