25#include <kcenon/common/patterns/result.h>
33#ifdef PACS_WITH_DATABASE_SYSTEM
42struct routing_rule_query_options {
75class routing_repository
76 :
public base_repository<client::routing_rule, std::string> {
97 [[nodiscard]] auto
find_by_pk(int64_t pk) -> result_type;
106 const routing_rule_query_options& options = {}) -> list_result_type;
126 [[nodiscard]]
auto update_priority(std::string_view rule_id,
int priority)
135 [[nodiscard]]
auto enable_rule(std::string_view rule_id) -> VoidResult;
143 [[nodiscard]]
auto disable_rule(std::string_view rule_id) -> VoidResult;
182 [[nodiscard]]
auto reset_statistics(std::string_view rule_id) -> VoidResult;
196 [[nodiscard]]
auto map_row_to_entity(
const database_row& row)
const
197 -> client::routing_rule
override;
199 [[nodiscard]]
auto entity_to_row(
const client::routing_rule& entity)
const
200 -> std::map<std::string, database_value>
override;
202 [[nodiscard]]
auto get_pk(
const client::routing_rule& entity)
const
203 -> std::string
override;
205 [[nodiscard]]
auto has_pk(
const client::routing_rule& entity)
const
208 [[nodiscard]]
auto select_columns() const
209 -> std::vector<std::
string> override;
212 [[nodiscard]] auto parse_timestamp(const std::
string& str) const
213 -> std::chrono::system_clock::time_point;
215 [[nodiscard]] auto format_timestamp(
216 std::chrono::system_clock::time_point tp) const -> std::
string;
218 [[nodiscard]] auto format_optional_timestamp(
219 const std::optional<std::chrono::system_clock::time_point>& tp) const
223 const std::vector<client::routing_condition>& conditions) -> std::
string;
226 -> std::vector<client::routing_condition>;
229 const std::vector<client::routing_action>& actions) -> std::
string;
232 -> std::vector<client::routing_action>;
247using VoidResult = kcenon::common::VoidResult;
276 [[nodiscard]] auto
save(const client::routing_rule& rule) -> VoidResult;
277 [[nodiscard]] auto
find_by_id(std::string_view rule_id) const
278 -> std::optional<client::routing_rule>;
279 [[nodiscard]] auto
find_by_pk(int64_t pk) const
280 -> std::optional<client::routing_rule>;
283 -> std::vector<client::routing_rule>;
285 -> std::vector<client::routing_rule>;
286 [[nodiscard]] auto
remove(std::string_view rule_id) -> VoidResult;
287 [[nodiscard]] auto
exists(std::string_view rule_id) const ->
bool;
289 [[nodiscard]] auto
update_priority(std::string_view rule_id,
int priority)
291 [[nodiscard]] auto
enable_rule(std::string_view rule_id) -> VoidResult;
292 [[nodiscard]] auto
disable_rule(std::string_view rule_id) -> VoidResult;
298 [[nodiscard]] auto
reset_statistics(std::string_view rule_id) -> VoidResult;
300 [[nodiscard]] auto
count() const ->
size_t;
302 [[nodiscard]] auto
is_valid() const noexcept ->
bool;
305 [[nodiscard]] auto
parse_row(
void* stmt) const -> client::routing_rule;
308 const std::vector<client::routing_condition>& conditions) -> std::
string;
311 -> std::vector<client::routing_condition>;
314 const std::vector<client::routing_action>& actions) -> std::
string;
317 -> std::vector<client::routing_action>;
Generic base repository for CRUD operations.
Repository for routing rule persistence (legacy SQLite interface)
auto save(const client::routing_rule &rule) -> VoidResult
routing_repository(const routing_repository &)=delete
auto disable_rule(std::string_view rule_id) -> VoidResult
auto exists(std::string_view rule_id) const -> bool
static auto serialize_conditions(const std::vector< client::routing_condition > &conditions) -> std::string
routing_repository(routing_repository &&) noexcept
routing_repository(sqlite3 *db)
auto remove(std::string_view rule_id) -> VoidResult
auto find_by_id(std::string_view rule_id) const -> std::optional< client::routing_rule >
auto find_rules(const routing_rule_query_options &options={}) const -> std::vector< client::routing_rule >
auto count_enabled() const -> size_t
auto operator=(const routing_repository &) -> routing_repository &=delete
auto is_valid() const noexcept -> bool
auto parse_row(void *stmt) const -> client::routing_rule
auto reset_statistics(std::string_view rule_id) -> VoidResult
auto find_by_pk(int64_t pk) const -> std::optional< client::routing_rule >
static auto deserialize_actions(std::string_view json) -> std::vector< client::routing_action >
static auto deserialize_conditions(std::string_view json) -> std::vector< client::routing_condition >
auto count() const -> size_t
static auto serialize_actions(const std::vector< client::routing_action > &actions) -> std::string
auto increment_triggered(std::string_view rule_id) -> VoidResult
auto enable_rule(std::string_view rule_id) -> VoidResult
auto increment_failure(std::string_view rule_id) -> VoidResult
auto increment_success(std::string_view rule_id) -> VoidResult
auto update_priority(std::string_view rule_id, int priority) -> VoidResult
auto find_enabled_rules() const -> std::vector< client::routing_rule >
kcenon::common::Result< T > Result
Result type alias for operations returning a value.
Routing types and structures for auto-forwarding DICOM images.
Query options for listing routing rules.
size_t limit
Maximum results.
bool order_by_priority
Order by priority (desc)
std::optional< bool > enabled_only
Filter by enabled status.
size_t offset
Result offset for pagination.