use std::collections::HashMap;
use serde::{Deserialize, Serialize};
use typeshare::typeshare;
use crate::entities::{I64, docker::HealthConfig};
use super::GraphDriverData;
#[typeshare]
#[derive(
Debug, Clone, Default, PartialEq, Serialize, Deserialize,
)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub struct ImageListItem {
pub id: String,
pub parent_id: String,
pub name: String,
#[serde(default)]
pub tags: Vec<String>,
#[serde(default)]
pub digests: Vec<String>,
pub created: I64,
pub size: I64,
pub in_use: bool,
}
#[typeshare]
#[derive(
Debug, Clone, Default, PartialEq, Serialize, Deserialize,
)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub struct Image {
#[serde(rename = "Id")]
pub id: Option<String>,
#[serde(rename = "Descriptor")]
pub descriptor: Option<OciDescriptor>,
#[serde(rename = "Manifests")]
pub manifests: Option<Vec<ImageManifestSummary>>,
#[serde(rename = "RepoTags")]
pub repo_tags: Option<Vec<String>>,
#[serde(rename = "RepoDigests")]
pub repo_digests: Option<Vec<String>>,
#[serde(rename = "Comment")]
pub comment: Option<String>,
#[serde(rename = "Created")]
pub created: Option<String>,
#[serde(rename = "Author")]
pub author: Option<String>,
#[serde(rename = "Config")]
pub config: Option<ImageConfig>,
#[serde(rename = "Architecture")]
pub architecture: Option<String>,
#[serde(rename = "Variant")]
pub variant: Option<String>,
#[serde(rename = "Os")]
pub os: Option<String>,
#[serde(rename = "OsVersion")]
pub os_version: Option<String>,
#[serde(rename = "Size")]
pub size: Option<I64>,
#[serde(rename = "GraphDriver")]
pub graph_driver: Option<GraphDriverData>,
#[serde(rename = "RootFS")]
pub root_fs: Option<ImageInspectRootFs>,
#[serde(rename = "Metadata")]
pub metadata: Option<ImageInspectMetadata>,
}
#[typeshare]
#[derive(
Debug, Clone, Default, PartialEq, Serialize, Deserialize,
)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub struct OciDescriptor {
#[serde(rename = "mediaType")]
pub media_type: Option<String>,
#[serde(rename = "digest")]
pub digest: Option<String>,
#[serde(rename = "size")]
pub size: Option<I64>,
#[serde(rename = "urls")]
pub urls: Option<Vec<String>>,
#[serde(rename = "annotations")]
pub annotations: Option<HashMap<String, String>>,
#[serde(rename = "data")]
pub data: Option<String>,
#[serde(rename = "platform")]
pub platform: Option<OciPlatform>,
#[serde(rename = "artifactType")]
pub artifact_type: Option<String>,
}
#[typeshare]
#[derive(
Debug, Clone, Default, PartialEq, Serialize, Deserialize,
)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub struct OciPlatform {
#[serde(rename = "architecture")]
pub architecture: Option<String>,
#[serde(rename = "os")]
pub os: Option<String>,
pub os_version: Option<String>,
pub os_features: Option<Vec<String>>,
#[serde(rename = "variant")]
pub variant: Option<String>,
}
#[typeshare]
#[derive(
Debug, Clone, Default, PartialEq, Serialize, Deserialize,
)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub struct ImageManifestSummary {
#[serde(rename = "ID")]
pub id: String,
#[serde(rename = "Descriptor")]
pub descriptor: OciDescriptor,
#[serde(rename = "Available")]
pub available: bool,
#[serde(rename = "Size")]
pub size: ImageManifestSummarySize,
#[serde(rename = "Kind")]
pub kind: Option<ImageManifestSummaryKindEnum>,
#[serde(rename = "ImageData")]
pub image_data: Option<ImageManifestSummaryImageData>,
#[serde(rename = "AttestationData")]
pub attestation_data: Option<ImageManifestSummaryAttestationData>,
}
#[typeshare]
#[derive(
Debug, Clone, Default, PartialEq, Serialize, Deserialize,
)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub struct ImageManifestSummarySize {
#[serde(rename = "Total")]
pub total: I64,
#[serde(rename = "Content")]
pub content: I64,
}
#[typeshare]
#[derive(
Debug,
Clone,
Copy,
PartialEq,
PartialOrd,
Serialize,
Deserialize,
Eq,
Ord,
Default,
)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub enum ImageManifestSummaryKindEnum {
#[default]
#[serde(rename = "")]
Empty,
#[serde(rename = "image")]
Image,
#[serde(rename = "attestation")]
Attestation,
#[serde(rename = "unknown")]
Unknown,
}
#[typeshare]
#[derive(
Debug, Clone, Default, PartialEq, Serialize, Deserialize,
)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub struct ImageManifestSummaryImageData {
#[serde(rename = "Platform")]
pub platform: OciPlatform,
#[serde(rename = "Containers")]
pub containers: Vec<String>,
#[serde(rename = "Size")]
pub size: ImageManifestSummaryImageDataSize,
}
#[typeshare]
#[derive(
Debug, Clone, Default, PartialEq, Serialize, Deserialize,
)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub struct ImageManifestSummaryImageDataSize {
#[serde(rename = "Unpacked")]
pub unpacked: I64,
}
#[typeshare]
#[derive(
Debug, Clone, Default, PartialEq, Serialize, Deserialize,
)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub struct ImageManifestSummaryAttestationData {
#[serde(rename = "For")]
pub _for: String,
}
#[typeshare]
#[derive(
Debug, Clone, Default, PartialEq, Serialize, Deserialize,
)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub struct ImageConfig {
#[serde(rename = "User")]
pub user: Option<String>,
#[serde(rename = "ExposedPorts")]
pub exposed_ports: Option<Vec<String>>,
#[serde(rename = "Env")]
pub env: Option<Vec<String>>,
#[serde(rename = "Cmd")]
pub cmd: Option<Vec<String>>,
#[serde(rename = "Healthcheck")]
pub healthcheck: Option<HealthConfig>,
#[serde(rename = "ArgsEscaped")]
pub args_escaped: Option<bool>,
#[serde(rename = "Volumes")]
pub volumes: Option<Vec<String>>,
#[serde(rename = "WorkingDir")]
pub working_dir: Option<String>,
#[serde(rename = "Entrypoint")]
pub entrypoint: Option<Vec<String>>,
#[serde(rename = "OnBuild")]
pub on_build: Option<Vec<String>>,
#[serde(rename = "Labels")]
pub labels: Option<HashMap<String, String>>,
#[serde(rename = "StopSignal")]
pub stop_signal: Option<String>,
#[serde(rename = "Shell")]
pub shell: Option<Vec<String>>,
}
#[typeshare]
#[derive(
Debug, Clone, Default, PartialEq, Serialize, Deserialize,
)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub struct ImageInspectRootFs {
#[serde(default, rename = "Type")]
pub typ: String,
#[serde(default, rename = "Layers")]
pub layers: Vec<String>,
}
#[typeshare]
#[derive(
Debug, Clone, Default, PartialEq, Serialize, Deserialize,
)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub struct ImageInspectMetadata {
#[serde(rename = "LastTagTime")]
pub last_tag_time: Option<String>,
}
#[typeshare]
#[derive(
Debug, Clone, Default, PartialEq, Serialize, Deserialize,
)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub struct ImageHistoryResponseItem {
#[serde(rename = "Id")]
pub id: String,
#[serde(rename = "Created")]
pub created: I64,
#[serde(rename = "CreatedBy")]
pub created_by: String,
#[serde(default, rename = "Tags")]
pub tags: Vec<String>,
#[serde(rename = "Size")]
pub size: I64,
#[serde(rename = "Comment")]
pub comment: String,
}