swarmhive_api_types/
artifact.rs1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3use utoipa::ToSchema;
4use uuid::Uuid;
5
6use crate::platform::Platform;
7
8#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, ToSchema)]
12pub struct Artifact {
13 pub id: Uuid,
14 pub release_id: Uuid,
15 pub platform: Platform,
16 pub target: Option<String>,
17 pub arch: Option<String>,
18 pub abi: Option<String>,
19 pub filename: String,
20 pub size_bytes: i64,
21 pub sha256: String,
22 pub storage_backend_id: Uuid,
23 pub object_key: String,
24 pub signature_metadata: Option<serde_json::Value>,
25 pub created_at: DateTime<Utc>,
26}
27
28#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize, ToSchema)]
30#[serde(rename_all = "snake_case")]
31pub enum ChannelAction {
32 Promote,
33 Rollback,
34}
35
36#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, ToSchema)]
38pub struct ChannelReleaseHistoryEntry {
39 pub id: Uuid,
40 pub channel_id: Uuid,
41 pub release_id: Uuid,
42 pub action: ChannelAction,
43 pub reason: Option<String>,
44 pub actor_id: Uuid,
45 pub created_at: DateTime<Utc>,
46}