use serde::{Deserialize, Serialize};
use uuid::Uuid;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct MapRequest {
pub company_id: Uuid,
pub connector_kind: String, pub event_type: String,
pub external_id: String,
pub idempotency_key: String,
pub payload: serde_json::Value,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct MappedRef {
pub internal_ref_type: String, pub internal_ref_id: Uuid,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub enum MapOutcome {
Mapped(MappedRef),
Ignored(String), }
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct MapRejected {
pub code: String,
pub message: String,
}
#[async_trait::async_trait]
pub trait TargetPort: Send + Sync {
async fn map(&self, req: &MapRequest) -> Result<MapOutcome, MapRejected>;
}