Program Listing for File BackendConcept.hpp
↰ Return to documentation for file (include\util\db\nearest\BackendConcept.hpp)
#pragma once
#include "util/common/Result.hpp"
#include "util/db/nearest/Types.hpp"
#include <concepts>
#include <span>
#include <string_view>
#include <vector>
namespace PDJE_UTIL::db::nearest {
template <class Backend>
concept NearestNeighborBackendConcept =
requires(typename Backend::config_type cfg,
Backend backend,
std::string_view key,
const Item &item,
std::span<const float> query,
SearchOptions options) {
typename Backend::config_type;
{ Backend::create(cfg) } -> std::same_as<common::Result<void>>;
{ Backend::destroy(cfg) } -> std::same_as<common::Result<void>>;
{ backend.open(cfg) } -> std::same_as<common::Result<void>>;
{ backend.close() } -> std::same_as<common::Result<void>>;
{ backend.contains(key) } -> std::same_as<common::Result<bool>>;
{ backend.get_item(key) } -> std::same_as<common::Result<Item>>;
{ backend.upsert_item(item) } -> std::same_as<common::Result<void>>;
{ backend.erase_item(key) } -> std::same_as<common::Result<void>>;
{ backend.search(query, options) }
-> std::same_as<common::Result<std::vector<SearchHit>>>;
{ backend.list_keys() } -> std::same_as<common::Result<std::vector<Key>>>;
};
} // namespace PDJE_UTIL::db::nearest