use serde::{Deserialize, Serialize};
use uuid::Uuid;
use chrono::{DateTime, Utc};
use crate::domain::entity::*;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub struct IntegrationConnectorId(pub Uuid);
impl IntegrationConnectorId {
pub fn new(id: Uuid) -> Self {
Self(id)
}
pub fn into_inner(self) -> Uuid {
self.0
}
}
impl From<Uuid> for IntegrationConnectorId {
fn from(id: Uuid) -> Self {
Self(id)
}
}
impl From<IntegrationConnectorId> for Uuid {
fn from(id: IntegrationConnectorId) -> Self {
id.0
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IntegrationConnectorDto {
pub id: IntegrationConnectorId,
pub provider: String,
pub kind: ConnectorKind,
pub direction: ConnectorDirection,
pub status: ConnectorStatus,
pub metadata: serde_json::Value,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IntegrationConnectorSummary {
pub id: IntegrationConnectorId,
pub status: ConnectorStatus,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IntegrationConnectorRef {
pub id: IntegrationConnectorId,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub struct IntegrationAccountId(pub Uuid);
impl IntegrationAccountId {
pub fn new(id: Uuid) -> Self {
Self(id)
}
pub fn into_inner(self) -> Uuid {
self.0
}
}
impl From<Uuid> for IntegrationAccountId {
fn from(id: Uuid) -> Self {
Self(id)
}
}
impl From<IntegrationAccountId> for Uuid {
fn from(id: IntegrationAccountId) -> Self {
id.0
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IntegrationAccountDto {
pub id: IntegrationAccountId,
pub provider: OAuthProvider,
pub account_ref: String,
pub status: IntegrationAccountStatus,
pub scopes: String,
pub pkce_verifier: Option<String>,
pub expires_at: Option<DateTime<Utc>>,
pub last_refreshed_at: Option<DateTime<Utc>>,
pub metadata: serde_json::Value,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IntegrationAccountSummary {
pub id: IntegrationAccountId,
pub status: IntegrationAccountStatus,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IntegrationAccountRef {
pub id: IntegrationAccountId,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub struct IntegrationEventId(pub Uuid);
impl IntegrationEventId {
pub fn new(id: Uuid) -> Self {
Self(id)
}
pub fn into_inner(self) -> Uuid {
self.0
}
}
impl From<Uuid> for IntegrationEventId {
fn from(id: Uuid) -> Self {
Self(id)
}
}
impl From<IntegrationEventId> for Uuid {
fn from(id: IntegrationEventId) -> Self {
id.0
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IntegrationEventDto {
pub id: IntegrationEventId,
pub connector_id: Uuid,
pub event_type: String,
pub external_id: String,
pub business_key: String,
pub status: IntegrationStatus,
pub payload: String,
pub mapped_ref_type: Option<String>,
pub mapped_ref_id: Option<Uuid>,
pub error_detail: Option<String>,
pub metadata: serde_json::Value,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IntegrationEventSummary {
pub id: IntegrationEventId,
pub status: IntegrationStatus,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IntegrationEventRef {
pub id: IntegrationEventId,
}