use rocketmq_error::CanonicalCondition;
use thiserror::Error;
#[derive(Clone, Debug, Error, PartialEq, Eq)]
pub enum ModelContractViolation {
#[error("topic creation attribute operation must use the add form")]
AttributeCreateRequiresAdd,
#[error("attribute delete operation targets a missing key")]
AttributeDeleteTargetsMissingKey,
#[error("attribute operation key has an unsupported form")]
AttributeOperationKeyHasUnsupportedForm,
#[error("attribute operation set contains a duplicate key")]
AttributeOperationSetContainsDuplicateKey,
#[error("attribute operation key is invalid")]
AttributeOperationKeyIsInvalid,
#[error("attribute operation targets an unsupported key")]
AttributeOperationTargetsUnsupportedKey,
#[error("attribute update targets an immutable attribute")]
AttributeUpdateTargetsImmutableAttribute,
#[error("attribute value does not satisfy the attribute rules")]
AttributeValueDoesNotSatisfyRules,
#[error("cleanup policy is invalid")]
InvalidCleanupPolicy,
#[error("consume queue type is invalid")]
InvalidCqType,
#[error("timer request does not contain a supported delivery property")]
MissingTimerDeliveryProperty,
#[error("timer property has an invalid unsigned integer value")]
InvalidTimerProperty {
property: &'static str,
},
#[error("timer precision is unsupported")]
UnsupportedTimerPrecision {
precision_ms: u64,
},
#[error("timer delivery time arithmetic overflowed")]
TimerDeliveryArithmeticOverflow,
#[error("timer delivery time is not in the future")]
TimerDeliveryTimeIsNotInFuture {
deliver_ms: u64,
now_ms: u64,
},
#[error("timer delay exceeds the configured maximum")]
TimerDelayExceedsMaximum {
delay_ms: u64,
max_delay_ms: u64,
},
#[error("POP retry policy does not describe a supported migration state")]
InvalidPopRetryPolicyState,
}
impl ModelContractViolation {
#[inline]
pub const fn condition(&self) -> CanonicalCondition {
CanonicalCondition::InvalidArgument
}
}