23#include <kcenon/common/patterns/result.h>
31#ifdef PACS_WITH_DATABASE_SYSTEM
64 :
public base_repository<client::remote_node, std::string> {
84 [[nodiscard]] auto
find_by_pk(int64_t pk) -> result_type;
91 [[nodiscard]] auto find_all_nodes() -> list_result_type;
115 std::string_view node_id,
116 client::node_status status,
117 std::string_view error_message = "") -> VoidResult;
133 [[nodiscard]] auto map_row_to_entity(const database_row& row) const
134 -> client::remote_node override;
136 [[nodiscard]] auto entity_to_row(const client::remote_node& entity) const
137 -> std::map<std::
string, database_value> override;
139 [[nodiscard]] auto get_pk(const client::remote_node& entity) const
140 -> std::
string override;
142 [[nodiscard]] auto has_pk(const client::remote_node& entity) const
145 [[nodiscard]] auto select_columns() const
146 -> std::vector<std::
string> override;
149 [[nodiscard]] auto parse_timestamp(const std::
string& str) const
150 -> std::chrono::system_clock::time_point;
152 [[nodiscard]] auto format_timestamp(
153 std::chrono::system_clock::time_point tp) const -> std::
string;
168using VoidResult = kcenon::common::VoidResult;
187 [[nodiscard]] auto
upsert(const client::remote_node& node) ->
Result<int64_t>;
188 [[nodiscard]] auto
find_by_id(std::string_view node_id) const
189 -> std::optional<client::remote_node>;
190 [[nodiscard]] auto
find_by_pk(int64_t pk) const
191 -> std::optional<client::remote_node>;
192 [[nodiscard]] auto
find_all() const -> std::vector<client::remote_node>;
193 [[nodiscard]] auto
find_by_status(client::node_status status) const
194 -> std::vector<client::remote_node>;
195 [[nodiscard]] auto
remove(std::string_view node_id) -> VoidResult;
196 [[nodiscard]] auto
exists(std::string_view node_id) const ->
bool;
197 [[nodiscard]] auto
count() const ->
size_t;
200 std::string_view node_id,
201 client::node_status status,
202 std::string_view error_message = "") -> VoidResult;
206 [[nodiscard]] auto
is_valid() const noexcept ->
bool;
209 [[nodiscard]] auto
parse_row(
void* stmt) const -> client::remote_node;
Generic base repository for CRUD operations.
Repository for remote node persistence (legacy SQLite interface)
node_repository(const node_repository &)=delete
auto find_by_status(client::node_status status) const -> std::vector< client::remote_node >
node_repository(sqlite3 *db)
auto is_valid() const noexcept -> bool
auto operator=(const node_repository &) -> node_repository &=delete
auto upsert(const client::remote_node &node) -> Result< int64_t >
auto update_last_verified(std::string_view node_id) -> VoidResult
auto remove(std::string_view node_id) -> VoidResult
auto parse_row(void *stmt) const -> client::remote_node
auto find_all() const -> std::vector< client::remote_node >
auto find_by_pk(int64_t pk) const -> std::optional< client::remote_node >
auto exists(std::string_view node_id) const -> bool
node_repository(node_repository &&) noexcept
auto count() const -> size_t
auto update_status(std::string_view node_id, client::node_status status, std::string_view error_message="") -> VoidResult
auto find_by_id(std::string_view node_id) const -> std::optional< client::remote_node >
kcenon::common::Result< T > Result
Result type alias for operations returning a value.
Remote PACS node data structures for client operations.