SterBase
Разработка

Примеры

Ограниченная выборка

Менеджер и имя вида документа предоставляются хостом и метаданными. Пример не придумывает конкретный объект конфигурации.

#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.

Примеры сверены с заголовками. Это не доказательство выполнения на конкретной базе; самостоятельная сборка этих фрагментов здесь не проводилась.