Skip to main content

canic_core/api/lifecycle/
nonroot.rs

1use crate::{
2    config::schema::ConfigModel,
3    dto::{abi::v1::CanisterInitPayload, env::EnvBootstrapArgs},
4    ids::{CanisterRole, ManagedCanisterBinding},
5    lifecycle,
6};
7
8///
9/// LifecycleApi
10///
11
12pub struct LifecycleApi;
13
14impl LifecycleApi {
15    /// Return the immutable Registry-issued identity retained by this application Canister.
16    pub fn managed_binding() -> Result<ManagedCanisterBinding, crate::dto::error::Error> {
17        crate::ops::runtime::env::EnvOps::managed_binding().map_err(Into::into)
18    }
19
20    pub fn init_nonroot_canister_before_bootstrap(
21        role: CanisterRole,
22        payload: CanisterInitPayload,
23        application_init_args: Option<Vec<u8>>,
24        config: ConfigModel,
25        config_source: &str,
26        config_path: &str,
27    ) {
28        lifecycle::init::nonroot::init_nonroot_canister_before_bootstrap(
29            role,
30            payload,
31            application_init_args,
32            config,
33            config_source,
34            config_path,
35        );
36    }
37
38    pub fn schedule_init_nonroot_bootstrap() {
39        lifecycle::init::nonroot::schedule_init_nonroot_bootstrap();
40    }
41
42    pub fn init_local_nonroot_canister_before_bootstrap(
43        role: CanisterRole,
44        env: EnvBootstrapArgs,
45        config: ConfigModel,
46        config_source: &str,
47        config_path: &str,
48    ) {
49        lifecycle::init::nonroot::init_local_nonroot_canister_before_bootstrap(
50            role,
51            env,
52            config,
53            config_source,
54            config_path,
55        );
56    }
57
58    #[must_use]
59    pub fn post_upgrade_nonroot_canister_before_bootstrap(
60        role: CanisterRole,
61        config: ConfigModel,
62        config_source: &str,
63        config_path: &str,
64    ) -> bool {
65        lifecycle::upgrade::nonroot::post_upgrade_nonroot_canister_before_bootstrap(
66            role,
67            config,
68            config_source,
69            config_path,
70        )
71    }
72
73    pub fn schedule_post_upgrade_nonroot_bootstrap() {
74        lifecycle::upgrade::nonroot::schedule_post_upgrade_nonroot_bootstrap();
75    }
76
77    #[must_use]
78    pub fn post_upgrade_local_nonroot_canister_before_bootstrap(
79        role: CanisterRole,
80        config: ConfigModel,
81        config_source: &str,
82        config_path: &str,
83    ) -> bool {
84        lifecycle::upgrade::nonroot::post_upgrade_local_nonroot_canister_before_bootstrap(
85            role,
86            config,
87            config_source,
88            config_path,
89        )
90    }
91}