20#ifndef ORES_DATABASE_REPOSITORY_MAPPER_HELPERS_HPP
21#define ORES_DATABASE_REPOSITORY_MAPPER_HELPERS_HPP
25#include <sqlgen/postgres.hpp>
26#include "ores.logging/make_logger.hpp"
27#include "ores.platform/time/datetime.hpp"
28#include "ores.platform/time/time_utils.hpp"
29#include "ores.database/repository/db_types.hpp"
56template<
typename Source,
typename Dest,
typename MapFunc>
57std::vector<Dest> map_vector(
58 const std::vector<Source>& source,
60 logging::logger_t& lg,
61 const std::string& log_prefix) {
65 BOOST_LOG_SEV(lg, debug) <<
"Mapping " << log_prefix
66 <<
". Total: " << source.size();
68 std::vector<Dest> result;
69 result.reserve(source.size());
70 std::ranges::transform(source, std::back_inserter(result),
71 std::forward<MapFunc>(map_func));
73 BOOST_LOG_SEV(lg, debug) <<
"Mapped " << log_prefix <<
".";
91inline std::chrono::system_clock::time_point
92timestamp_to_timepoint(std::string_view timestamp_str) {
94 std::string{timestamp_str});
110inline std::chrono::system_clock::time_point
129timepoint_to_timestamp(
const std::chrono::system_clock::time_point& tp,
130 logging::logger_t& lg) {
135 const auto bare = s.substr(0, s.size() - 1);
136 const auto r = db_timestamp::from_string(bare);
138 BOOST_LOG_SEV(lg, error) <<
"Error converting timepoint to timestamp";
Repository infrastructure and bitemporal operations.
Definition bitemporal_operations.hpp:31
ores::database::repository::db_timestamp db_timestamp
Canonical database timestamp type.
Definition database_info_entity.hpp:31
Implements logging infrastructure for ORE Studio.
Definition boost_severity.hpp:28
static std::chrono::system_clock::time_point from_iso8601_utc(const std::string &str)
Parses an ISO 8601 UTC string to a time point.
Definition datetime.cpp:45
static std::string to_iso8601_utc(const std::chrono::system_clock::time_point &tp)
Serialises a time point to ISO 8601 UTC string with 'Z' suffix.
Definition datetime.cpp:30
static std::chrono::system_clock::time_point to_time_point_utc(std::tm tm)
Converts a UTC tm struct directly to a system_clock::time_point.
Definition time_utils.cpp:64