use std::collections::HashMap;
use bon::Builder;
use serde::{Deserialize, Serialize};
use serde_json::Value;
use super::{data_address::DataAddress, data_flow::DataFlowState};
#[derive(Debug, Serialize, Deserialize, Clone, Builder)]
#[serde(rename_all = "camelCase")]
#[builder(on(String, into))]
pub struct DataFlowStartMessage {
pub message_id: String,
pub participant_id: String,
pub counter_party_id: String,
pub dataspace_context: String,
pub process_id: String,
pub agreement_id: String,
pub dataset_id: String,
pub profile: String,
pub data_address: Option<DataAddress>,
#[builder(default)]
#[serde(default)]
pub labels: Vec<String>,
#[builder(default)]
#[serde(default)]
pub metadata: HashMap<String, Value>,
#[builder(default)]
#[serde(default)]
pub claims: HashMap<String, Value>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Builder)]
#[serde(rename_all = "camelCase")]
#[builder(on(String, into))]
pub struct DataFlowResumeMessage {
pub data_address: Option<DataAddress>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Builder)]
#[serde(rename_all = "camelCase")]
#[builder(on(String, into))]
pub struct DataFlowPrepareMessage {
pub message_id: String,
pub participant_id: String,
pub counter_party_id: String,
pub dataspace_context: String,
pub process_id: String,
pub agreement_id: String,
pub dataset_id: String,
pub profile: String,
#[builder(default)]
#[serde(default)]
pub labels: Vec<String>,
#[builder(default)]
#[serde(default)]
pub metadata: HashMap<String, Value>,
#[builder(default)]
#[serde(default)]
pub claims: HashMap<String, Value>,
}
#[derive(Debug, Builder, Serialize, Deserialize, Clone)]
#[serde(rename_all = "camelCase")]
#[builder(on(String, into))]
pub struct DataFlowStatusMessage {
#[builder(default = new_message_id())]
#[serde(default = "new_message_id")]
pub message_id: String,
pub data_flow_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub data_address: Option<DataAddress>,
pub state: DataFlowState,
#[serde(skip_serializing_if = "Option::is_none")]
pub error: Option<String>,
}
fn new_message_id() -> String {
uuid::Uuid::new_v4().to_string()
}
#[derive(Debug, Builder, Serialize, Deserialize, Clone)]
#[serde(rename_all = "camelCase")]
pub struct DataFlowStartedNotificationMessage {
pub data_address: Option<DataAddress>,
}
#[derive(Builder, Debug, Serialize, Deserialize, Clone)]
#[serde(rename_all = "camelCase")]
#[builder(on(String, into))]
pub struct DataFlowStatusResponseMessage {
pub data_flow_id: String,
pub state: DataFlowState,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
#[serde(rename_all = "camelCase")]
pub struct DataFlowSuspendMessage {
pub reason: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Builder)]
#[serde(rename_all = "camelCase")]
#[builder(on(String, into))]
pub struct DataFlowTerminateMessage {
pub reason: Option<String>,
}