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.
Viewer state record from the database.
Viewer state record data structures for database operations.