Program Listing for File BackendConcept.hpp
↰ Return to documentation for file (include\util\db\keyvalue\BackendConcept.hpp)
#pragma once
#include "util/common/Result.hpp"
#include "util/db/DbTypes.hpp"
#include <concepts>
#include <span>
#include <string_view>
#include <vector>
namespace PDJE_UTIL::db::keyvalue {
template <class Backend>
concept KeyValueBackendConcept = requires(typename Backend::config_type cfg,
Backend backend,
std::string_view key,
std::span<const std::byte> bytes,
std::string_view text) {
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_text(key) } -> std::same_as<common::Result<Text>>;
{ backend.get_bytes(key) } -> std::same_as<common::Result<Bytes>>;
{ backend.put_text(key, text) } -> std::same_as<common::Result<void>>;
{ backend.put_bytes(key, bytes) } -> std::same_as<common::Result<void>>;
{ backend.erase(key) } -> std::same_as<common::Result<void>>;
{ backend.list_keys(std::string_view {}) }
-> std::same_as<common::Result<std::vector<Key>>>;
};
} // namespace PDJE_UTIL::db::keyvalue