liboxen 0.46.8

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

use serde::{Deserialize, Serialize};
use serde_with::serde_as;

use crate::model::merkle_tree::merkle_hash::MerkleHashAsString;
use crate::model::{CommitEntry, MerkleHash};
use crate::view::StatusMessage;

use utoipa::ToSchema;

#[serde_as]
#[derive(Deserialize, Serialize, Debug, ToSchema)]
pub struct MerkleHashes {
    #[serde_as(as = "HashSet<MerkleHashAsString>")]
    pub hashes: HashSet<MerkleHash>,
}

#[serde_as]
#[derive(Deserialize, Serialize, Debug)]
pub struct NodeHashes {
    #[serde_as(as = "HashSet<MerkleHashAsString>")]
    pub commit_hashes: HashSet<MerkleHash>,
    #[serde_as(as = "HashSet<MerkleHashAsString>")]
    pub dir_hashes: HashSet<MerkleHash>,
}

#[serde_as]
#[derive(Deserialize, Serialize, Debug, ToSchema)]
pub struct MerkleHashesResponse {
    #[serde(flatten)]
    pub status: StatusMessage,
    #[serde_as(as = "HashSet<MerkleHashAsString>")]
    pub hashes: HashSet<MerkleHash>,
}

#[serde_as]
#[derive(Deserialize, Serialize, Debug)]
pub struct ListCommitEntryResponse {
    #[serde(flatten)]
    pub status: StatusMessage,
    pub entries: Vec<CommitEntry>,
}