22#include <kcenon/common/patterns/result.h>
30#ifdef PACS_WITH_DATABASE_SYSTEM
39class series_repository :
public base_repository<series_record, int64_t> {
50 std::string_view series_uid,
51 std::string_view modality = "",
52 std::optional<
int> series_number = std::nullopt,
53 std::string_view series_description = "",
54 std::string_view body_part_examined = "",
55 std::string_view station_name = "")
59 [[nodiscard]] auto
find_series(std::string_view series_uid)
60 -> std::optional<series_record>;
62 -> std::optional<series_record>;
63 [[nodiscard]] auto
list_series(std::string_view study_uid)
64 ->
Result<std::vector<series_record>>;
66 ->
Result<std::vector<series_record>>;
70 [[nodiscard]] auto
series_count(std::string_view study_uid)
74 [[nodiscard]] auto map_row_to_entity(const database_row& row) const
75 -> series_record override;
76 [[nodiscard]] auto entity_to_row(const series_record& entity) const
77 -> std::map<std::
string, database_value> override;
78 [[nodiscard]] auto get_pk(const series_record& entity) const
80 [[nodiscard]] auto has_pk(const series_record& entity) const
82 [[nodiscard]] auto select_columns() const -> std::vector<std::
string> override;
88 -> std::chrono::system_clock::time_point;
89 [[nodiscard]] auto format_timestamp(
90 std::chrono::system_clock::time_point tp) const -> std::
string;
104using VoidResult = kcenon::common::VoidResult;
120 std::string_view series_uid,
121 std::string_view modality = "",
122 std::optional<
int> series_number = std::nullopt,
123 std::string_view series_description = "",
124 std::string_view body_part_examined = "",
125 std::string_view station_name = "")
129 [[nodiscard]] auto
find_series(std::string_view series_uid) const
133 [[nodiscard]] auto
list_series(std::string_view study_uid) const
137 [[nodiscard]] auto
delete_series(std::string_view series_uid)
140 [[nodiscard]] auto
series_count(std::string_view study_uid) const
148 -> std::chrono::system_clock::time_point;
Generic base repository for CRUD operations.
Repository for series metadata persistence (legacy SQLite interface)
series_repository(const series_repository &)=delete
series_repository(sqlite3 *db)
auto series_count() const -> Result< size_t >
series_repository(series_repository &&) noexcept
auto find_series(std::string_view series_uid) const -> std::optional< series_record >
auto operator=(const series_repository &) -> series_repository &=delete
auto list_series(std::string_view study_uid) const -> Result< std::vector< series_record > >
auto delete_series(std::string_view series_uid) -> VoidResult
auto find_series_by_pk(int64_t pk) const -> std::optional< series_record >
auto parse_series_row(void *stmt) const -> series_record
auto search_series(const series_query &query) const -> Result< std::vector< series_record > >
auto upsert_series(int64_t study_pk, std::string_view series_uid, std::string_view modality="", std::optional< int > series_number=std::nullopt, std::string_view series_description="", std::string_view body_part_examined="", std::string_view station_name="") -> Result< int64_t >
static auto to_like_pattern(std::string_view pattern) -> std::string
static auto parse_timestamp(const std::string &str) -> std::chrono::system_clock::time_point
kcenon::common::Result< T > Result
Result type alias for operations returning a value.
Series record data structures for database operations.
Series record from the database.