26#include <kcenon/common/patterns/result.h>
34#ifdef PACS_WITH_DATABASE_SYSTEM
43using VoidResult = kcenon::common::VoidResult;
71class viewer_state_repository {
94 [[nodiscard]] auto
save_state(const viewer_state_record& record) -> VoidResult;
103 -> std::optional<viewer_state_record>;
112 -> std::vector<viewer_state_record>;
120 [[nodiscard]] auto
search_states(const viewer_state_query& query) const
121 -> std::vector<viewer_state_record>;
129 [[nodiscard]] auto
remove_state(std::string_view state_id) -> VoidResult;
153 std::string_view user_id,
154 std::string_view study_uid) -> VoidResult;
164 std::string_view user_id,
165 size_t limit = 20) const -> std::vector<recent_study_record>;
192 [[nodiscard]] auto
is_valid() const noexcept ->
bool;
195 [[nodiscard]] auto map_row_to_state(const database_row& row) const
196 -> viewer_state_record;
197 [[nodiscard]] auto map_row_to_recent_study(const database_row& row) const
198 -> recent_study_record;
199 [[nodiscard]] auto parse_timestamp(const std::
string& str) const
200 -> std::chrono::system_clock::time_point;
201 [[nodiscard]] auto format_timestamp(
202 std::chrono::system_clock::time_point tp) const -> std::
string;
204 std::shared_ptr<pacs_database_adapter>
db_;
222using VoidResult = kcenon::common::VoidResult;
247 [[nodiscard]] auto
remove_state(std::string_view state_id) -> VoidResult;
252 std::string_view user_id, std::string_view study_uid) -> VoidResult;
254 std::string_view user_id,
size_t limit = 20) const
260 [[nodiscard]] auto
is_valid() const noexcept ->
bool;
Repository for viewer state persistence (legacy SQLite interface)
auto is_valid() const noexcept -> bool
auto find_state_by_id(std::string_view state_id) const -> std::optional< viewer_state_record >
viewer_state_repository(viewer_state_repository &&) noexcept
auto operator=(const viewer_state_repository &) -> viewer_state_repository &=delete
auto count_states() const -> size_t
viewer_state_repository(sqlite3 *db)
auto search_states(const viewer_state_query &query) const -> std::vector< viewer_state_record >
auto remove_state(std::string_view state_id) -> VoidResult
auto count_recent_studies(std::string_view user_id) const -> size_t
auto clear_recent_studies(std::string_view user_id) -> VoidResult
viewer_state_repository(const viewer_state_repository &)=delete
auto get_recent_studies(std::string_view user_id, size_t limit=20) const -> std::vector< recent_study_record >
auto parse_state_row(void *stmt) const -> viewer_state_record
~viewer_state_repository()
auto save_state(const viewer_state_record &record) -> VoidResult
auto find_states_by_study(std::string_view study_uid) const -> std::vector< viewer_state_record >
auto record_study_access(std::string_view user_id, std::string_view study_uid) -> VoidResult
auto parse_recent_study_row(void *stmt) const -> recent_study_record
kcenon::common::Result< T > Result
Result type alias for operations returning a value.
Unified database adapter for PACS system.
Recent study access record from the database.
Query parameters for viewer state search.
Viewer state record from the database.
Viewer state record data structures for database operations.