init bucketmeta

This commit is contained in:
weisd
2024-09-27 16:33:56 +08:00
parent cef6a583b7
commit b4f8088f0f
22 changed files with 687 additions and 0 deletions
+68
View File
@@ -0,0 +1,68 @@
use time::OffsetDateTime;
use super::{event, policy::bucket_policy::BucketPolicy};
#[derive(Debug, Default)]
pub struct BucketMetadata {
format: u16,
version: u16,
pub name: String,
pub created: Option<OffsetDateTime>,
pub lock_enabled: bool, // 虽然标记为不使用,但可能需要保留
pub policy_config_json: Vec<u8>,
pub notification_config_xml: Vec<u8>,
pub lifecycle_config_xml: Vec<u8>,
pub object_lock_config_xml: Vec<u8>,
pub versioning_config_xml: Vec<u8>,
pub encryption_config_xml: Vec<u8>,
pub tagging_config_xml: Vec<u8>,
pub quota_config_json: Vec<u8>,
pub replication_config_xml: Vec<u8>,
pub bucket_targets_config_json: Vec<u8>,
pub bucket_targets_config_meta_json: Vec<u8>,
pub policy_config_updated_at: Option<OffsetDateTime>,
pub object_lock_config_updated_at: Option<OffsetDateTime>,
pub encryption_config_updated_at: Option<OffsetDateTime>,
pub tagging_config_updated_at: Option<OffsetDateTime>,
pub quota_config_updated_at: Option<OffsetDateTime>,
pub replication_config_updated_at: Option<OffsetDateTime>,
pub versioning_config_updated_at: Option<OffsetDateTime>,
pub lifecycle_config_updated_at: Option<OffsetDateTime>,
pub notification_config_updated_at: Option<OffsetDateTime>,
pub bucket_targets_config_updated_at: Option<OffsetDateTime>,
pub bucket_targets_config_meta_updated_at: Option<OffsetDateTime>,
// 新增UpdatedAt字段
new_field_updated_at: Option<OffsetDateTime>,
// 私有字段,需要原子更新
policy_config: Option<BucketPolicy>, // 假设Policy是一个已经定义好的结构体
notification_config: Option<event::config::Config>,
lifecycle_config: Option<Lifecycle>,
object_lock_config: Option<ObjectLock>,
versioning_config: Option<Versioning>,
sse_config: Option<BucketSSEConfig>,
tagging_config: Option<Tags>,
quota_config: Option<BucketQuota>,
replication_config: Option<ReplicationConfig>,
bucket_target_config: Option<BucketTargets>,
bucket_target_config_meta: Option<std::collections::HashMap<String, String>>,
}
#[derive(Debug, Default)]
struct Lifecycle;
#[derive(Debug, Default)]
struct ObjectLock;
#[derive(Debug, Default)]
struct Versioning;
#[derive(Debug, Default)]
struct BucketSSEConfig;
#[derive(Debug, Default)]
struct Tags;
#[derive(Debug, Default)]
struct BucketQuota;
#[derive(Debug, Default)]
struct ReplicationConfig;
#[derive(Debug, Default)]
struct BucketTargets;