41 lines
1.3 KiB
Rust
41 lines
1.3 KiB
Rust
//! 任务领域事件。
|
|
//!
|
|
//! 用于表达任务接受、推进、完成确认和交付等事实。
|
|
|
|
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<String>,
|
|
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,
|
|
}
|