liboxen 0.46.7

Oxen is a fast, unstructured data version control, to help version large machine learning datasets written in Rust.
Documentation
use std::path::PathBuf;

use serde::{Deserialize, Serialize};
use utoipa::ToSchema;

use super::StatusMessage;
use super::entries::ResourceVersion;

#[derive(Deserialize, Serialize, Debug, ToSchema)]
pub struct FileMetadata {
    pub size: u64,
    pub data_type: String,
    pub resource: ResourceVersion,
}

#[derive(Deserialize, Serialize, Debug, ToSchema)]
pub struct FileMetadataResponse {
    #[serde(flatten)]
    pub status: StatusMessage,
    pub meta: FileMetadata,
}

#[derive(Deserialize, Serialize, Debug, ToSchema)]
pub struct FilePathsResponse {
    #[serde(flatten)]
    pub status: StatusMessage,
    #[schema(value_type = Vec<String>)]
    pub paths: Vec<PathBuf>,
}
#[derive(Deserialize, Serialize, Debug, ToSchema)]
pub struct ErrorFilesResponse {
    #[serde(flatten)]
    pub status: StatusMessage,
    #[serde(default)]
    pub err_files: Vec<ErrorFileInfo>,
}

#[derive(Serialize, Deserialize, Debug, Clone, ToSchema)]
pub struct ErrorFileInfo {
    pub hash: String,
    #[schema(value_type = Option<String>)]
    pub path: Option<PathBuf>,
    pub error: String,
}

#[derive(Serialize, Deserialize, Debug, Clone, ToSchema)]
pub struct FileWithHash {
    pub hash: String,
    #[schema(value_type = String)]
    pub path: PathBuf,
}