use serde::{Deserialize, Serialize};
use utoipa::{IntoParams, ToSchema};
#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
pub struct ImageInfoDto {
#[schema(value_type = String)]
#[serde(with = "crate::image_ref_serde")]
pub reference: crate::ImageReference,
pub digest: Option<String>,
pub size_bytes: Option<u64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, ToSchema)]
pub struct PruneResultDto {
pub deleted: Vec<String>,
pub space_reclaimed: u64,
}
#[derive(Debug, Clone, Deserialize, ToSchema)]
pub struct PullImageRequest {
#[schema(value_type = String)]
#[serde(with = "crate::image_ref_serde")]
pub reference: crate::ImageReference,
#[serde(default)]
pub pull_policy: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub registry_credential_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub registry_auth: Option<crate::spec::RegistryAuth>,
}
#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
pub struct PullImageResponse {
#[schema(value_type = String)]
#[serde(with = "crate::image_ref_serde")]
pub reference: crate::ImageReference,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub digest: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub size_bytes: Option<u64>,
}
#[derive(Debug, Deserialize, IntoParams)]
pub struct RemoveImageQuery {
#[serde(default)]
pub force: bool,
}
#[derive(Debug, Default, Deserialize, IntoParams)]
pub struct PullImageQuery {
#[serde(default)]
pub stream: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
#[serde(tag = "kind", rename_all = "snake_case")]
pub enum PullProgressDto {
Status {
#[serde(default, skip_serializing_if = "Option::is_none")]
id: Option<String>,
status: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
progress: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
current: Option<u64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
total: Option<u64>,
},
Done {
reference: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
digest: Option<String>,
},
}
#[derive(Debug, Clone, Deserialize, ToSchema)]
pub struct TagImageRequest {
#[schema(value_type = String)]
#[serde(with = "crate::image_ref_serde")]
pub source: crate::ImageReference,
#[schema(value_type = String)]
#[serde(with = "crate::image_ref_serde")]
pub target: crate::ImageReference,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, ToSchema)]
pub struct ImageHistoryEntryDto {
pub id: String,
pub created: i64,
pub created_by: String,
pub tags: Vec<String>,
pub size: u64,
pub comment: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, ToSchema)]
pub struct ImageSearchResultDto {
pub name: String,
pub description: String,
pub star_count: u64,
pub official: bool,
pub automated: bool,
}
#[derive(Debug, Default, Deserialize, IntoParams)]
pub struct SearchImagesQuery {
pub term: String,
#[serde(default)]
pub limit: u32,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, ToSchema)]
pub struct CommitContainerRequest {
pub container: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub repo: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tag: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub comment: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub author: Option<String>,
#[serde(default = "default_true")]
pub pause: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub changes: Option<String>,
}
const fn default_true() -> bool {
true
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, ToSchema)]
pub struct CommitContainerResponse {
pub id: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, ToSchema)]
pub struct ImportImageRequest {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub repo: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tag: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, ToSchema)]
pub struct ImportImageResponse {
pub id: String,
}
#[derive(Debug, Default, Deserialize, IntoParams)]
pub struct LoadImagesQuery {
#[serde(default)]
pub quiet: bool,
}
#[derive(Debug, Default, Deserialize, IntoParams)]
pub struct SaveImagesQuery {
#[serde(default)]
pub names: Vec<String>,
}