20#ifndef ORES_DQ_MESSAGING_PUBLICATION_PROTOCOL_HPP
21#define ORES_DQ_MESSAGING_PUBLICATION_PROTOCOL_HPP
27#include <boost/uuid/uuid.hpp>
28#include "ores.comms/messaging/message_types.hpp"
29#include "ores.comms/messaging/message_traits.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"
35namespace ores::dq::messaging {
64 domain::publication_mode
mode = domain::publication_mode::upsert;
102 ores::utility::serialization::error_code>
118 std::vector<domain::publication_result>
results;
141 std::vector<std::byte>
serialize()
const;
147 ores::utility::serialization::error_code>
183 std::vector<std::byte>
serialize()
const;
189 ores::utility::serialization::error_code>
225 std::vector<std::byte>
serialize()
const;
231 ores::utility::serialization::error_code>
261 std::vector<std::byte>
serialize()
const;
267 ores::utility::serialization::error_code>
305 std::vector<std::byte>
serialize()
const;
311 ores::utility::serialization::error_code>
328 static constexpr message_type request_message_type =
329 message_type::publish_datasets_request;
339 static constexpr message_type request_message_type =
340 message_type::get_publications_request;
350 static constexpr message_type request_message_type =
351 message_type::resolve_dependencies_request;
Contains messaging related infrastructure in the comms library.
Definition assets_protocol.hpp:122
Traits template for mapping request types to their response types and message type enum values.
Definition message_traits.hpp:66
Request to publish one or more datasets to production tables.
Definition publication_protocol.hpp:50
std::string published_by
Username of person initiating publication.
Definition publication_protocol.hpp:69
std::vector< std::byte > serialize() const
Serialize request to bytes.
Definition publication_protocol.cpp:110
std::vector< boost::uuids::uuid > dataset_ids
IDs of datasets to publish.
Definition publication_protocol.hpp:54
bool resolve_dependencies
If true, automatically include and publish dependencies first.
Definition publication_protocol.hpp:74
bool atomic
If true, first failure causes entire publication to abort.
Definition publication_protocol.hpp:82
static std::expected< publish_datasets_request, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize request from bytes.
Definition publication_protocol.cpp:135
domain::publication_mode mode
Publication mode.
Definition publication_protocol.hpp:64
Response containing results of dataset publication.
Definition publication_protocol.hpp:111
std::vector< std::byte > serialize() const
Serialize response to bytes.
Definition publication_protocol.cpp:183
std::vector< domain::publication_result > results
Results for each dataset published.
Definition publication_protocol.hpp:118
static std::expected< publish_datasets_response, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize response from bytes.
Definition publication_protocol.cpp:198
Request to get publication history.
Definition publication_protocol.hpp:163
std::uint32_t limit
Maximum number of records to return.
Definition publication_protocol.hpp:174
static std::expected< get_publications_request, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize request from bytes.
Definition publication_protocol.cpp:234
std::vector< std::byte > serialize() const
Serialize request to bytes.
Definition publication_protocol.cpp:226
boost::uuids::uuid dataset_id
Optional dataset ID to filter by.
Definition publication_protocol.hpp:169
Response containing publication history.
Definition publication_protocol.hpp:198
std::vector< std::byte > serialize() const
Serialize response to bytes.
Definition publication_protocol.cpp:332
static std::expected< get_publications_response, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize response from bytes.
Definition publication_protocol.cpp:347
std::vector< domain::publication > publications
Publication records, newest first.
Definition publication_protocol.hpp:202
Request to resolve dependencies for datasets before publishing.
Definition publication_protocol.hpp:248
std::vector< std::byte > serialize() const
Serialize request to bytes.
Definition publication_protocol.cpp:375
std::vector< boost::uuids::uuid > dataset_ids
IDs of datasets to resolve dependencies for.
Definition publication_protocol.hpp:252
static std::expected< resolve_dependencies_request, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize request from bytes.
Definition publication_protocol.cpp:388
Response containing the resolved publication order.
Definition publication_protocol.hpp:279
std::vector< domain::dataset > datasets
Datasets in publication order.
Definition publication_protocol.hpp:286
std::vector< std::byte > serialize() const
Serialize response to bytes.
Definition publication_protocol.cpp:416
static std::expected< resolve_dependencies_response, ores::utility::serialization::error_code > deserialize(std::span< const std::byte > data)
Deserialize response from bytes.
Definition publication_protocol.cpp:439
std::vector< boost::uuids::uuid > requested_ids
IDs of datasets that were explicitly requested (not dependencies).
Definition publication_protocol.hpp:294