Skip to main content

backbone_support/exports/
events.rs

1//! Public events for Support module
2//!
3//! Generated by metaphor-schema. Do not edit manually.
4//!
5//! These events are published by this module for other modules to subscribe to.
6//! Events are the primary mechanism for cross-module communication.
7
8use serde::{Deserialize, Serialize};
9use chrono::{DateTime, Utc};
10
11use super::types::*;
12
13// ============================================================================
14// ISSUE EVENTS
15// ============================================================================
16
17/// Event published when a Issue is created
18#[derive(Debug, Clone, Serialize, Deserialize)]
19pub struct IssueCreatedEvent {
20    pub id: IssueId,
21    pub data: IssueDto,
22    pub occurred_at: DateTime<Utc>,
23}
24
25/// Event published when a Issue is updated
26#[derive(Debug, Clone, Serialize, Deserialize)]
27pub struct IssueUpdatedEvent {
28    pub id: IssueId,
29    pub data: IssueDto,
30    pub occurred_at: DateTime<Utc>,
31}
32
33/// Event published when a Issue is deleted
34#[derive(Debug, Clone, Serialize, Deserialize)]
35pub struct IssueDeletedEvent {
36    pub id: IssueId,
37    pub occurred_at: DateTime<Utc>,
38}
39
40// ============================================================================
41// SERVICELEVELAGREEMENT EVENTS
42// ============================================================================
43
44/// Event published when a ServiceLevelAgreement is created
45#[derive(Debug, Clone, Serialize, Deserialize)]
46pub struct ServiceLevelAgreementCreatedEvent {
47    pub id: ServiceLevelAgreementId,
48    pub data: ServiceLevelAgreementDto,
49    pub occurred_at: DateTime<Utc>,
50}
51
52/// Event published when a ServiceLevelAgreement is updated
53#[derive(Debug, Clone, Serialize, Deserialize)]
54pub struct ServiceLevelAgreementUpdatedEvent {
55    pub id: ServiceLevelAgreementId,
56    pub data: ServiceLevelAgreementDto,
57    pub occurred_at: DateTime<Utc>,
58}
59
60/// Event published when a ServiceLevelAgreement is deleted
61#[derive(Debug, Clone, Serialize, Deserialize)]
62pub struct ServiceLevelAgreementDeletedEvent {
63    pub id: ServiceLevelAgreementId,
64    pub occurred_at: DateTime<Utc>,
65}
66
67// ============================================================================
68// SERVICELEVELPRIORITY EVENTS
69// ============================================================================
70
71/// Event published when a ServiceLevelPriority is created
72#[derive(Debug, Clone, Serialize, Deserialize)]
73pub struct ServiceLevelPriorityCreatedEvent {
74    pub id: ServiceLevelPriorityId,
75    pub data: ServiceLevelPriorityDto,
76    pub occurred_at: DateTime<Utc>,
77}
78
79/// Event published when a ServiceLevelPriority is updated
80#[derive(Debug, Clone, Serialize, Deserialize)]
81pub struct ServiceLevelPriorityUpdatedEvent {
82    pub id: ServiceLevelPriorityId,
83    pub data: ServiceLevelPriorityDto,
84    pub occurred_at: DateTime<Utc>,
85}
86
87/// Event published when a ServiceLevelPriority is deleted
88#[derive(Debug, Clone, Serialize, Deserialize)]
89pub struct ServiceLevelPriorityDeletedEvent {
90    pub id: ServiceLevelPriorityId,
91    pub occurred_at: DateTime<Utc>,
92}
93
94// ============================================================================
95// WARRANTYCLAIM EVENTS
96// ============================================================================
97
98/// Event published when a WarrantyClaim is created
99#[derive(Debug, Clone, Serialize, Deserialize)]
100pub struct WarrantyClaimCreatedEvent {
101    pub id: WarrantyClaimId,
102    pub data: WarrantyClaimDto,
103    pub occurred_at: DateTime<Utc>,
104}
105
106/// Event published when a WarrantyClaim is updated
107#[derive(Debug, Clone, Serialize, Deserialize)]
108pub struct WarrantyClaimUpdatedEvent {
109    pub id: WarrantyClaimId,
110    pub data: WarrantyClaimDto,
111    pub occurred_at: DateTime<Utc>,
112}
113
114/// Event published when a WarrantyClaim is deleted
115#[derive(Debug, Clone, Serialize, Deserialize)]
116pub struct WarrantyClaimDeletedEvent {
117    pub id: WarrantyClaimId,
118    pub occurred_at: DateTime<Utc>,
119}
120
121// ============================================================================
122// MODULE EVENT ENUM
123// ============================================================================
124
125/// All events published by Support module
126#[derive(Debug, Clone, Serialize, Deserialize)]
127#[serde(tag = "type")]
128pub enum SupportEvent {
129    IssueCreated(IssueCreatedEvent),
130    IssueUpdated(IssueUpdatedEvent),
131    IssueDeleted(IssueDeletedEvent),
132    ServiceLevelAgreementCreated(ServiceLevelAgreementCreatedEvent),
133    ServiceLevelAgreementUpdated(ServiceLevelAgreementUpdatedEvent),
134    ServiceLevelAgreementDeleted(ServiceLevelAgreementDeletedEvent),
135    ServiceLevelPriorityCreated(ServiceLevelPriorityCreatedEvent),
136    ServiceLevelPriorityUpdated(ServiceLevelPriorityUpdatedEvent),
137    ServiceLevelPriorityDeleted(ServiceLevelPriorityDeletedEvent),
138    WarrantyClaimCreated(WarrantyClaimCreatedEvent),
139    WarrantyClaimUpdated(WarrantyClaimUpdatedEvent),
140    WarrantyClaimDeleted(WarrantyClaimDeletedEvent),
141}
142
143/// Metadata for module events
144#[derive(Debug, Clone, Serialize, Deserialize)]
145pub struct SupportEventMetadata {
146    pub module: &'static str,
147    pub version: &'static str,
148}
149
150impl Default for SupportEventMetadata {
151    fn default() -> Self {
152        Self {
153            module: "support",
154            version: "1.0",
155        }
156    }
157}
158
159// ============================================================================
160// CUSTOM EVENTS
161// ============================================================================
162
163// Add custom public events here