use crate::{ProtoRunId, ProtoWorkflowId, WireEnvelope};
#[derive(Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize, prost::Message)]
pub struct ProtoDescribeWorkflowResponse {
#[prost(message, optional, tag = "1")]
pub summary: Option<WireEnvelope>,
#[prost(message, repeated, tag = "2")]
pub history: Vec<WireEnvelope>,
#[prost(message, optional, tag = "3")]
pub run_id: Option<ProtoRunId>,
#[prost(uint64, tag = "4")]
pub history_head_seq: u64,
#[prost(message, optional, tag = "5")]
pub terminal_event: Option<WireEnvelope>,
#[prost(message, optional, tag = "6")]
pub provenance: Option<ProtoReadProvenance>,
#[prost(message, optional, tag = "7")]
pub lease_recording: Option<ProtoLeaseRecording>,
}
#[derive(Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize, prost::Message)]
pub struct ProtoLeaseRecording {
#[prost(uint64, tag = "1")]
pub leases_recorded: u64,
#[prost(uint64, tag = "2")]
pub dispatched_attempts: u64,
#[prost(uint64, tag = "3")]
pub attempts_with_a_lease: u64,
}
impl From<aion_core::LeaseRecording> for ProtoLeaseRecording {
fn from(value: aion_core::LeaseRecording) -> Self {
Self {
leases_recorded: value.leases_recorded,
dispatched_attempts: value.dispatched_attempts,
attempts_with_a_lease: value.attempts_with_a_lease,
}
}
}
impl From<ProtoLeaseRecording> for aion_core::LeaseRecording {
fn from(value: ProtoLeaseRecording) -> Self {
Self {
leases_recorded: value.leases_recorded,
dispatched_attempts: value.dispatched_attempts,
attempts_with_a_lease: value.attempts_with_a_lease,
}
}
}
#[must_use]
pub fn decode_lease_recording(
value: Option<ProtoLeaseRecording>,
) -> Option<aion_core::LeaseRecording> {
value.map(aion_core::LeaseRecording::from)
}
#[derive(Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize, prost::Message)]
pub struct ProtoReadProvenance {
#[prost(uint64, tag = "1")]
pub lease_record_failures_total: u64,
}
impl From<aion_core::ReadProvenance> for ProtoReadProvenance {
fn from(value: aion_core::ReadProvenance) -> Self {
Self {
lease_record_failures_total: value.lease_record_failures_total,
}
}
}
impl From<ProtoReadProvenance> for aion_core::ReadProvenance {
fn from(value: ProtoReadProvenance) -> Self {
Self::new(value.lease_record_failures_total)
}
}
#[must_use]
pub fn decode_read_provenance(
value: Option<ProtoReadProvenance>,
) -> Option<aion_core::ReadProvenance> {
value.map(aion_core::ReadProvenance::from)
}
#[derive(Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize, prost::Message)]
pub struct ProtoReadHistoryRequest {
#[prost(string, tag = "1")]
pub namespace: String,
#[prost(message, optional, tag = "2")]
pub workflow_id: Option<ProtoWorkflowId>,
#[prost(uint64, optional, tag = "3")]
pub from_seq: Option<u64>,
#[prost(uint32, optional, tag = "4")]
pub limit: Option<u32>,
}
#[derive(Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize, prost::Message)]
pub struct ProtoReadHistoryResponse {
#[prost(message, repeated, tag = "1")]
pub events: Vec<WireEnvelope>,
#[prost(uint64, optional, tag = "2")]
pub next_from_seq: Option<u64>,
#[prost(uint64, tag = "3")]
pub head_seq: u64,
}