//! 任务领域事件。 //! //! 用于表达任务接受、推进、完成确认和交付等事实。 use crate::domain::{QuestLogEventKind, QuestSignalKind}; use serde::{Deserialize, Serialize}; #[cfg(feature = "spacetime-types")] use spacetimedb::SpacetimeType; #[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] pub enum QuestDomainEvent { QuestAccepted(QuestAcceptedEvent), QuestProgressed(QuestProgressedEvent), QuestLogRecorded(QuestLogRecordedEvent), } #[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] pub struct QuestAcceptedEvent { pub quest_id: String, pub occurred_at_micros: i64, } #[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] pub struct QuestProgressedEvent { pub quest_id: String, pub signal_kind: QuestSignalKind, pub changed_step_id: Option, pub occurred_at_micros: i64, } #[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] pub struct QuestLogRecordedEvent { pub quest_id: String, pub event_kind: QuestLogEventKind, pub occurred_at_micros: i64, }