alien_core/app_events/
storage.rs1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3use std::collections::HashMap;
4
5#[cfg(feature = "openapi")]
6use utoipa::ToSchema;
7
8#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
10#[cfg_attr(feature = "openapi", derive(ToSchema))]
11#[serde(rename_all = "camelCase")]
12pub enum StorageEventType {
13 Created,
15 Deleted,
17 Copied,
19 MetadataUpdated,
21 Restored,
23 TierChanged,
25 Unknown,
27}
28
29#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
34#[cfg_attr(feature = "openapi", derive(ToSchema))]
35#[serde(rename_all = "camelCase")]
36pub struct StorageEvent {
37 pub event_type: StorageEventType,
39
40 pub bucket_name: String,
42
43 pub object_key: String,
45
46 pub timestamp: DateTime<Utc>,
48
49 #[serde(skip_serializing_if = "Option::is_none")]
51 pub size: Option<u64>,
52
53 #[serde(skip_serializing_if = "Option::is_none")]
55 pub etag: Option<String>,
56
57 #[serde(skip_serializing_if = "Option::is_none")]
59 pub content_type: Option<String>,
60
61 #[serde(default, skip_serializing_if = "HashMap::is_empty")]
63 pub metadata: HashMap<String, String>,
64
65 #[serde(skip_serializing_if = "Option::is_none")]
67 pub copy_source: Option<String>,
68
69 #[serde(skip_serializing_if = "Option::is_none")]
71 pub previous_tier: Option<String>,
72
73 #[serde(skip_serializing_if = "Option::is_none")]
75 pub current_tier: Option<String>,
76
77 #[serde(skip_serializing_if = "Option::is_none")]
79 pub region: Option<String>,
80
81 #[serde(skip_serializing_if = "Option::is_none")]
83 pub version_id: Option<String>,
84}
85
86#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
88#[cfg_attr(feature = "openapi", derive(ToSchema))]
89#[serde(rename_all = "camelCase")]
90pub struct StorageEvents(pub Vec<StorageEvent>);