diff --git a/candid/registry.did b/candid/registry.did index f7404a9..914e157 100644 --- a/candid/registry.did +++ b/candid/registry.did @@ -50,6 +50,7 @@ service : { "add" : (trusted_source: opt principal, canister: add_canister_input) -> (operation_response); "remove" : (trusted_source: opt principal, canister: principal) -> (operation_response); "get_all" : () -> (vec canister_metadata) query; + "get_multiple": (vec principal) -> (vec opt canister_metadata) query; "add_admin" : (admin: principal) -> (operation_response); } diff --git a/registries/canister_registry/src/registry.rs b/registries/canister_registry/src/registry.rs index 09bf699..51ebb12 100644 --- a/registries/canister_registry/src/registry.rs +++ b/registries/canister_registry/src/registry.rs @@ -112,6 +112,19 @@ pub fn get(canister: Principal) -> Option<&'static CanisterMetadata> { canister_db.get_info(canister) } +#[query] +pub fn get_multiple(canister_ids: Vec) -> Vec> { + let mut response = vec![]; + + for canister_id in canister_ids { + let canister_db = ic::get_mut::(); + let canister = canister_db.get_info(canister_id); + response.push(canister); + } + + return response; +} + #[update] pub fn add( trusted_source: Option,