canic_core/ops/storage/
mod.rs

1pub mod cycles;
2pub mod directory;
3pub mod env;
4pub mod memory;
5pub mod pool;
6pub mod scaling;
7pub mod sharding;
8pub mod state;
9pub mod topology;
10
11pub use crate::model::memory::{CanisterEntry, CanisterSummary};
12
13#[cfg(test)]
14use crate::ops::storage::env::EnvOpsError;
15use crate::{
16    Error, ThisError,
17    ops::{
18        OpsError,
19        storage::{
20            directory::{AppDirectoryOpsError, DirectoryView, SubnetDirectoryOpsError},
21            env::EnvData,
22            memory::MemoryRegistryOpsError,
23            sharding::ShardingRegistryOpsError,
24            state::AppStateOpsError,
25            topology::TopologyOpsError,
26        },
27    },
28};
29use candid::CandidType;
30use serde::Deserialize;
31
32///
33/// StorageOpsError
34///
35
36#[derive(Debug, ThisError)]
37pub enum StorageOpsError {
38    #[error(transparent)]
39    AppDirectoryOpsError(#[from] AppDirectoryOpsError),
40
41    #[error(transparent)]
42    AppStateOpsError(#[from] AppStateOpsError),
43
44    #[error(transparent)]
45    #[cfg(test)]
46    EnvOpsError(#[from] EnvOpsError),
47
48    #[error(transparent)]
49    MemoryRegistryOpsError(#[from] MemoryRegistryOpsError),
50
51    #[error(transparent)]
52    ShardingRegistryOpsError(#[from] ShardingRegistryOpsError),
53
54    #[error(transparent)]
55    SubnetDirectoryOpsError(#[from] SubnetDirectoryOpsError),
56
57    #[error(transparent)]
58    TopologyOpsError(#[from] TopologyOpsError),
59}
60
61impl From<StorageOpsError> for Error {
62    fn from(err: StorageOpsError) -> Self {
63        OpsError::StorageOpsError(err).into()
64    }
65}
66
67///
68/// CanisterInitPayload
69///
70
71#[derive(CandidType, Debug, Deserialize)]
72pub struct CanisterInitPayload {
73    pub env: EnvData,
74    pub app_directory: DirectoryView,
75    pub subnet_directory: DirectoryView,
76}
77
78impl CanisterInitPayload {
79    #[must_use]
80    pub const fn new(
81        env: EnvData,
82        app_directory: DirectoryView,
83        subnet_directory: DirectoryView,
84    ) -> Self {
85        Self {
86            env,
87            app_directory,
88            subnet_directory,
89        }
90    }
91}