27#include <kcenon/common/patterns/result.h>
35#ifdef PACS_WITH_DATABASE_SYSTEM
46using VoidResult = kcenon::common::VoidResult;
51struct prefetch_rule_query_options {
53 std::optional<client::prefetch_trigger>
trigger;
61struct prefetch_history_query_options {
63 std::optional<std::string>
rule_id;
64 std::optional<std::string>
status;
108class prefetch_repository {
145 [[nodiscard]] auto
save_rule(const client::prefetch_rule& rule) -> VoidResult;
154 -> std::optional<client::prefetch_rule>;
163 -> std::optional<client::prefetch_rule>;
171 [[nodiscard]] auto
find_rules(const prefetch_rule_query_options& options = {})
const
172 -> std::vector<client::prefetch_rule>;
180 -> std::vector<client::prefetch_rule>;
188 [[nodiscard]] auto
remove_rule(std::string_view rule_id) -> VoidResult;
196 [[nodiscard]] auto
rule_exists(std::string_view rule_id) const ->
bool;
220 std::string_view rule_id,
size_t count = 1) -> VoidResult;
228 [[nodiscard]] auto
enable_rule(std::string_view rule_id) -> VoidResult;
236 [[nodiscard]] auto
disable_rule(std::string_view rule_id) -> VoidResult;
248 [[nodiscard]] auto
save_history(const client::prefetch_history& history) -> VoidResult;
256 [[nodiscard]] auto
find_history(const prefetch_history_query_options& options = {})
const
257 -> std::vector<client::prefetch_history>;
289 std::string_view study_uid,
290 std::string_view status) -> VoidResult;
310 [[nodiscard]] auto
rule_count() const ->
size_t;
335 [[nodiscard]] auto
is_valid() const noexcept ->
bool;
351 [[nodiscard]] auto map_row_to_rule(const database_row& row) const
352 -> client::prefetch_rule;
353 [[nodiscard]] auto map_row_to_history(const database_row& row) const
354 -> client::prefetch_history;
356 const std::vector<std::
string>& modalities) -> std::
string;
358 std::string_view json) -> std::vector<std::
string>;
360 const std::vector<std::
string>& node_ids) -> std::
string;
362 std::string_view json) -> std::vector<std::
string>;
363 [[nodiscard]] auto parse_timestamp(const std::
string& str) const
364 -> std::chrono::system_clock::time_point;
365 [[nodiscard]] auto format_timestamp(
366 std::chrono::system_clock::time_point tp) const -> std::
string;
368 std::shared_ptr<pacs_database_adapter>
db_;
388using VoidResult = kcenon::common::VoidResult;
395 std::optional<client::prefetch_trigger>
trigger;
425 [[nodiscard]] auto
save_rule(const client::prefetch_rule& rule) -> VoidResult;
427 -> std::optional<client::prefetch_rule>;
429 -> std::optional<client::prefetch_rule>;
431 -> std::vector<client::prefetch_rule>;
433 -> std::vector<client::prefetch_rule>;
434 [[nodiscard]] auto
remove_rule(std::string_view rule_id) -> VoidResult;
435 [[nodiscard]] auto
rule_exists(std::string_view rule_id) const ->
bool;
440 std::string_view rule_id,
size_t count = 1) -> VoidResult;
441 [[nodiscard]] auto
enable_rule(std::string_view rule_id) -> VoidResult;
442 [[nodiscard]] auto
disable_rule(std::string_view rule_id) -> VoidResult;
445 [[nodiscard]] auto
save_history(const client::prefetch_history& history) -> VoidResult;
447 -> std::vector<client::prefetch_history>;
452 std::string_view study_uid, std::string_view status) -> VoidResult;
457 [[nodiscard]] auto
rule_count() const ->
size_t;
462 [[nodiscard]] auto
is_valid() const noexcept ->
bool;
466 [[nodiscard]] auto
parse_rule_row(
void* stmt) const -> client::prefetch_rule;
467 [[nodiscard]] auto
parse_history_row(
void* stmt) const -> client::prefetch_history;
469 const std::vector<std::
string>& modalities) -> std::
string;
471 std::string_view json) -> std::vector<std::
string>;
473 const std::vector<std::
string>& node_ids) -> std::
string;
475 std::string_view json) -> std::vector<std::
string>;
Repository for prefetch persistence (legacy SQLite interface)
auto find_history(const prefetch_history_query_options &options={}) const -> std::vector< client::prefetch_history >
auto find_rules(const prefetch_rule_query_options &options={}) const -> std::vector< client::prefetch_rule >
auto find_rule_by_pk(int64_t pk) const -> std::optional< client::prefetch_rule >
auto update_history_status(std::string_view study_uid, std::string_view status) -> VoidResult
auto count_completed_today() const -> size_t
prefetch_repository(sqlite3 *db)
auto rule_count() const -> size_t
auto count_failed_today() const -> size_t
auto find_enabled_rules() const -> std::vector< client::prefetch_rule >
auto enable_rule(std::string_view rule_id) -> VoidResult
auto save_history(const client::prefetch_history &history) -> VoidResult
auto cleanup_old_history(std::chrono::hours max_age) -> Result< size_t >
auto rule_exists(std::string_view rule_id) const -> bool
auto increment_triggered(std::string_view rule_id) -> VoidResult
auto history_count() const -> size_t
auto is_study_prefetched(std::string_view study_uid) const -> bool
static auto deserialize_node_ids(std::string_view json) -> std::vector< std::string >
auto parse_history_row(void *stmt) const -> client::prefetch_history
auto parse_rule_row(void *stmt) const -> client::prefetch_rule
auto save_rule(const client::prefetch_rule &rule) -> VoidResult
auto find_rule_by_id(std::string_view rule_id) const -> std::optional< client::prefetch_rule >
prefetch_repository(const prefetch_repository &)=delete
auto enabled_rule_count() const -> size_t
auto disable_rule(std::string_view rule_id) -> VoidResult
static auto serialize_node_ids(const std::vector< std::string > &node_ids) -> std::string
auto increment_studies_prefetched(std::string_view rule_id, size_t count=1) -> VoidResult
auto operator=(const prefetch_repository &) -> prefetch_repository &=delete
auto initialize_tables() -> VoidResult
static auto serialize_modalities(const std::vector< std::string > &modalities) -> std::string
auto is_valid() const noexcept -> bool
auto remove_rule(std::string_view rule_id) -> VoidResult
prefetch_repository(prefetch_repository &&) noexcept
static auto deserialize_modalities(std::string_view json) -> std::vector< std::string >
kcenon::common::Result< T > Result
Result type alias for operations returning a value.
Unified database adapter for PACS system.
Types and structures for prefetch manager.
Query options for listing prefetch history.
std::optional< std::string > rule_id
std::optional< std::string > status
std::optional< std::string > patient_id
Query options for listing prefetch rules.
std::optional< client::prefetch_trigger > trigger
std::optional< bool > enabled_only