Program Listing for File BackendConcept.hpp
↰ Return to documentation for file (include\util\db\relational\BackendConcept.hpp)
#pragma once
#include "util/common/Result.hpp"
#include "util/db/relational/Types.hpp"
#include <concepts>
#include <string_view>
namespace PDJE_UTIL::db::relational {
template <class Backend>
concept RelationalBackendConcept = requires(typename Backend::config_type cfg,
Backend backend,
std::string_view sql,
const Params ¶ms) {
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.execute(sql, params) } -> std::same_as<common::Result<ExecResult>>;
{ backend.query(sql, params) } -> std::same_as<common::Result<QueryResult>>;
{ backend.begin_transaction() } -> std::same_as<common::Result<void>>;
{ backend.commit() } -> std::same_as<common::Result<void>>;
{ backend.rollback() } -> std::same_as<common::Result<void>>;
};
} // namespace PDJE_UTIL::db::relational