61 lines
2.2 KiB
Rust
61 lines
2.2 KiB
Rust
//! 大鱼吃小鱼领域错误。
|
|
//!
|
|
//! 错误只表达玩法规则失败,由 HTTP 和 SpacetimeDB adapter 分别映射展示。
|
|
|
|
use std::{error::Error, fmt};
|
|
|
|
/// 大鱼吃小鱼应用服务错误。
|
|
///
|
|
/// 这里不携带 HTTP status 或 SpacetimeDB 字符串错误,避免领域层泄漏 adapter 语义。
|
|
#[derive(Clone, Debug, PartialEq, Eq)]
|
|
pub enum BigFishApplicationError {
|
|
MissingSessionId,
|
|
MissingOwnerUserId,
|
|
MissingRunId,
|
|
InvalidRuntimeInput,
|
|
}
|
|
|
|
impl fmt::Display for BigFishApplicationError {
|
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
|
match self {
|
|
Self::MissingSessionId => f.write_str("big_fish.session_id 不能为空"),
|
|
Self::MissingOwnerUserId => f.write_str("big_fish.owner_user_id 不能为空"),
|
|
Self::MissingRunId => f.write_str("big_fish.run_id 不能为空"),
|
|
Self::InvalidRuntimeInput => f.write_str("big_fish.runtime_input 非法"),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl Error for BigFishApplicationError {}
|
|
|
|
#[derive(Clone, Debug, PartialEq, Eq)]
|
|
pub enum BigFishFieldError {
|
|
MissingSessionId,
|
|
MissingOwnerUserId,
|
|
MissingMessageId,
|
|
MissingMessageText,
|
|
MissingDraft,
|
|
InvalidLevel,
|
|
InvalidAssetKind,
|
|
MissingRunId,
|
|
InvalidRuntimeInput,
|
|
}
|
|
|
|
impl fmt::Display for BigFishFieldError {
|
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
|
match self {
|
|
Self::MissingSessionId => f.write_str("big_fish.session_id 不能为空"),
|
|
Self::MissingOwnerUserId => f.write_str("big_fish.owner_user_id 不能为空"),
|
|
Self::MissingMessageId => f.write_str("big_fish.message_id 不能为空"),
|
|
Self::MissingMessageText => f.write_str("big_fish.message_text 不能为空"),
|
|
Self::MissingDraft => f.write_str("big_fish.draft 尚未编译"),
|
|
Self::InvalidLevel => f.write_str("big_fish.level 不在合法等级范围内"),
|
|
Self::InvalidAssetKind => f.write_str("big_fish.asset_kind 或动作位非法"),
|
|
Self::MissingRunId => f.write_str("big_fish.run_id 不能为空"),
|
|
Self::InvalidRuntimeInput => f.write_str("big_fish.runtime_input 非法"),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl Error for BigFishFieldError {}
|