use crate::service::acs::models::{AccessRecord, AcsUser};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct P2AcsUserUpdatedV1 {
pub event_id: String,
pub event_type: String,
pub created_time: String,
pub event: AcsUserUpdatedEvent,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AcsUserUpdatedEvent {
pub change_type: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub old_user: Option<AcsUser>,
#[serde(skip_serializing_if = "Option::is_none")]
pub new_user: Option<AcsUser>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct P2AcsAccessRecordCreatedV1 {
pub event_id: String,
pub event_type: String,
pub created_time: String,
pub event: AccessRecordCreatedEvent,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AccessRecordCreatedEvent {
pub access_record: AccessRecord,
#[serde(skip_serializing_if = "Option::is_none")]
pub is_abnormal: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub abnormal_reason: Option<String>,
}
impl std::fmt::Display for P2AcsUserUpdatedV1 {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(
f,
"ACS User Updated Event [{}]: {} at {}",
self.event_id, self.event.change_type, self.created_time
)
}
}
impl std::fmt::Display for P2AcsAccessRecordCreatedV1 {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(
f,
"ACS Access Record Created Event [{}]: user {} accessed device {} at {}",
self.event_id,
self.event
.access_record
.user_id
.as_deref()
.unwrap_or("unknown"),
self.event.access_record.device_id,
self.created_time
)
}
}