252 lines
7.9 KiB
Rust
252 lines
7.9 KiB
Rust
//! 拼图写入命令。
|
|
//!
|
|
//! 命令只表达 SpacetimeDB procedure/reducer 需要写入的意图和参数,
|
|
//! 不包含 HTTP、前端展示或 SpacetimeDB table 操作。
|
|
|
|
use serde::{Deserialize, Serialize};
|
|
#[cfg(feature = "spacetime-types")]
|
|
use spacetimedb::SpacetimeType;
|
|
|
|
use crate::domain::PuzzleAgentStage;
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct PuzzleAgentSessionCreateInput {
|
|
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 PuzzleFormDraftSaveInput {
|
|
pub session_id: String,
|
|
pub owner_user_id: String,
|
|
pub seed_text: String,
|
|
pub saved_at_micros: i64,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct PuzzleAgentSessionGetInput {
|
|
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 PuzzleAgentMessageSubmitInput {
|
|
pub session_id: String,
|
|
pub owner_user_id: String,
|
|
pub user_message_id: String,
|
|
pub user_message_text: String,
|
|
pub submitted_at_micros: i64,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct PuzzleAgentMessageFinalizeInput {
|
|
pub session_id: String,
|
|
pub owner_user_id: String,
|
|
pub assistant_message_id: Option<String>,
|
|
pub assistant_reply_text: Option<String>,
|
|
pub stage: PuzzleAgentStage,
|
|
pub progress_percent: u32,
|
|
pub anchor_pack_json: String,
|
|
pub error_message: Option<String>,
|
|
pub updated_at_micros: i64,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct PuzzleDraftCompileInput {
|
|
pub session_id: String,
|
|
pub owner_user_id: String,
|
|
pub compiled_at_micros: i64,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct PuzzleGeneratedImagesSaveInput {
|
|
pub session_id: String,
|
|
pub owner_user_id: String,
|
|
pub level_id: Option<String>,
|
|
pub levels_json: Option<String>,
|
|
pub candidates_json: String,
|
|
pub saved_at_micros: i64,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct PuzzleSelectCoverImageInput {
|
|
pub session_id: String,
|
|
pub owner_user_id: String,
|
|
pub level_id: Option<String>,
|
|
pub candidate_id: String,
|
|
pub selected_at_micros: i64,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct PuzzlePublishInput {
|
|
pub session_id: String,
|
|
pub owner_user_id: String,
|
|
pub work_id: String,
|
|
pub profile_id: String,
|
|
pub author_display_name: String,
|
|
pub work_title: Option<String>,
|
|
pub work_description: Option<String>,
|
|
pub level_name: Option<String>,
|
|
pub summary: Option<String>,
|
|
pub theme_tags: Option<Vec<String>>,
|
|
pub levels_json: Option<String>,
|
|
pub published_at_micros: i64,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct PuzzleWorksListInput {
|
|
pub owner_user_id: String,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct PuzzleWorkGetInput {
|
|
pub profile_id: String,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct PuzzleWorkDeleteInput {
|
|
pub profile_id: String,
|
|
pub owner_user_id: String,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct PuzzleWorkUpsertInput {
|
|
pub profile_id: String,
|
|
pub owner_user_id: String,
|
|
pub work_title: String,
|
|
pub work_description: String,
|
|
pub level_name: String,
|
|
pub summary: String,
|
|
pub theme_tags: Vec<String>,
|
|
pub cover_image_src: Option<String>,
|
|
pub cover_asset_id: Option<String>,
|
|
pub levels_json: Option<String>,
|
|
pub updated_at_micros: i64,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct PuzzleWorkRemixInput {
|
|
pub source_profile_id: String,
|
|
pub target_owner_user_id: String,
|
|
pub target_session_id: String,
|
|
pub target_profile_id: String,
|
|
pub target_work_id: String,
|
|
pub author_display_name: 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 PuzzleWorkLikeRecordInput {
|
|
pub profile_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 PuzzleWorkPointIncentiveClaimInput {
|
|
pub profile_id: String,
|
|
pub owner_user_id: String,
|
|
pub claimed_at_micros: i64,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct PuzzleRunStartInput {
|
|
pub run_id: String,
|
|
pub owner_user_id: String,
|
|
pub profile_id: String,
|
|
pub level_id: Option<String>,
|
|
pub started_at_micros: i64,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct PuzzleRunGetInput {
|
|
pub run_id: String,
|
|
pub owner_user_id: String,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct PuzzleRunSwapInput {
|
|
pub run_id: String,
|
|
pub owner_user_id: String,
|
|
pub first_piece_id: String,
|
|
pub second_piece_id: String,
|
|
pub swapped_at_micros: i64,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct PuzzleRunDragInput {
|
|
pub run_id: String,
|
|
pub owner_user_id: String,
|
|
pub piece_id: String,
|
|
pub target_row: u32,
|
|
pub target_col: u32,
|
|
pub dragged_at_micros: i64,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct PuzzleRunNextLevelInput {
|
|
pub run_id: String,
|
|
pub owner_user_id: String,
|
|
#[serde(default)]
|
|
pub target_profile_id: Option<String>,
|
|
pub advanced_at_micros: i64,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct PuzzleRunPauseInput {
|
|
pub run_id: String,
|
|
pub owner_user_id: String,
|
|
pub paused: bool,
|
|
pub updated_at_micros: i64,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct PuzzleRunPropInput {
|
|
pub run_id: String,
|
|
pub owner_user_id: String,
|
|
pub prop_kind: String,
|
|
pub used_at_micros: i64,
|
|
#[serde(default)]
|
|
pub spent_points: u64,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct PuzzleLeaderboardSubmitInput {
|
|
pub run_id: String,
|
|
pub owner_user_id: String,
|
|
pub profile_id: String,
|
|
pub grid_size: u32,
|
|
pub elapsed_ms: u64,
|
|
pub nickname: String,
|
|
pub submitted_at_micros: i64,
|
|
}
|