mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-11 15:46:53 +00:00
61cf686527
Closes #41 Signed-off-by: bestgopher <84328409@qq.com>
67 lines
1.8 KiB
Rust
67 lines
1.8 KiB
Rust
use std::collections::HashMap;
|
|
|
|
use rmp_serde::Serializer;
|
|
use serde::{Deserialize, Serialize};
|
|
use time::OffsetDateTime;
|
|
|
|
use crate::error::Result;
|
|
|
|
use crate::disk::BUCKET_META_PREFIX;
|
|
|
|
pub const BUCKET_METADATA_FILE: &str = ".metadata.bin";
|
|
pub const BUCKET_METADATA_FORMAT: u16 = 1;
|
|
pub const BUCKET_METADATA_VERSION: u16 = 1;
|
|
|
|
#[derive(Debug, PartialEq, Deserialize, Serialize, Default)]
|
|
pub struct BucketMetadata {
|
|
format: u16,
|
|
version: u16,
|
|
pub name: String,
|
|
#[serde(skip_serializing_if = "Option::is_none", default)]
|
|
pub tagging: Option<HashMap<String, String>>,
|
|
#[serde(skip_serializing_if = "Option::is_none", default)]
|
|
pub created: Option<OffsetDateTime>,
|
|
}
|
|
|
|
// impl Default for BucketMetadata {
|
|
// fn default() -> Self {
|
|
// Self {
|
|
// format: Default::default(),
|
|
// version: Default::default(),
|
|
// name: Default::default(),
|
|
// created: OffsetDateTime::now_utc(),
|
|
// }
|
|
// }
|
|
// }
|
|
|
|
impl BucketMetadata {
|
|
pub fn new(name: &str) -> Self {
|
|
BucketMetadata {
|
|
format: BUCKET_METADATA_FORMAT,
|
|
version: BUCKET_METADATA_VERSION,
|
|
name: name.to_string(),
|
|
..Default::default()
|
|
}
|
|
}
|
|
|
|
pub fn save_file_path(&self) -> String {
|
|
format!("{}/{}/{}", BUCKET_META_PREFIX, self.name.as_str(), BUCKET_METADATA_FILE)
|
|
// PathBuf::new()
|
|
// .join(BUCKET_META_PREFIX)
|
|
// .join(self.name.as_str())
|
|
// .join(BUCKET_METADATA_FILE)
|
|
}
|
|
|
|
pub fn marshal_msg(&self) -> Result<Vec<u8>> {
|
|
let mut buf = Vec::new();
|
|
|
|
self.serialize(&mut Serializer::new(&mut buf))?;
|
|
|
|
Ok(buf)
|
|
}
|
|
|
|
pub fn unmarshal_from(buffer: &[u8]) -> Result<Self> {
|
|
Ok(rmp_serde::from_slice(buffer)?)
|
|
}
|
|
}
|