use crate::{BlobResource, Resource, ResourceType, Snapshot};
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
#[derive(Default, Deserialize, Serialize)]
pub struct ManifestSnapshot {
pub latest_version: u64,
}
impl Snapshot for ManifestSnapshot {
fn incr_version(&mut self) {
self.latest_version += 1;
}
fn get_version(&self) -> u64 {
self.latest_version
}
}
impl Resource for ManifestSnapshot {
fn ty() -> ResourceType {
ResourceType::ManifestSnapshot
}
}
#[derive(Deserialize, Serialize)]
pub struct ManifestMetadata {
pub pulls: u64,
pub size: usize,
pub created: DateTime<Utc>,
}
impl BlobResource for ManifestMetadata {
fn new(size: usize) -> Self {
ManifestMetadata {
pulls: 0,
size,
created: Utc::now(),
}
}
fn incr_usage(&mut self) {
self.pulls += 1
}
}
impl Resource for ManifestMetadata {
fn ty() -> ResourceType {
ResourceType::ManifestMetadata
}
}