use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use utoipa::ToSchema;
use uuid::Uuid;
use crate::platform::Platform;
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, ToSchema)]
pub struct Artifact {
pub id: Uuid,
pub release_id: Uuid,
pub platform: Platform,
pub target: Option<String>,
pub arch: Option<String>,
pub abi: Option<String>,
pub filename: String,
pub size_bytes: i64,
pub sha256: String,
pub storage_backend_id: Uuid,
pub object_key: String,
pub signature_metadata: Option<serde_json::Value>,
pub created_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize, ToSchema)]
#[serde(rename_all = "snake_case")]
pub enum ChannelAction {
Promote,
Rollback,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, ToSchema)]
pub struct ChannelReleaseHistoryEntry {
pub id: Uuid,
pub channel_id: Uuid,
pub release_id: Uuid,
pub action: ChannelAction,
pub reason: Option<String>,
pub actor_id: Uuid,
pub created_at: DateTime<Utc>,
}