//! 资产领域事件。 //! //! 用于表达资产已确认、绑定已变更和资产历史投影待刷新等事实。 use serde::{Deserialize, Serialize}; #[cfg(feature = "spacetime-types")] use spacetimedb::SpacetimeType; /// 资产领域事件。 /// /// 事件只描述已经发生的轻量事实,正式资产状态仍以 `asset_object` /// 和 `asset_entity_binding` 为准。 #[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] pub enum AssetDomainEvent { ObjectConfirmed(AssetObjectConfirmedEvent), EntityBindingChanged(AssetEntityBindingChangedEvent), } #[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] pub struct AssetObjectConfirmedEvent { pub asset_object_id: String, pub asset_kind: String, pub owner_user_id: Option, pub profile_id: Option, pub entity_id: Option, pub occurred_at_micros: i64, } #[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] pub struct AssetEntityBindingChangedEvent { pub binding_id: String, pub asset_object_id: String, pub entity_kind: String, pub entity_id: String, pub slot: String, pub asset_kind: String, pub owner_user_id: Option, pub profile_id: Option, pub occurred_at_micros: i64, }