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"
54template<
typename Source,
typename Dest,
typename MapFunc>
55std::vector<Dest> map_vector(
56 const std::vector<Source>& source,
58 logging::logger_t& lg,
59 const std::string& log_prefix) {
63 BOOST_LOG_SEV(lg, debug) <<
"Mapping " << log_prefix
64 <<
". Total: " << source.size();
66 std::vector<Dest> result;
67 result.reserve(source.size());
68 std::ranges::transform(source, std::back_inserter(result),
69 std::forward<MapFunc>(map_func));
71 BOOST_LOG_SEV(lg, debug) <<
"Mapped " << log_prefix <<
".";
86inline std::chrono::system_clock::time_point
87timestamp_to_timepoint(std::string_view timestamp_str) {
89 std::string{timestamp_str});
103inline std::chrono::system_clock::time_point
104timestamp_to_timepoint(
const sqlgen::Timestamp<"%Y-%m-%d %H:%M:%S">& ts) {
105 return timestamp_to_timepoint(std::string_view{ts.str()});
121inline sqlgen::Timestamp<
"%Y-%m-%d %H:%M:%S">
122timepoint_to_timestamp(
const std::chrono::system_clock::time_point& tp,
123 logging::logger_t& lg) {
127 const auto r = sqlgen::Timestamp<
"%Y-%m-%d %H:%M:%S">::from_string(s);
129 BOOST_LOG_SEV(lg, error) <<
"Error converting timepoint to timestamp";
Repository infrastructure and bitemporal operations.
Definition bitemporal_operations.hpp:31
Implements logging infrastructure for ORE Studio.
Definition boost_severity.hpp:28
static std::string format_time_point_utc(const std::chrono::system_clock::time_point &tp, const std::string &format="%Y-%m-%d %H:%M:%S")
Formats a time point as a string using UTC time.
Definition datetime.cpp:45
static std::chrono::system_clock::time_point parse_time_point_utc(const std::string &str, const std::string &format="%Y-%m-%d %H:%M:%S")
Parses a string into a time point, treating the input as UTC.
Definition datetime.cpp:75