use serde::{Deserialize, Serialize};
use chrono::{DateTime, Utc};
use super::types::*;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MaintenanceRequestCreatedEvent {
pub id: MaintenanceRequestId,
pub data: MaintenanceRequestDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MaintenanceRequestUpdatedEvent {
pub id: MaintenanceRequestId,
pub data: MaintenanceRequestDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MaintenanceRequestDeletedEvent {
pub id: MaintenanceRequestId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MaintenanceScheduleCreatedEvent {
pub id: MaintenanceScheduleId,
pub data: MaintenanceScheduleDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MaintenanceScheduleUpdatedEvent {
pub id: MaintenanceScheduleId,
pub data: MaintenanceScheduleDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MaintenanceScheduleDeletedEvent {
pub id: MaintenanceScheduleId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MaintenanceStageCreatedEvent {
pub id: MaintenanceStageId,
pub data: MaintenanceStageDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MaintenanceStageUpdatedEvent {
pub id: MaintenanceStageId,
pub data: MaintenanceStageDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MaintenanceStageDeletedEvent {
pub id: MaintenanceStageId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MaintenanceVisitCreatedEvent {
pub id: MaintenanceVisitId,
pub data: MaintenanceVisitDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MaintenanceVisitUpdatedEvent {
pub id: MaintenanceVisitId,
pub data: MaintenanceVisitDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MaintenanceVisitDeletedEvent {
pub id: MaintenanceVisitId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MaintenanceVisitPartCreatedEvent {
pub id: MaintenanceVisitPartId,
pub data: MaintenanceVisitPartDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MaintenanceVisitPartUpdatedEvent {
pub id: MaintenanceVisitPartId,
pub data: MaintenanceVisitPartDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MaintenanceVisitPartDeletedEvent {
pub id: MaintenanceVisitPartId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum MaintenanceEvent {
MaintenanceRequestCreated(MaintenanceRequestCreatedEvent),
MaintenanceRequestUpdated(MaintenanceRequestUpdatedEvent),
MaintenanceRequestDeleted(MaintenanceRequestDeletedEvent),
MaintenanceScheduleCreated(MaintenanceScheduleCreatedEvent),
MaintenanceScheduleUpdated(MaintenanceScheduleUpdatedEvent),
MaintenanceScheduleDeleted(MaintenanceScheduleDeletedEvent),
MaintenanceStageCreated(MaintenanceStageCreatedEvent),
MaintenanceStageUpdated(MaintenanceStageUpdatedEvent),
MaintenanceStageDeleted(MaintenanceStageDeletedEvent),
MaintenanceVisitCreated(MaintenanceVisitCreatedEvent),
MaintenanceVisitUpdated(MaintenanceVisitUpdatedEvent),
MaintenanceVisitDeleted(MaintenanceVisitDeletedEvent),
MaintenanceVisitPartCreated(MaintenanceVisitPartCreatedEvent),
MaintenanceVisitPartUpdated(MaintenanceVisitPartUpdatedEvent),
MaintenanceVisitPartDeleted(MaintenanceVisitPartDeletedEvent),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MaintenanceEventMetadata {
pub module: &'static str,
pub version: &'static str,
}
impl Default for MaintenanceEventMetadata {
fn default() -> Self {
Self {
module: "maintenance",
version: "1.0",
}
}
}