Разработка
Примеры
Ограниченная выборка
Менеджер и имя вида документа предоставляются хостом и метаданными. Пример не придумывает конкретный объект конфигурации.
#include <sterbase77/document_runtime.hpp>
sterbase77::document::DocumentSelection first_page(
sterbase77::document::DocumentManager& manager,
const std::wstring& metadata_name)
{
sterbase77::document::DocumentSelectionRequest request;
request.document = metadata_name;
request.limit = 50;
return manager.select(request);
}
Вызывающий код проверяет success. При has_more == true следующий запрос передаёт возвращённый next_cursor.
Сохранение с проверкой исхода
#include <sterbase77/document_runtime.hpp>
#include <utility>
enum class SaveOutcome { saved, reconcile, failed };
SaveOutcome save_document(
sterbase77::document::DocumentManager& manager,
sterbase77::object_runtime::DocumentObject document)
{
auto result = manager.save(std::move(document));
if (result.reconciliation_required) return SaveOutcome::reconcile;
if (result.success) return SaveOutcome::saved;
if (result.committed) return SaveOutcome::reconcile;
return SaveOutcome::failed;
}
Это фрагмент интеграции. Требуются корректный полный объект, runtime, фабрика контекста изменения и обработка status/error приложением. В состоянии reconcile повторная запись автоматически не выполняется.
Навигация без окон
#include <sterbase77/navigation_runtime.hpp>
std::vector<sterbase77::navigation::Entry> commands(
const sterbase77::navigation::INavigationRuntime& navigation)
{
return navigation.entries();
}
Команды содержат логические адреса, признак available и unavailable_reason. Для выполнения используется execute(address, request), для открытия объекта — open_reference.
Примеры сверены с заголовками. Это не доказательство выполнения на конкретной базе; самостоятельная сборка этих фрагментов здесь не проводилась.