canic/ops/ext/sharding/
mod.rs

1pub mod assign;
2pub mod hrw;
3pub mod policy;
4
5pub use {assign::*, policy::*};
6
7use crate::{
8    Error, ThisError,
9    ops::{OpsError, ext::ExtensionError},
10};
11
12///
13/// ShardingError
14/// Logical or configuration errors that occur during sharding planning.
15///
16
17#[derive(Debug, ThisError)]
18pub enum ShardingError {
19    #[error("shard pool not found: {0}")]
20    PoolNotFound(String),
21
22    #[error("shard cap reached")]
23    ShardCapReached,
24
25    #[error("shard creation blocked: {0}")]
26    ShardCreationBlocked(String),
27
28    #[error("sharding disabled")]
29    ShardingDisabled,
30
31    #[error("tenant '{0}' not found")]
32    TenantNotFound(String),
33}
34
35impl From<ShardingError> for Error {
36    fn from(err: ShardingError) -> Self {
37        OpsError::ExtensionError(ExtensionError::ShardingError(err)).into()
38    }
39}