Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions contracts/bucket_object/sources/bucket_object.move
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ module bucket_object::bucket_object;
use blob_bucket::blob_bucket::{Self as blob_bucket, BlobBucket, BlobBucketCap};
use bucket_object::bucket_object_inner_v1::{Self, BucketObjectInnerV1};
use bucket_object::object_headers::ObjectHeaders;
use bucket_object::object_metadata::ObjectMetadata;
use bucket_object::object_version::{Self, ObjectVersion};
use sui::coin::Coin;
use std::string::String;
Expand Down Expand Up @@ -117,6 +118,7 @@ public fun stage_registered_blob_version(
blob_id: u256,
size: u64,
headers: ObjectHeaders,
metadata: ObjectMetadata,
content_etag: String,
object_etag: String,
) {
Expand All @@ -130,6 +132,7 @@ public fun stage_registered_blob_version(
blob_bucket.get_blob_object_id(blob_id),
size,
headers,
metadata,
content_etag,
object_etag,
false,
Expand All @@ -148,6 +151,7 @@ public fun put_object_if_absent_and_register(
deletable: bool,
write_payment: &mut Coin<WAL>,
headers: ObjectHeaders,
metadata: ObjectMetadata,
content_etag: String,
object_etag: String,
ctx: &mut TxContext,
Expand All @@ -168,6 +172,7 @@ public fun put_object_if_absent_and_register(
deletable,
write_payment,
headers,
metadata,
content_etag,
object_etag,
ctx,
Expand All @@ -186,6 +191,7 @@ public fun update_object_if_match_and_register(
deletable: bool,
write_payment: &mut Coin<WAL>,
headers: ObjectHeaders,
metadata: ObjectMetadata,
content_etag: String,
object_etag: String,
ctx: &mut TxContext,
Expand All @@ -206,6 +212,7 @@ public fun update_object_if_match_and_register(
deletable,
write_payment,
headers,
metadata,
content_etag,
object_etag,
ctx,
Expand Down Expand Up @@ -288,6 +295,7 @@ public fun stage_registered_blob_version_for_testing(
blob_id: u256,
size: u64,
headers: ObjectHeaders,
metadata: ObjectMetadata,
content_etag: String,
object_etag: String,
) {
Expand All @@ -297,6 +305,7 @@ public fun stage_registered_blob_version_for_testing(
blob_id,
size,
headers,
metadata,
content_etag,
object_etag,
);
Expand Down Expand Up @@ -331,6 +340,7 @@ fun register_and_stage_new_version(
deletable: bool,
write_payment: &mut Coin<WAL>,
headers: ObjectHeaders,
metadata: ObjectMetadata,
content_etag: String,
object_etag: String,
ctx: &mut TxContext,
Expand All @@ -356,6 +366,7 @@ fun register_and_stage_new_version(
blob_id,
unencoded_size,
headers,
metadata,
content_etag,
object_etag,
);
Expand Down
66 changes: 66 additions & 0 deletions contracts/bucket_object/sources/object_metadata.move
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
// Copyright (c) Walrus Foundation
// SPDX-License-Identifier: Apache-2.0

module bucket_object::object_metadata;

use std::string::String;
use sui::vec_map::{Self as vec_map, VecMap};

public struct ObjectMetadata has copy, drop, store {
entries: VecMap<String, String>,
}

public fun new(entries: VecMap<String, String>): ObjectMetadata {
ObjectMetadata { entries }
}

public fun empty(): ObjectMetadata {
new(vec_map::empty())
}

public fun insert_or_update(self: &mut ObjectMetadata, key: String, value: String) {
if (self.entries.contains(&key)) {
self.entries.remove(&key);
};
self.entries.insert(key, value);
}

public fun remove(self: &mut ObjectMetadata, key: &String): (String, String) {
self.entries.remove(key)
}

public fun remove_if_exists(self: &mut ObjectMetadata, key: &String): option::Option<String> {
if (self.entries.contains(key)) {
let (_, value) = self.entries.remove(key);
option::some(value)
} else {
option::none()
}
}

public fun contains(self: &ObjectMetadata, key: &String): bool {
self.entries.contains(key)
}

public fun try_get(self: &ObjectMetadata, key: &String): option::Option<String> {
self.entries.try_get(key)
}

public fun length(self: &ObjectMetadata): u64 {
self.entries.length()
}

public fun is_empty(self: &ObjectMetadata): bool {
self.entries.is_empty()
}

#[test_only]
public fun new_for_testing(entries: VecMap<String, String>): ObjectMetadata {
new(entries)
}

#[test_only]
public fun destroy_for_testing(self: ObjectMetadata) {
let ObjectMetadata { entries } = self;
entries.destroy_empty();
}
12 changes: 12 additions & 0 deletions contracts/bucket_object/sources/object_version.move
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
module bucket_object::object_version;

use bucket_object::object_headers::{Self as object_headers, ObjectHeaders};
use bucket_object::object_metadata::{Self as object_metadata, ObjectMetadata};
use std::string::String;

public struct ObjectVersion has copy, store, drop {
Expand All @@ -13,6 +14,7 @@ public struct ObjectVersion has copy, store, drop {
pooled_blob_object_id: option::Option<ID>,
size: u64,
headers: ObjectHeaders,
metadata: ObjectMetadata,
content_etag: String,
object_etag: String,
delete_marker: bool,
Expand All @@ -25,6 +27,7 @@ public fun new(
pooled_blob_object_id: ID,
size: u64,
headers: ObjectHeaders,
metadata: ObjectMetadata,
content_etag: String,
object_etag: String,
delete_marker: bool,
Expand All @@ -36,6 +39,7 @@ public fun new(
pooled_blob_object_id: option::some(pooled_blob_object_id),
size,
headers,
metadata,
content_etag,
object_etag,
delete_marker,
Expand All @@ -54,6 +58,7 @@ public fun new_delete_marker(
pooled_blob_object_id: option::none(),
size: 0,
headers: object_headers::empty(),
metadata: object_metadata::empty(),
content_etag: b"".to_string(),
object_etag,
delete_marker: true,
Expand All @@ -68,6 +73,7 @@ public fun new_for_testing(
pooled_blob_object_id: ID,
size: u64,
headers: ObjectHeaders,
metadata: ObjectMetadata,
content_etag: String,
object_etag: String,
delete_marker: bool,
Expand All @@ -79,6 +85,7 @@ public fun new_for_testing(
pooled_blob_object_id,
size,
headers,
metadata,
content_etag,
object_etag,
delete_marker,
Expand Down Expand Up @@ -113,6 +120,10 @@ public fun headers(self: &ObjectVersion): ObjectHeaders {
self.headers
}

public fun metadata(self: &ObjectVersion): ObjectMetadata {
self.metadata
}

public fun content_etag(self: &ObjectVersion): String {
self.content_etag
}
Expand All @@ -134,6 +145,7 @@ public fun destroy_for_testing(self: ObjectVersion) {
pooled_blob_object_id: _,
size: _,
headers: _,
metadata: _,
content_etag: _,
object_etag: _,
delete_marker: _,
Expand Down
Loading
Loading