20#ifndef ORES_DATABASE_REPOSITORY_BITEMPORAL_OPERATIONS_HPP
21#define ORES_DATABASE_REPOSITORY_BITEMPORAL_OPERATIONS_HPP
26#include <sqlgen/postgres.hpp>
27#include "ores.utility/log/make_logger.hpp"
28#include "ores.database/domain/context.hpp"
29#include "ores.database/repository/helpers.hpp"
31namespace ores::database::repository {
63template<
typename EntityType,
typename DomainType,
typename QueryType,
typename MapperFunc>
64std::vector<DomainType> execute_read_query(context ctx,
const QueryType& query,
65 MapperFunc&& mapper, utility::log::logger_t& lg,
const std::string& operation_desc) {
68 using namespace sqlgen;
70 BOOST_LOG_SEV(lg, debug) << operation_desc <<
".";
72 const auto r = session(ctx.connection_pool()).and_then(query);
73 ensure_success(r, lg);
75 BOOST_LOG_SEV(lg, debug) << operation_desc <<
". Total: " << r->size();
76 return std::forward<MapperFunc>(mapper)(*r);
101template<
typename EntityType>
102void execute_write_query(context ctx,
const EntityType& entity,
103 utility::log::logger_t& lg,
const std::string& operation_desc) {
106 using namespace sqlgen;
108 BOOST_LOG_SEV(lg, debug) << operation_desc <<
".";
110 const auto r = session(ctx.connection_pool())
111 .and_then(begin_transaction)
112 .and_then(insert(entity))
114 ensure_success(r, lg);
116 BOOST_LOG_SEV(lg, debug) <<
"Finished " << operation_desc <<
".";
138template<
typename QueryType>
139void execute_delete_query(context ctx,
const QueryType& query,
140 utility::log::logger_t& lg,
const std::string& operation_desc) {
143 using namespace sqlgen;
145 BOOST_LOG_SEV(lg, debug) << operation_desc <<
".";
147 const auto r = session(ctx.connection_pool())
148 .and_then(begin_transaction)
151 ensure_success(r, lg);
153 BOOST_LOG_SEV(lg, debug) <<
"Finished " << operation_desc <<
".";
173std::vector<std::string> execute_raw_string_query(context ctx,
174 const std::string& sql, utility::log::logger_t& lg,
175 const std::string& operation_desc);
195std::map<std::string, std::vector<std::string>> execute_raw_grouped_query(
196 context ctx,
const std::string& sql, utility::log::logger_t& lg,
197 const std::string& operation_desc);
221std::vector<std::vector<std::optional<std::string>>> execute_raw_multi_column_query(
222 context ctx,
const std::string& sql, utility::log::logger_t& lg,
223 const std::string& operation_desc);
Implements logging for ORE Studio.
Definition lifecycle_manager.hpp:30