//! 大鱼吃小鱼写入命令。 //! //! 用于表达创建会话、写入消息、更新资产槽和推进运行态等输入。 use crate::domain::*; use serde::{Deserialize, Serialize}; #[cfg(feature = "spacetime-types")] use spacetimedb::SpacetimeType; /// 评估作品是否可以发布的纯领域命令。 /// /// adapter 负责把 SpacetimeDB row 或 HTTP DTO 映射成这里的输入; /// 命令本身只关心草稿与资产槽这些领域事实。 #[derive(Clone, Debug, PartialEq)] pub struct EvaluateBigFishPublishReadinessCommand { pub session_id: String, pub owner_user_id: String, pub draft: Option, pub evaluated_at_micros: i64, } /// 开始一局 Big Fish 运行态的纯领域命令。 #[derive(Clone, Debug, PartialEq)] pub struct StartBigFishRunCommand { pub run_id: String, pub session_id: String, pub owner_user_id: String, pub draft: Option, pub work_level_count: Option, pub started_at_micros: i64, } /// 提交方向输入并推进一帧的纯领域命令。 #[derive(Clone, Debug, PartialEq)] pub struct SubmitBigFishInputCommand { pub owner_user_id: String, pub x: f32, pub y: f32, pub submitted_at_micros: i64, pub current_snapshot: BigFishRuntimeSnapshot, } #[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] pub struct BigFishWorksListInput { pub owner_user_id: String, pub published_only: bool, } #[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] pub struct BigFishWorkDeleteInput { pub session_id: String, pub owner_user_id: String, } #[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] pub struct BigFishWorkRemixInput { pub source_session_id: String, pub target_session_id: String, pub target_owner_user_id: String, pub welcome_message_id: String, pub remixed_at_micros: i64, } #[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] pub struct BigFishWorksProcedureResult { pub ok: bool, pub items_json: Option, pub error_message: Option, } #[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] pub struct BigFishSessionCreateInput { pub session_id: String, pub owner_user_id: String, pub seed_text: String, pub welcome_message_id: String, pub welcome_message_text: String, pub created_at_micros: i64, } #[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] pub struct BigFishSessionGetInput { pub session_id: String, pub owner_user_id: String, } #[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] pub struct BigFishMessageSubmitInput { pub session_id: String, pub owner_user_id: String, pub user_message_id: String, pub user_message_text: String, pub assistant_message_id: String, pub submitted_at_micros: i64, } #[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] pub struct BigFishMessageFinalizeInput { pub session_id: String, pub owner_user_id: String, pub assistant_message_id: Option, pub assistant_reply_text: Option, pub stage: BigFishCreationStage, pub progress_percent: u32, pub anchor_pack_json: String, pub error_message: Option, pub updated_at_micros: i64, } #[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] pub struct BigFishDraftCompileInput { pub session_id: String, pub owner_user_id: String, pub draft_json: Option, pub compiled_at_micros: i64, } #[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] pub struct BigFishAssetGenerateInput { pub session_id: String, pub owner_user_id: String, pub asset_kind: BigFishAssetKind, pub level: Option, pub motion_key: Option, pub asset_url: Option, pub generated_at_micros: i64, } #[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] pub struct BigFishPublishInput { pub session_id: String, pub owner_user_id: String, pub published_at_micros: i64, } #[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] pub struct BigFishPlayRecordInput { pub session_id: String, pub user_id: String, pub elapsed_ms: u64, pub played_at_micros: i64, } #[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] pub struct BigFishWorkLikeRecordInput { pub session_id: String, pub user_id: String, pub liked_at_micros: i64, } #[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] pub struct BigFishRunStartInput { pub run_id: String, pub session_id: String, pub owner_user_id: String, pub started_at_micros: i64, } #[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] pub struct BigFishRunGetInput { pub run_id: String, pub owner_user_id: String, } #[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] pub struct BigFishInputSubmitInput { pub run_id: String, pub owner_user_id: String, pub x: f32, pub y: f32, pub submitted_at_micros: i64, } #[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] pub struct BigFishRunProcedureResult { pub ok: bool, pub run_json: Option, pub error_message: Option, }