use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ArtifactVerdict {
pub passed: bool,
pub juror: String,
pub bound_hash: String,
pub summary: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ArtifactApproval {
pub approver: String,
pub bound_hash: String,
pub created_at: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ArtifactRow {
pub id: String,
#[serde(default)]
pub path: String,
pub kind: String,
pub content_hash: String,
pub shippable: bool,
pub producer: String,
#[serde(default)]
pub provenance: String,
#[serde(default = "default_artifact_trust_label")]
pub trust_label: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub verdict: Option<ArtifactVerdict>,
#[serde(default)]
pub approvals: Vec<ArtifactApproval>,
#[serde(default)]
pub meta: String,
#[serde(default)]
pub created_at: String,
}
fn default_artifact_trust_label() -> String {
"unreviewed".to_string()
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ArtifactCrudMeta {
#[serde(default = "default_artifact_crud_version")]
pub version: u64,
#[serde(default)]
pub updated_at: String,
#[serde(default)]
pub session_id: String,
}
fn default_artifact_crud_version() -> u64 {
1
}
impl Default for ArtifactCrudMeta {
fn default() -> Self {
Self {
version: default_artifact_crud_version(),
updated_at: String::new(),
session_id: String::new(),
}
}
}
impl ArtifactCrudMeta {
pub fn from_meta_str(meta: &str) -> Self {
serde_json::from_str(meta).unwrap_or_default()
}
pub fn to_meta_string(&self) -> String {
serde_json::to_string(self).unwrap_or_default()
}
}