use chrono::{DateTime, Utc};
#[derive(Debug, Clone)]
pub struct ManagedResource {
pub type_name: String,
pub identifier: String,
pub resource_model: String,
}
#[derive(Debug, Clone)]
pub struct ResourceRequest {
pub request_token: String,
pub type_name: String,
pub identifier: String,
pub operation: OperationType,
pub operation_status: OperationStatus,
pub event_time: DateTime<Utc>,
pub resource_model: Option<String>,
pub status_message: Option<String>,
pub error_code: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum OperationType {
Create,
Delete,
Update,
}
impl OperationType {
pub fn as_str(&self) -> &'static str {
match self {
OperationType::Create => "CREATE",
OperationType::Delete => "DELETE",
OperationType::Update => "UPDATE",
}
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum OperationStatus {
Pending,
InProgress,
Success,
Failed,
CancelInProgress,
CancelComplete,
}
impl OperationStatus {
pub fn as_str(&self) -> &'static str {
match self {
OperationStatus::Pending => "PENDING",
OperationStatus::InProgress => "IN_PROGRESS",
OperationStatus::Success => "SUCCESS",
OperationStatus::Failed => "FAILED",
OperationStatus::CancelInProgress => "CANCEL_IN_PROGRESS",
OperationStatus::CancelComplete => "CANCEL_COMPLETE",
}
}
}