use serde::{Deserialize, Serialize};
use tasker_shared::messaging::service::MessageEvent;
#[derive(Debug, Clone)]
pub enum OrchestrationQueueEvent {
StepResult(MessageEvent),
TaskRequest(MessageEvent),
TaskFinalization(MessageEvent),
Unknown { queue_name: String, payload: String },
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct QueueManagementEvent {
pub queue_name: String,
pub operation: QueueOperation,
pub namespace: Option<String>,
pub timestamp: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum QueueOperation {
Created,
Deleted,
ConfigurationUpdated,
Purged,
}
impl std::fmt::Display for QueueOperation {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
QueueOperation::Created => write!(f, "created"),
QueueOperation::Deleted => write!(f, "deleted"),
QueueOperation::ConfigurationUpdated => write!(f, "configuration_updated"),
QueueOperation::Purged => write!(f, "purged"),
}
}
}
impl OrchestrationQueueEvent {
pub fn namespace(&self) -> Option<&str> {
match self {
Self::StepResult(event) => Some(&event.namespace),
Self::TaskRequest(event) => Some(&event.namespace),
Self::TaskFinalization(event) => Some(&event.namespace),
Self::Unknown { .. } => None,
}
}
}