20#ifndef ORES_DQ_SERVICE_PUBLICATION_SERVICE_HPP
21#define ORES_DQ_SERVICE_PUBLICATION_SERVICE_HPP
26#include <boost/uuid/uuid.hpp>
27#include "ores.logging/make_logger.hpp"
28#include "ores.database/domain/context.hpp"
29#include "ores.dq/domain/artefact_type.hpp"
30#include "ores.dq/domain/dataset.hpp"
31#include "ores.dq/domain/publication.hpp"
32#include "ores.dq/domain/publication_mode.hpp"
33#include "ores.dq/domain/publication_result.hpp"
34#include "ores.dq/messaging/publish_bundle_protocol.hpp"
35#include "ores.dq/repository/dataset_repository.hpp"
36#include "ores.dq/repository/dataset_dependency_repository.hpp"
37#include "ores.dq/repository/publication_repository.hpp"
38#include "ores.dq/repository/artefact_type_repository.hpp"
40namespace ores::dq::service {
56 inline static std::string_view logger_name =
57 "ores.dq.service.publication_service";
59 [[nodiscard]]
static auto& lg() {
61 static auto instance = make_logger(logger_name);
90 std::vector<domain::publication_result>
publish(
91 const std::vector<boost::uuids::uuid>& dataset_ids,
92 domain::publication_mode mode,
93 const std::string& published_by,
94 bool resolve_dependencies =
true);
111 const std::string& bundle_code,
112 domain::publication_mode mode,
113 const std::string& published_by,
127 const std::vector<boost::uuids::uuid>& dataset_ids);
136 const boost::uuids::uuid& dataset_id);
145 std::uint32_t limit = 100);
154 std::map<std::string, domain::artefact_type> build_artefact_type_cache(
155 const std::vector<domain::dataset>& datasets);
170 domain::publication_mode mode,
171 const std::map<std::string, domain::artefact_type>& artefact_type_cache);
180 void record_publication(
182 domain::publication_mode mode,
183 const std::string& published_by);
196 domain::publication_mode mode);
Implements logging infrastructure for ORE Studio.
Definition boost_severity.hpp:28
Context for the operations on a postgres database.
Definition context.hpp:30
Maps artefact type codes to their population functions and tables.
Definition artefact_type.hpp:39
Represents a data quality dataset with lineage tracking.
Definition dataset.hpp:36
Result of publishing a single dataset to a target table.
Definition publication_result.hpp:35
Response containing results of bundle publication.
Definition publish_bundle_protocol.hpp:116
Reads artefact_types from data storage.
Definition artefact_type_repository.hpp:39
Reads dataset dependencies from data storage.
Definition dataset_dependency_repository.hpp:35
Reads and writes datasets to data storage.
Definition dataset_repository.hpp:36
Repository for reading and writing publication audit records.
Definition publication_repository.hpp:37
Service for publishing datasets to production tables.
Definition publication_service.hpp:54
messaging::publish_bundle_response publish_bundle(const std::string &bundle_code, domain::publication_mode mode, const std::string &published_by, bool atomic=true)
Publishes all datasets in a bundle.
Definition publication_service.cpp:423
std::vector< domain::publication > get_publication_history(const boost::uuids::uuid &dataset_id)
Gets the publication history for a dataset.
Definition publication_service.cpp:229
std::vector< domain::publication > get_recent_publications(std::uint32_t limit=100)
Gets recent publication history across all datasets.
Definition publication_service.cpp:238
std::vector< domain::publication_result > publish(const std::vector< boost::uuids::uuid > &dataset_ids, domain::publication_mode mode, const std::string &published_by, bool resolve_dependencies=true)
Publishes one or more datasets to production tables.
Definition publication_service.cpp:45
std::vector< domain::dataset > resolve_publication_order(const std::vector< boost::uuids::uuid > &dataset_ids)
Resolves the publication order for datasets.
Definition publication_service.cpp:117