Skip to content

Commit c4d5518

Browse files
committed
chore: add admin_clear API in ic_object_store_canister
1 parent e283c2f commit c4d5518

File tree

4 files changed

+42
-18
lines changed

4 files changed

+42
-18
lines changed

Cargo.lock

Lines changed: 18 additions & 18 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/ic_object_store_canister/ic_object_store_canister.did

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ service : (opt InstallArgs) -> {
100100
abort_multipart : (text, text) -> (Result);
101101
admin_add_auditors : (vec principal) -> (Result_1);
102102
admin_add_managers : (vec principal) -> (Result_1);
103+
admin_clear : () -> (Result_1);
103104
admin_remove_auditors : (vec principal) -> (Result_1);
104105
admin_remove_managers : (vec principal) -> (Result_1);
105106
complete_multipart : (text, text, PutMultipartOpts) -> (Result_2);
@@ -122,6 +123,7 @@ service : (opt InstallArgs) -> {
122123
rename_if_not_exists : (text, text) -> (Result);
123124
validate_admin_add_auditors : (vec principal) -> (Result_13);
124125
validate_admin_add_managers : (vec principal) -> (Result_13);
126+
validate_admin_clear : () -> (Result_13);
125127
validate_admin_remove_auditors : (vec principal) -> (Result_13);
126128
validate_admin_remove_managers : (vec principal) -> (Result_13);
127129
}

src/ic_object_store_canister/src/api_admin.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,12 @@ fn admin_remove_auditors(args: BTreeSet<Principal>) -> Result<(), String> {
4040
})
4141
}
4242

43+
#[ic_cdk::update(guard = "is_controller")]
44+
fn admin_clear() -> Result<(), String> {
45+
store::state::clear();
46+
Ok(())
47+
}
48+
4349
#[ic_cdk::update]
4450
fn validate_admin_add_managers(args: BTreeSet<Principal>) -> Result<String, String> {
4551
validate_principals(&args)?;
@@ -63,3 +69,8 @@ fn validate_admin_remove_auditors(args: BTreeSet<Principal>) -> Result<String, S
6369
validate_principals(&args)?;
6470
Ok("ok".to_string())
6571
}
72+
73+
#[ic_cdk::update]
74+
fn validate_admin_clear() -> Result<String, String> {
75+
Ok("ok".to_string())
76+
}

src/ic_object_store_canister/src/store.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,17 @@ pub mod state {
177177
});
178178
});
179179
}
180+
181+
pub fn clear() {
182+
MULTIPART_UPLOAD.with_borrow_mut(|mu| mu.clear());
183+
OBJECT_META.with_borrow_mut(|om| om.clear_new());
184+
OBJECT_DATA.with_borrow_mut(|od| od.clear_new());
185+
STATE.with_borrow_mut(|s| {
186+
s.locations.clear();
187+
s.next_etag = 0;
188+
});
189+
save();
190+
}
180191
}
181192

182193
pub mod object {

0 commit comments

Comments
 (0)