use serde::{Deserialize, Serialize};
use chrono::{DateTime, Utc};
use super::types::*;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IntegrationConnectorCreatedEvent {
pub id: IntegrationConnectorId,
pub data: IntegrationConnectorDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IntegrationConnectorUpdatedEvent {
pub id: IntegrationConnectorId,
pub data: IntegrationConnectorDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IntegrationConnectorDeletedEvent {
pub id: IntegrationConnectorId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IntegrationAccountCreatedEvent {
pub id: IntegrationAccountId,
pub data: IntegrationAccountDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IntegrationAccountUpdatedEvent {
pub id: IntegrationAccountId,
pub data: IntegrationAccountDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IntegrationAccountDeletedEvent {
pub id: IntegrationAccountId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IntegrationEventCreatedEvent {
pub id: IntegrationEventId,
pub data: IntegrationEventDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IntegrationEventUpdatedEvent {
pub id: IntegrationEventId,
pub data: IntegrationEventDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IntegrationEventDeletedEvent {
pub id: IntegrationEventId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum IntegrationsEvent {
IntegrationConnectorCreated(IntegrationConnectorCreatedEvent),
IntegrationConnectorUpdated(IntegrationConnectorUpdatedEvent),
IntegrationConnectorDeleted(IntegrationConnectorDeletedEvent),
IntegrationAccountCreated(IntegrationAccountCreatedEvent),
IntegrationAccountUpdated(IntegrationAccountUpdatedEvent),
IntegrationAccountDeleted(IntegrationAccountDeletedEvent),
IntegrationEventCreated(IntegrationEventCreatedEvent),
IntegrationEventUpdated(IntegrationEventUpdatedEvent),
IntegrationEventDeleted(IntegrationEventDeletedEvent),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IntegrationsEventMetadata {
pub module: &'static str,
pub version: &'static str,
}
impl Default for IntegrationsEventMetadata {
fn default() -> Self {
Self {
module: "integrations",
version: "1.0",
}
}
}