24#include <kcenon/common/patterns/result.h>
32#ifdef PACS_WITH_DATABASE_SYSTEM
64class annotation_repository
65 :
public base_repository<annotation_record, std::string> {
87 [[nodiscard]] auto
find_by_pk(int64_t pk) -> result_type;
113 [[nodiscard]] auto
search(const annotation_query& query) -> list_result_type;
121 [[nodiscard]] auto update_annotation(const annotation_record& record)
130 [[nodiscard]] auto count_matching(const annotation_query& query)
138 [[nodiscard]] auto map_row_to_entity(const database_row& row) const
139 -> annotation_record override;
141 [[nodiscard]] auto entity_to_row(const annotation_record& entity) const
142 -> std::map<std::
string, database_value> override;
144 [[nodiscard]] auto get_pk(const annotation_record& entity) const
145 -> std::
string override;
147 [[nodiscard]] auto has_pk(const annotation_record& entity) const
150 [[nodiscard]] auto select_columns() const
151 -> std::vector<std::
string> override;
154 [[nodiscard]] auto parse_timestamp(const std::
string& str) const
155 -> std::chrono::system_clock::time_point;
157 [[nodiscard]] auto format_timestamp(
158 std::chrono::system_clock::time_point tp) const -> std::
string;
178using VoidResult = kcenon::common::VoidResult;
198 [[nodiscard]] auto
find_by_id(std::string_view annotation_id) const
200 [[nodiscard]] auto
find_by_pk(int64_t pk) const
202 [[nodiscard]] auto
find_by_instance(std::string_view sop_instance_uid) const
204 [[nodiscard]] auto
find_by_study(std::string_view study_uid) const
209 [[nodiscard]] auto
remove(std::string_view annotation_id) -> VoidResult;
210 [[nodiscard]] auto
exists(std::string_view annotation_id) const ->
bool;
211 [[nodiscard]] auto
count() const ->
size_t;
213 [[nodiscard]] auto
is_valid() const noexcept ->
bool;
Annotation record data structures for database operations.
Generic base repository for CRUD operations.
Repository for annotation persistence (legacy SQLite interface)
auto remove(std::string_view annotation_id) -> VoidResult
auto find_by_instance(std::string_view sop_instance_uid) const -> std::vector< annotation_record >
auto find_by_study(std::string_view study_uid) const -> std::vector< annotation_record >
annotation_repository(annotation_repository &&) noexcept
static auto serialize_style(const annotation_style &style) -> std::string
annotation_repository(const annotation_repository &)=delete
annotation_repository(sqlite3 *db)
auto is_valid() const noexcept -> bool
auto exists(std::string_view annotation_id) const -> bool
auto find_by_id(std::string_view annotation_id) const -> std::optional< annotation_record >
static auto deserialize_style(std::string_view json) -> annotation_style
auto search(const annotation_query &query) const -> std::vector< annotation_record >
auto parse_row(void *stmt) const -> annotation_record
auto count() const -> size_t
auto save(const annotation_record &record) -> VoidResult
auto operator=(const annotation_repository &) -> annotation_repository &=delete
auto find_by_pk(int64_t pk) const -> std::optional< annotation_record >
kcenon::common::Result< T > Result
Result type alias for operations returning a value.
Annotation record from the database.
Style information for annotations.