Files
Genarrative/server-rs/crates/spacetime-module/src/jump_hop/tables.rs

122 lines
4.3 KiB
Rust
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
use crate::*;
const WORK_VISIBLE_DEFAULT: bool = true;
#[spacetimedb::table(
accessor = jump_hop_agent_session,
index(accessor = by_jump_hop_agent_session_owner_user_id, btree(columns = [owner_user_id]))
)]
pub struct JumpHopAgentSessionRow {
#[primary_key]
pub(crate) session_id: String,
pub(crate) owner_user_id: String,
pub(crate) seed_text: String,
pub(crate) current_turn: u32,
pub(crate) progress_percent: u32,
pub(crate) stage: String,
pub(crate) config_json: String,
pub(crate) draft_json: String,
pub(crate) last_assistant_reply: String,
pub(crate) published_profile_id: String,
pub(crate) created_at: Timestamp,
pub(crate) updated_at: Timestamp,
}
#[spacetimedb::table(
accessor = jump_hop_work_profile,
index(accessor = by_jump_hop_work_owner_user_id, btree(columns = [owner_user_id])),
index(accessor = by_jump_hop_work_publication_status, btree(columns = [publication_status]))
)]
pub struct JumpHopWorkProfileRow {
#[primary_key]
pub(crate) profile_id: String,
pub(crate) work_id: String,
pub(crate) owner_user_id: String,
pub(crate) source_session_id: String,
pub(crate) author_display_name: String,
pub(crate) work_title: String,
pub(crate) work_description: String,
pub(crate) theme_tags_json: String,
pub(crate) difficulty: String,
pub(crate) style_preset: String,
pub(crate) character_prompt: String,
pub(crate) tile_prompt: String,
pub(crate) end_mood_prompt: String,
pub(crate) character_asset_json: String,
pub(crate) tile_atlas_asset_json: String,
pub(crate) tile_assets_json: String,
pub(crate) path_json: String,
pub(crate) cover_image_src: String,
pub(crate) cover_composite: String,
pub(crate) generation_status: String,
pub(crate) publication_status: String,
pub(crate) play_count: u32,
pub(crate) updated_at: Timestamp,
pub(crate) published_at: Option<Timestamp>,
// 后台可见性开关;默认显示,隐藏后不进入公开列表。
#[default(WORK_VISIBLE_DEFAULT)]
pub(crate) visible: bool,
// 跳一跳生成主题独立于作品标题;旧行按 work_title 兜底。
#[default(None::<String>)]
pub(crate) theme_text: Option<String>,
// 跳一跳左上角真实可点击返回按钮的独立透明资产快照;旧行为空时运行态使用样式兜底。
#[default(None::<String>)]
pub(crate) back_button_asset_json: Option<String>,
}
#[spacetimedb::table(
accessor = jump_hop_runtime_run,
index(accessor = by_jump_hop_run_owner_user_id, btree(columns = [owner_user_id])),
index(accessor = by_jump_hop_run_profile_id, btree(columns = [profile_id]))
)]
pub struct JumpHopRuntimeRunRow {
#[primary_key]
pub(crate) run_id: String,
pub(crate) owner_user_id: String,
pub(crate) profile_id: String,
pub(crate) status: String,
pub(crate) started_at_ms: i64,
pub(crate) finished_at_ms: i64,
pub(crate) current_platform_index: u32,
pub(crate) score: u32,
pub(crate) combo: u32,
pub(crate) snapshot_json: String,
pub(crate) created_at: Timestamp,
pub(crate) updated_at: Timestamp,
// draft / published用于隔离试玩统计和公开排行榜旧行按 published 兜底。
#[default(None::<String>)]
pub(crate) runtime_mode: Option<String>,
}
#[spacetimedb::table(
accessor = jump_hop_event,
index(accessor = by_jump_hop_event_profile_id, btree(columns = [profile_id])),
index(accessor = by_jump_hop_event_run_id, btree(columns = [run_id]))
)]
pub struct JumpHopEventRow {
#[primary_key]
pub(crate) event_id: String,
pub(crate) owner_user_id: String,
pub(crate) profile_id: String,
pub(crate) run_id: String,
pub(crate) event_type: String,
pub(crate) result: String,
pub(crate) occurred_at: Timestamp,
}
#[spacetimedb::table(
accessor = jump_hop_leaderboard_entry,
index(accessor = by_jump_hop_leaderboard_profile_id, btree(columns = [profile_id])),
index(accessor = by_jump_hop_leaderboard_player_profile, btree(columns = [player_id, profile_id]))
)]
pub struct JumpHopLeaderboardEntryRow {
#[primary_key]
pub(crate) entry_id: String,
pub(crate) profile_id: String,
pub(crate) player_id: String,
pub(crate) successful_jump_count: u32,
pub(crate) duration_ms: u64,
pub(crate) run_id: String,
pub(crate) updated_at: Timestamp,
}