use serde::{Deserialize, Serialize};
use chrono::{DateTime, Utc};
use super::types::*;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IssueCreatedEvent {
pub id: IssueId,
pub data: IssueDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IssueUpdatedEvent {
pub id: IssueId,
pub data: IssueDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IssueDeletedEvent {
pub id: IssueId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ServiceLevelAgreementCreatedEvent {
pub id: ServiceLevelAgreementId,
pub data: ServiceLevelAgreementDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ServiceLevelAgreementUpdatedEvent {
pub id: ServiceLevelAgreementId,
pub data: ServiceLevelAgreementDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ServiceLevelAgreementDeletedEvent {
pub id: ServiceLevelAgreementId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ServiceLevelPriorityCreatedEvent {
pub id: ServiceLevelPriorityId,
pub data: ServiceLevelPriorityDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ServiceLevelPriorityUpdatedEvent {
pub id: ServiceLevelPriorityId,
pub data: ServiceLevelPriorityDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ServiceLevelPriorityDeletedEvent {
pub id: ServiceLevelPriorityId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct WarrantyClaimCreatedEvent {
pub id: WarrantyClaimId,
pub data: WarrantyClaimDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct WarrantyClaimUpdatedEvent {
pub id: WarrantyClaimId,
pub data: WarrantyClaimDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct WarrantyClaimDeletedEvent {
pub id: WarrantyClaimId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum SupportEvent {
IssueCreated(IssueCreatedEvent),
IssueUpdated(IssueUpdatedEvent),
IssueDeleted(IssueDeletedEvent),
ServiceLevelAgreementCreated(ServiceLevelAgreementCreatedEvent),
ServiceLevelAgreementUpdated(ServiceLevelAgreementUpdatedEvent),
ServiceLevelAgreementDeleted(ServiceLevelAgreementDeletedEvent),
ServiceLevelPriorityCreated(ServiceLevelPriorityCreatedEvent),
ServiceLevelPriorityUpdated(ServiceLevelPriorityUpdatedEvent),
ServiceLevelPriorityDeleted(ServiceLevelPriorityDeletedEvent),
WarrantyClaimCreated(WarrantyClaimCreatedEvent),
WarrantyClaimUpdated(WarrantyClaimUpdatedEvent),
WarrantyClaimDeleted(WarrantyClaimDeletedEvent),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SupportEventMetadata {
pub module: &'static str,
pub version: &'static str,
}
impl Default for SupportEventMetadata {
fn default() -> Self {
Self {
module: "support",
version: "1.0",
}
}
}