SterBase
Операции

CRUD

Чтение

Менеджер получает логический запрос и возвращает типизированный результат. Проверяйте success, используйте next_cursor и has_more, задавайте явный limit. Для полного документа используйте get; для шапки — get_header.

Успешный поиск без найденного объекта отличается от ошибки: lookup содержит found.

Создание и запись

DocumentManager::save выбирает ObjectCommandKind::create для нового объекта и save для существующего. Нужны корректная типизированная identity, полный агрегат и фабрика контекста изменения.

У нового документа provider identity может быть пустой при корректной типизированной принадлежности: канонический идентификатор выделяется в команде создания. Самостоятельно конструировать storage token не нужно.

ObjectMutationContext включает session_id, principal_id, correlation_id, idempotency_key, request_sequence. Их выдаёт интеграция хоста.

Удаление

Действие Интерфейс
Пометить set_delete_mark(object, true)
Снять пометку set_delete_mark(object, false)
Пометить через общий метод remove(object, false)
Физически удалить remove(object, true)

Физическое удаление документа требует сохранённый загруженный объект с ненулевой ревизией. Пометка и физическое удаление — разные команды жизненного цикла.

Результат и ошибки

После изменения проверяйте ObjectCommandResult, включая committed и reconciliation_required. При неизвестном исходе сначала восстановите фактическое состояние чтением; не отправляйте автоматически вторую запись.

Диагностические статусы менеджера: provider-unavailable, mutation-context-unavailable, document-reference-invalid, document-save-complete-aggregate-required. Подробность находится в error.

Практическая проверка — одна запись и повторное чтение того же объекта. Наличие метода не доказывает завершённость CRUD для всех метаданных и провайдеров.