swarmhive_api_types/
release.rs1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3use utoipa::ToSchema;
4use uuid::Uuid;
5
6#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize, ToSchema)]
10#[serde(rename_all = "snake_case")]
11pub enum ReleaseStatus {
12 Draft,
13 Published,
14 Yanked,
15}
16
17#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, ToSchema)]
21pub struct Release {
22 pub id: Uuid,
23 pub app_id: Uuid,
24 pub version: String,
25 pub android_version_code: Option<i64>,
26 pub android_min_version_code: Option<i64>,
28 pub status: ReleaseStatus,
29 pub release_notes: Option<String>,
30 pub published_at: Option<DateTime<Utc>>,
31 pub min_version: Option<String>,
33 pub rollout_percent: Option<i16>,
35 pub created_at: DateTime<Utc>,
36 pub updated_at: DateTime<Utc>,
37}
38
39#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
40pub struct CreateReleaseRequest {
41 pub version: String,
42 #[serde(default)]
43 pub android_version_code: Option<i64>,
44 #[serde(default)]
45 pub android_min_version_code: Option<i64>,
46 #[serde(default)]
47 pub release_notes: Option<String>,
48}
49
50#[derive(Debug, Clone, Default, Serialize, Deserialize, ToSchema)]
51pub struct UpdateReleaseRequest {
52 #[serde(default)]
53 pub android_version_code: Option<i64>,
54 #[serde(default)]
56 pub android_min_version_code: Option<i64>,
57 #[serde(default)]
58 pub release_notes: Option<String>,
59 #[serde(default)]
61 pub min_version: Option<String>,
62 #[serde(default)]
64 pub rollout_percent: Option<i16>,
65}
66
67#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
70pub struct PromoteRequest {
71 pub version: String,
72}
73
74#[derive(Debug, Clone, Default, Serialize, Deserialize, ToSchema)]
77pub struct RollbackRequest {
78 #[serde(default)]
79 pub version: Option<String>,
80}