Merge commit '01af298c' into codex/cache-view-procedure-hotpaths

# Conflicts:
#	server-rs/crates/spacetime-client/src/mapper.rs
#	server-rs/crates/spacetime-client/src/module_bindings/big_fish_work_summary_snapshot_type.rs
#	server-rs/crates/spacetime-module/src/square_hole/types.rs
This commit is contained in:
kdletters
2026-05-17 01:50:20 +08:00
107 changed files with 2694 additions and 1648 deletions

View File

@@ -17,6 +17,7 @@
"admin-web:preview": "npm --prefix apps/admin-web run preview --",
"spacetime:generate": "node scripts/generate-spacetime-bindings.mjs",
"check:api-server-env": "node scripts/check-api-server-env.mjs",
"check:spacetime-runtime-access": "node scripts/check-spacetime-runtime-access.mjs",
"deploy:rust:remote": "node scripts/run-bash-script.mjs scripts/deploy-rust-remote.sh",
"build:production-release": "node scripts/run-bash-script.mjs scripts/build-production-release.sh",
"build:rust:ubuntu": "node scripts/run-bash-script.mjs scripts/deploy-rust-remote.sh",
@@ -31,7 +32,7 @@
"check:visual-novel-vn11": "node scripts/check-visual-novel-vn11-negative-scan.mjs",
"check:visual-novel-vn12": "node scripts/check-visual-novel-vn12-acceptance.mjs",
"check:wechat-miniprogram-auth": "node scripts/check-wechat-miniprogram-auth-smoke.mjs",
"check:server-rs-ddd": "npm run check:spacetime-schema && node scripts/check-server-rs-ddd-boundaries.mjs",
"check:server-rs-ddd": "npm run check:spacetime-schema && npm run check:spacetime-runtime-access && node scripts/check-server-rs-ddd-boundaries.mjs",
"lint:eslint": "eslint . --ext .ts,.tsx,.js,.mjs,.cjs --max-warnings 0",
"lint:guardrails": "npm run lint:eslint",
"typecheck": "tsc -p tsconfig.typecheck-guardrails.json --noEmit",

View File

@@ -0,0 +1,221 @@
import fs from 'node:fs';
import path from 'node:path';
const repoRoot = process.cwd();
function readUtf8(relativePath) {
const absolute = path.join(repoRoot, relativePath);
if (!fs.existsSync(absolute)) {
failures.push(`${relativePath}: 文件不存在,无法执行 SpacetimeDB runtime access 检查`);
return null;
}
return fs.readFileSync(absolute, 'utf8');
}
const forbiddenSnippets = [
{
file: 'server-rs/crates/spacetime-module/src/puzzle.rs',
snippet: '.puzzle_work_profile()\n .iter()\n .filter(|row| row.owner_user_id == input.owner_user_id)',
reason: 'puzzle_work_profile 已有 by_puzzle_work_owner_user_id 索引',
},
{
file: 'server-rs/crates/spacetime-module/src/puzzle.rs',
snippet: '.puzzle_work_profile()\n .iter()\n .filter(|row| row.publication_status == PuzzlePublicationStatus::Published)',
reason: 'puzzle_work_profile 已有 by_puzzle_work_publication_status 索引',
},
{
file: 'server-rs/crates/spacetime-module/src/puzzle.rs',
snippet: '.puzzle_leaderboard_entry()\n .iter()\n .filter(|row| row.profile_id == profile_id && row.grid_size == grid_size)',
reason: 'puzzle_leaderboard_entry 已有 by_puzzle_leaderboard_profile_grid 索引',
},
{
file: 'server-rs/crates/spacetime-module/src/match3d/mod.rs',
snippet: '.match3d_work_profile()\n .iter()\n .filter(|row| {',
reason: 'match3d_work_profile 已有 owner/status 索引,列表不应整表过滤',
},
{
file: 'server-rs/crates/spacetime-module/src/visual_novel.rs',
snippet: '.visual_novel_work_profile()\n .iter()\n .filter(|row| {',
reason: 'visual_novel_work_profile 已有 owner/status 索引,列表不应整表过滤',
},
{
file: 'server-rs/crates/spacetime-module/src/asset_metadata/objects.rs',
snippet: '.asset_object()\n .iter()\n .find(|row| row.bucket == input.bucket && row.object_key == input.object_key)',
reason: 'asset_object 已有 by_bucket_object_key 索引',
},
{
file: 'server-rs/crates/spacetime-module/src/asset_metadata/objects.rs',
snippet: '.asset_object()\n .iter()\n .filter(|row| row.asset_kind == asset_kind)',
reason: 'asset_object 已有 asset_kind 索引',
},
{
file: 'server-rs/crates/spacetime-module/src/ai/stages.rs',
snippet: '.ai_task_stage()\n .iter()\n .filter(|row| row.task_id == task_id)',
reason: 'ai_task_stage 已有 by_ai_task_stage_task_id 索引',
},
{
file: 'server-rs/crates/spacetime-module/src/ai/stages.rs',
snippet: '.ai_text_chunk()\n .iter()\n .filter(|row| row.task_id == task_id && row.stage_kind == stage_kind)',
reason: 'ai_text_chunk 已有 by_ai_text_chunk_task_id / by_ai_text_chunk_task_stage_sequence 索引',
},
{
file: 'server-rs/crates/spacetime-module/src/ai/snapshots.rs',
snippet: '.ai_task_stage()\n .iter()\n .filter(|stage| stage.task_id == row.task_id)',
reason: 'ai_task_stage 快照组装应使用 by_ai_task_stage_task_id 索引',
},
{
file: 'server-rs/crates/spacetime-module/src/ai/snapshots.rs',
snippet: '.ai_result_reference()\n .iter()\n .filter(|reference| reference.task_id == row.task_id)',
reason: 'ai_result_reference 快照组装应使用 by_ai_result_reference_task_id 索引',
},
{
file: 'server-rs/crates/spacetime-module/src/runtime/profile.rs',
snippet: '.profile_save_archive()\n .iter()\n .filter(|row| row.user_id == validated_input.user_id)',
reason: 'profile_save_archive 已有 by_profile_save_archive_user_id 索引',
},
{
file: 'server-rs/crates/spacetime-module/src/runtime/profile.rs',
snippet: '.profile_played_world()\n .iter()\n .filter(|row| row.user_id == validated_input.user_id)',
reason: 'profile_played_world 已有 by_profile_played_world_user_id 索引',
},
{
file: 'server-rs/crates/spacetime-module/src/runtime/profile.rs',
snippet: '.profile_wallet_ledger()\n .iter()\n .filter(|row| row.user_id == validated_input.user_id)',
reason: 'profile_wallet_ledger 已有 by_profile_wallet_ledger_user_id 索引',
},
{
file: 'server-rs/crates/spacetime-module/src/runtime/profile.rs',
snippet: '.profile_referral_relation()\n .iter()\n .filter(|row| row.inviter_user_id == user_id)',
reason: 'profile_referral_relation 已有 by_profile_referral_inviter_user_id 索引',
},
{
file: 'server-rs/crates/spacetime-module/src/runtime/profile.rs',
snippet: '.profile_recharge_order()\n .iter()\n .filter(|row| row.user_id == user_id)',
reason: 'profile_recharge_order 已有 by_profile_recharge_order_user_id 索引',
},
{
file: 'server-rs/crates/spacetime-module/src/runtime/profile.rs',
snippet: '.tracking_daily_stat()\n .iter()\n .filter(|row| {',
reason: 'tracking_daily_stat 已有 by_tracking_daily_stat_scope_day / event_day 索引analytics 查询不应整表过滤',
},
{
file: 'server-rs/crates/spacetime-module/src/custom_world/mod.rs',
snippet: '.custom_world_profile()\n .iter()\n .find(|row| {',
reason: 'custom_world_profile owner 维度已有 by_custom_world_profile_owner_user_id 索引',
},
{
file: 'server-rs/crates/spacetime-module/src/custom_world/mod.rs',
snippet: '.custom_world_profile()\n .iter()\n .filter(|profile| {',
reason: 'custom_world_profile Published 同步已有 by_custom_world_profile_publication_status 索引',
},
];
const procedureResultFiles = [
'server-rs/crates/module-puzzle/src/application.rs',
'server-rs/crates/module-big-fish/src/domain.rs',
'server-rs/crates/spacetime-module/src/match3d/types.rs',
'server-rs/crates/spacetime-module/src/square_hole/types.rs',
'server-rs/crates/spacetime-module/src/visual_novel.rs',
'server-rs/crates/spacetime-module/src/bark_battle/types.rs',
];
const mapperCompatibilityFiles = [
'server-rs/crates/spacetime-client/src/mapper.rs',
'server-rs/crates/spacetime-client/src/lib.rs',
];
const bigFishRuntimeFiles = [
'server-rs/crates/module-big-fish/src/commands.rs',
'server-rs/crates/spacetime-module/src/big_fish/runtime.rs',
'server-rs/crates/spacetime-module/src/big_fish/session.rs',
];
const legacyMapperPatterns = [
{
pattern: /\b[A-Za-z0-9_]*JsonRecord\b/u,
reason: 'spacetime-client mapper 不应保留旧 ProcedureResult JSON 兼容 Record',
},
{
pattern: /\bCompatibleBigFish[A-Za-z0-9_]*\b/u,
reason: 'spacetime-client mapper 不应保留 BigFish 旧 JSON 兼容结构',
},
{
pattern: /\bmap_[A-Za-z0-9_]*_json\b/u,
reason: 'spacetime-client mapper 不应再通过 map_*_json 反序列化 procedure payload',
},
{
pattern: /serde_json::from_str::<[A-Za-z0-9_:]*JsonRecord/u,
reason: 'spacetime-client mapper 不应把 procedure result 再反序列化为 JsonRecord',
},
{
pattern: /\b(?:items|run|work|session|event|feedback)_json:\s*Some\(/u,
reason: 'mapper 测试与兼容路径不应再构造旧 procedure JSON 字符串字段',
},
];
const typedProcedurePayloadFieldPattern =
/\b(?:row|session|work|item|items|run|event|feedback)_json:\s*Option<String>/gu;
const failures = [];
for (const rule of forbiddenSnippets) {
const content = readUtf8(rule.file);
if (content === null) {
continue;
}
if (content.includes(rule.snippet)) {
failures.push(`${rule.file}: ${rule.reason}`);
}
}
for (const file of procedureResultFiles) {
const content = readUtf8(file);
if (content === null) {
continue;
}
const resultBlocks = content.match(/pub struct [A-Za-z0-9_]*ProcedureResult\s*\{[\s\S]*?\n\}/g) ?? [];
for (const block of resultBlocks) {
const jsonFields = block.match(typedProcedurePayloadFieldPattern);
if (jsonFields?.length) {
const name = block.match(/pub struct ([A-Za-z0-9_]+)/)?.[1] ?? 'ProcedureResult';
failures.push(`${file}: ${name} 仍通过 ${jsonFields.join(', ')} 跨层返回 JSON 字符串`);
}
}
}
for (const file of mapperCompatibilityFiles) {
const content = readUtf8(file);
if (content === null) {
continue;
}
for (const rule of legacyMapperPatterns) {
if (rule.pattern.test(content)) {
failures.push(`${file}: ${rule.reason}`);
}
}
}
for (const file of bigFishRuntimeFiles) {
const content = readUtf8(file);
if (content === null) {
continue;
}
const resultBlocks = content.match(/pub struct [A-Za-z0-9_]*ProcedureResult\s*\{[\s\S]*?\n\}/g) ?? [];
for (const block of resultBlocks) {
const jsonFields = block.match(typedProcedurePayloadFieldPattern);
if (jsonFields?.length) {
const name = block.match(/pub struct ([A-Za-z0-9_]+)/)?.[1] ?? 'ProcedureResult';
failures.push(`${file}: ${name} 仍通过 ${jsonFields.join(', ')} 跨层返回 JSON 字符串`);
}
}
}
if (failures.length > 0) {
console.error('SpacetimeDB runtime access 检查失败:');
for (const failure of failures) {
console.error(`- ${failure}`);
}
process.exit(1);
}
console.log('SpacetimeDB runtime access 检查通过。');

View File

@@ -0,0 +1 @@
//! 中文注释:汪汪声浪领域应用服务预留落位,当前规则仍集中在 domain/scoring。

View File

@@ -0,0 +1 @@
//! 中文注释:汪汪声浪命令归一化预留落位,当前无独立命令构造。

View File

@@ -0,0 +1 @@
//! 中文注释:汪汪声浪领域错误预留落位,当前复用调用方错误文本。

View File

@@ -0,0 +1 @@
//! 中文注释:汪汪声浪领域事件预留落位,当前不导出独立事件类型。

View File

@@ -1,4 +1,8 @@
mod application;
mod commands;
pub mod domain;
mod errors;
mod events;
pub mod scoring;
pub use domain::*;

View File

@@ -68,7 +68,7 @@ pub struct BigFishWorkRemixInput {
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct BigFishWorksProcedureResult {
pub ok: bool,
pub items_json: Option<String>,
pub items: Vec<BigFishWorkSummarySnapshot>,
pub error_message: Option<String>,
}
@@ -188,9 +188,9 @@ pub struct BigFishInputSubmitInput {
}
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct BigFishRunProcedureResult {
pub ok: bool,
pub run_json: Option<String>,
pub run: Option<BigFishRuntimeSnapshot>,
pub error_message: Option<String>,
}

View File

@@ -0,0 +1 @@
//! 中文注释:创意 Agent 领域事件预留落位,当前流程不导出独立事件类型。

View File

@@ -2,6 +2,7 @@ mod application;
mod commands;
mod domain;
mod errors;
mod events;
pub use application::*;
pub use commands::*;

View File

@@ -16,7 +16,7 @@ use crate::{domain::*, errors::PuzzleFieldError};
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct PuzzleAgentSessionProcedureResult {
pub ok: bool,
pub session_json: Option<String>,
pub session: Option<PuzzleAgentSessionSnapshot>,
pub error_message: Option<String>,
}
@@ -24,7 +24,7 @@ pub struct PuzzleAgentSessionProcedureResult {
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct PuzzleWorksProcedureResult {
pub ok: bool,
pub items_json: Option<String>,
pub items: Vec<PuzzleWorkProfile>,
pub error_message: Option<String>,
}
@@ -32,15 +32,15 @@ pub struct PuzzleWorksProcedureResult {
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct PuzzleWorkProcedureResult {
pub ok: bool,
pub item_json: Option<String>,
pub item: Option<PuzzleWorkProfile>,
pub error_message: Option<String>,
}
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct PuzzleRunProcedureResult {
pub ok: bool,
pub run_json: Option<String>,
pub run: Option<PuzzleRunSnapshot>,
pub error_message: Option<String>,
}

View File

@@ -0,0 +1 @@
//! 中文注释:视觉小说命令归一化预留落位,当前命令校验仍由 application 承接。

View File

@@ -0,0 +1 @@
//! 中文注释:视觉小说领域事件预留落位,当前不导出独立事件类型。

View File

@@ -1,6 +1,8 @@
mod application;
mod commands;
mod domain;
mod errors;
mod events;
pub use application::*;
pub use domain::*;

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,25 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct BarkBattleDraftConfigSnapshot {
pub draft_id: String,
pub owner_user_id: String,
pub work_id: String,
pub config_version: u64,
pub ruleset_version: String,
pub difficulty_preset: String,
pub leaderboard_enabled: bool,
pub config_json: String,
pub editor_state_json: String,
pub created_at_micros: i64,
pub updated_at_micros: i64,
}
impl __sdk::InModule for BarkBattleDraftConfigSnapshot {
type Module = super::RemoteModule;
}

View File

@@ -4,11 +4,17 @@
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::bark_battle_draft_config_snapshot_type::BarkBattleDraftConfigSnapshot;
use super::bark_battle_run_snapshot_type::BarkBattleRunSnapshot;
use super::bark_battle_runtime_config_snapshot_type::BarkBattleRuntimeConfigSnapshot;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct BarkBattleProcedureResult {
pub ok: bool,
pub row_json: Option<String>,
pub draft_config: Option<BarkBattleDraftConfigSnapshot>,
pub runtime_config: Option<BarkBattleRuntimeConfigSnapshot>,
pub run: Option<BarkBattleRunSnapshot>,
pub error_message: Option<String>,
}

View File

@@ -0,0 +1,32 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct BarkBattleRunSnapshot {
pub run_id: String,
pub owner_user_id: String,
pub work_id: String,
pub config_version: u64,
pub ruleset_version: String,
pub difficulty_preset: String,
pub leaderboard_enabled: bool,
pub status: String,
pub client_started_at_micros: i64,
pub server_started_at_micros: i64,
pub client_finished_at_micros: Option<i64>,
pub server_finished_at_micros: Option<i64>,
pub metrics_json: String,
pub server_result: Option<String>,
pub validation_status: String,
pub anti_cheat_flags_json: String,
pub leaderboard_score: Option<u64>,
pub score_id: Option<String>,
}
impl __sdk::InModule for BarkBattleRunSnapshot {
type Module = super::RemoteModule;
}

View File

@@ -0,0 +1,25 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct BarkBattleRuntimeConfigSnapshot {
pub work_id: String,
pub owner_user_id: String,
pub source_draft_id: Option<String>,
pub config_version: u64,
pub ruleset_version: String,
pub difficulty_preset: String,
pub leaderboard_enabled: bool,
pub config_json: String,
pub published_snapshot_json: String,
pub published_at_micros: i64,
pub updated_at_micros: i64,
}
impl __sdk::InModule for BarkBattleRuntimeConfigSnapshot {
type Module = super::RemoteModule;
}

View File

@@ -4,11 +4,13 @@
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::big_fish_runtime_snapshot_type::BigFishRuntimeSnapshot;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct BigFishRunProcedureResult {
pub ok: bool,
pub run_json: Option<String>,
pub run: Option<BigFishRuntimeSnapshot>,
pub error_message: Option<String>,
}

View File

@@ -0,0 +1,21 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::big_fish_vector_2_type::BigFishVector2;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct BigFishRuntimeEntitySnapshot {
pub entity_id: String,
pub level: u32,
pub position: BigFishVector2,
pub radius: f32,
pub offscreen_seconds: f32,
}
impl __sdk::InModule for BigFishRuntimeEntitySnapshot {
type Module = super::RemoteModule;
}

View File

@@ -0,0 +1,31 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::big_fish_run_status_type::BigFishRunStatus;
use super::big_fish_runtime_entity_snapshot_type::BigFishRuntimeEntitySnapshot;
use super::big_fish_vector_2_type::BigFishVector2;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct BigFishRuntimeSnapshot {
pub run_id: String,
pub session_id: String,
pub status: BigFishRunStatus,
pub tick: u64,
pub player_level: u32,
pub win_level: u32,
pub leader_entity_id: Option<String>,
pub owned_entities: Vec<BigFishRuntimeEntitySnapshot>,
pub wild_entities: Vec<BigFishRuntimeEntitySnapshot>,
pub camera_center: BigFishVector2,
pub last_input: BigFishVector2,
pub event_log: Vec<String>,
pub updated_at_micros: i64,
}
impl __sdk::InModule for BigFishRuntimeSnapshot {
type Module = super::RemoteModule;
}

View File

@@ -0,0 +1,16 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct BigFishVector2 {
pub x: f32,
pub y: f32,
}
impl __sdk::InModule for BigFishVector2 {
type Module = super::RemoteModule;
}

View File

@@ -4,11 +4,13 @@
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::big_fish_work_summary_snapshot_type::BigFishWorkSummarySnapshot;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct BigFishWorksProcedureResult {
pub ok: bool,
pub items_json: Option<String>,
pub items: Vec<BigFishWorkSummarySnapshot>,
pub error_message: Option<String>,
}

View File

@@ -0,0 +1,20 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct Match3DAgentMessageSnapshot {
pub message_id: String,
pub session_id: String,
pub role: String,
pub kind: String,
pub text: String,
pub created_at_micros: i64,
}
impl __sdk::InModule for Match3DAgentMessageSnapshot {
type Module = super::RemoteModule;
}

View File

@@ -4,11 +4,13 @@
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::match_3_d_agent_session_snapshot_type::Match3DAgentSessionSnapshot;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct Match3DAgentSessionProcedureResult {
pub ok: bool,
pub session_json: Option<String>,
pub session: Option<Match3DAgentSessionSnapshot>,
pub error_message: Option<String>,
}

View File

@@ -0,0 +1,31 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::match_3_d_agent_message_snapshot_type::Match3DAgentMessageSnapshot;
use super::match_3_d_creator_config_snapshot_type::Match3DCreatorConfigSnapshot;
use super::match_3_d_draft_snapshot_type::Match3DDraftSnapshot;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct Match3DAgentSessionSnapshot {
pub session_id: String,
pub owner_user_id: String,
pub seed_text: String,
pub current_turn: u32,
pub progress_percent: u32,
pub stage: String,
pub config: Match3DCreatorConfigSnapshot,
pub draft: Option<Match3DDraftSnapshot>,
pub messages: Vec<Match3DAgentMessageSnapshot>,
pub last_assistant_reply: String,
pub published_profile_id: Option<String>,
pub created_at_micros: i64,
pub updated_at_micros: i64,
}
impl __sdk::InModule for Match3DAgentSessionSnapshot {
type Module = super::RemoteModule;
}

View File

@@ -4,12 +4,14 @@
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::match_3_d_run_snapshot_type::Match3DRunSnapshot;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct Match3DClickItemProcedureResult {
pub ok: bool,
pub status: String,
pub run_json: Option<String>,
pub run: Option<Match3DRunSnapshot>,
pub accepted_item_instance_id: Option<String>,
pub cleared_item_instance_ids: Vec<String>,
pub failure_reason: Option<String>,

View File

@@ -0,0 +1,22 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct Match3DCreatorConfigSnapshot {
pub theme_text: String,
pub reference_image_src: Option<String>,
pub clear_count: u32,
pub difficulty: u32,
pub asset_style_id: Option<String>,
pub asset_style_label: Option<String>,
pub asset_style_prompt: Option<String>,
pub generate_click_sound: bool,
}
impl __sdk::InModule for Match3DCreatorConfigSnapshot {
type Module = super::RemoteModule;
}

View File

@@ -0,0 +1,22 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct Match3DDraftSnapshot {
pub profile_id: String,
pub game_name: String,
pub theme_text: String,
pub summary_text: String,
pub tags: Vec<String>,
pub clear_count: u32,
pub difficulty: u32,
pub generated_item_assets_json: Option<String>,
}
impl __sdk::InModule for Match3DDraftSnapshot {
type Module = super::RemoteModule;
}

View File

@@ -0,0 +1,23 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct Match3DItemSnapshot {
pub item_instance_id: String,
pub item_type_id: String,
pub visual_key: String,
pub x: f32,
pub y: f32,
pub radius: f32,
pub layer: u32,
pub state: String,
pub clickable: bool,
}
impl __sdk::InModule for Match3DItemSnapshot {
type Module = super::RemoteModule;
}

View File

@@ -4,11 +4,13 @@
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::match_3_d_run_snapshot_type::Match3DRunSnapshot;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct Match3DRunProcedureResult {
pub ok: bool,
pub run_json: Option<String>,
pub run: Option<Match3DRunSnapshot>,
pub error_message: Option<String>,
}

View File

@@ -0,0 +1,31 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::match_3_d_item_snapshot_type::Match3DItemSnapshot;
use super::match_3_d_tray_slot_snapshot_type::Match3DTraySlotSnapshot;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct Match3DRunSnapshot {
pub run_id: String,
pub profile_id: String,
pub status: String,
pub snapshot_version: u32,
pub started_at_ms: i64,
pub duration_limit_ms: i64,
pub server_now_ms: i64,
pub remaining_ms: i64,
pub clear_count: u32,
pub total_item_count: u32,
pub cleared_item_count: u32,
pub tray_slots: Vec<Match3DTraySlotSnapshot>,
pub items: Vec<Match3DItemSnapshot>,
pub failure_reason: Option<String>,
}
impl __sdk::InModule for Match3DRunSnapshot {
type Module = super::RemoteModule;
}

View File

@@ -0,0 +1,18 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct Match3DTraySlotSnapshot {
pub slot_index: u32,
pub item_instance_id: Option<String>,
pub item_type_id: Option<String>,
pub visual_key: Option<String>,
}
impl __sdk::InModule for Match3DTraySlotSnapshot {
type Module = super::RemoteModule;
}

View File

@@ -4,11 +4,13 @@
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::match_3_d_work_snapshot_type::Match3DWorkSnapshot;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct Match3DWorkProcedureResult {
pub ok: bool,
pub work_json: Option<String>,
pub work: Option<Match3DWorkSnapshot>,
pub error_message: Option<String>,
}

View File

@@ -0,0 +1,35 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::match_3_d_creator_config_snapshot_type::Match3DCreatorConfigSnapshot;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct Match3DWorkSnapshot {
pub profile_id: String,
pub owner_user_id: String,
pub source_session_id: String,
pub author_display_name: String,
pub game_name: String,
pub theme_text: String,
pub summary_text: String,
pub tags: Vec<String>,
pub cover_image_src: String,
pub cover_asset_id: String,
pub clear_count: u32,
pub difficulty: u32,
pub config: Match3DCreatorConfigSnapshot,
pub publication_status: String,
pub publish_ready: bool,
pub play_count: u32,
pub updated_at_micros: i64,
pub published_at_micros: Option<i64>,
pub generated_item_assets_json: Option<String>,
}
impl __sdk::InModule for Match3DWorkSnapshot {
type Module = super::RemoteModule;
}

View File

@@ -4,11 +4,13 @@
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::match_3_d_work_snapshot_type::Match3DWorkSnapshot;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct Match3DWorksProcedureResult {
pub ok: bool,
pub items_json: Option<String>,
pub items: Vec<Match3DWorkSnapshot>,
pub error_message: Option<String>,
}

View File

@@ -95,6 +95,7 @@ pub mod auth_store_snapshot_type;
pub mod auth_store_snapshot_upsert_input_type;
pub mod authorize_database_migration_operator_procedure;
pub mod bark_battle_draft_config_row_type;
pub mod bark_battle_draft_config_snapshot_type;
pub mod bark_battle_draft_config_table;
pub mod bark_battle_draft_config_upsert_input_type;
pub mod bark_battle_draft_create_input_type;
@@ -107,8 +108,10 @@ pub mod bark_battle_published_config_row_type;
pub mod bark_battle_published_config_table;
pub mod bark_battle_run_finish_input_type;
pub mod bark_battle_run_get_input_type;
pub mod bark_battle_run_snapshot_type;
pub mod bark_battle_run_start_input_type;
pub mod bark_battle_runtime_config_get_input_type;
pub mod bark_battle_runtime_config_snapshot_type;
pub mod bark_battle_runtime_run_row_type;
pub mod bark_battle_runtime_run_table;
pub mod bark_battle_score_record_row_type;
@@ -161,13 +164,16 @@ pub mod big_fish_run_get_input_type;
pub mod big_fish_run_procedure_result_type;
pub mod big_fish_run_start_input_type;
pub mod big_fish_run_status_type;
pub mod big_fish_runtime_entity_snapshot_type;
pub mod big_fish_runtime_params_type;
pub mod big_fish_runtime_run_table;
pub mod big_fish_runtime_run_type;
pub mod big_fish_runtime_snapshot_type;
pub mod big_fish_session_create_input_type;
pub mod big_fish_session_get_input_type;
pub mod big_fish_session_procedure_result_type;
pub mod big_fish_session_snapshot_type;
pub mod big_fish_vector_2_type;
pub mod big_fish_work_delete_input_type;
pub mod big_fish_work_like_record_input_type;
pub mod big_fish_work_remix_input_type;
@@ -404,32 +410,40 @@ pub mod list_visual_novel_works_procedure;
pub mod mark_profile_recharge_order_paid_and_return_procedure;
pub mod match_3_d_agent_message_finalize_input_type;
pub mod match_3_d_agent_message_row_type;
pub mod match_3_d_agent_message_snapshot_type;
pub mod match_3_d_agent_message_submit_input_type;
pub mod match_3_d_agent_message_table;
pub mod match_3_d_agent_session_create_input_type;
pub mod match_3_d_agent_session_get_input_type;
pub mod match_3_d_agent_session_procedure_result_type;
pub mod match_3_d_agent_session_row_type;
pub mod match_3_d_agent_session_snapshot_type;
pub mod match_3_d_agent_session_table;
pub mod match_3_d_click_item_procedure_result_type;
pub mod match_3_d_creator_config_snapshot_type;
pub mod match_3_d_draft_compile_input_type;
pub mod match_3_d_draft_snapshot_type;
pub mod match_3_d_gallery_view_row_type;
pub mod match_3_d_gallery_view_table;
pub mod match_3_d_item_snapshot_type;
pub mod match_3_d_run_click_input_type;
pub mod match_3_d_run_get_input_type;
pub mod match_3_d_run_procedure_result_type;
pub mod match_3_d_run_restart_input_type;
pub mod match_3_d_run_snapshot_type;
pub mod match_3_d_run_start_input_type;
pub mod match_3_d_run_stop_input_type;
pub mod match_3_d_run_time_up_input_type;
pub mod match_3_d_runtime_run_row_type;
pub mod match_3_d_runtime_run_table;
pub mod match_3_d_tray_slot_snapshot_type;
pub mod match_3_d_work_delete_input_type;
pub mod match_3_d_work_get_input_type;
pub mod match_3_d_work_procedure_result_type;
pub mod match_3_d_work_profile_row_type;
pub mod match_3_d_work_profile_table;
pub mod match_3_d_work_publish_input_type;
pub mod match_3_d_work_snapshot_type;
pub mod match_3_d_work_update_input_type;
pub mod match_3_d_works_list_input_type;
pub mod match_3_d_works_procedure_result_type;
@@ -503,40 +517,58 @@ pub mod puzzle_agent_message_finalize_input_type;
pub mod puzzle_agent_message_kind_type;
pub mod puzzle_agent_message_role_type;
pub mod puzzle_agent_message_row_type;
pub mod puzzle_agent_message_snapshot_type;
pub mod puzzle_agent_message_submit_input_type;
pub mod puzzle_agent_message_table;
pub mod puzzle_agent_session_create_input_type;
pub mod puzzle_agent_session_get_input_type;
pub mod puzzle_agent_session_procedure_result_type;
pub mod puzzle_agent_session_row_type;
pub mod puzzle_agent_session_snapshot_type;
pub mod puzzle_agent_session_table;
pub mod puzzle_agent_stage_type;
pub mod puzzle_agent_suggested_action_type;
pub mod puzzle_anchor_item_type;
pub mod puzzle_anchor_pack_type;
pub mod puzzle_anchor_status_type;
pub mod puzzle_audio_asset_type;
pub mod puzzle_board_snapshot_type;
pub mod puzzle_cell_position_type;
pub mod puzzle_creator_intent_type;
pub mod puzzle_draft_compile_input_type;
pub mod puzzle_draft_level_type;
pub mod puzzle_event_kind_type;
pub mod puzzle_event_table;
pub mod puzzle_event_type;
pub mod puzzle_form_draft_save_input_type;
pub mod puzzle_form_draft_type;
pub mod puzzle_gallery_view_table;
pub mod puzzle_generated_image_candidate_type;
pub mod puzzle_generated_images_save_input_type;
pub mod puzzle_leaderboard_entry_row_type;
pub mod puzzle_leaderboard_entry_table;
pub mod puzzle_leaderboard_entry_type;
pub mod puzzle_leaderboard_submit_input_type;
pub mod puzzle_merged_group_state_type;
pub mod puzzle_piece_state_type;
pub mod puzzle_publication_status_type;
pub mod puzzle_publish_input_type;
pub mod puzzle_recommended_next_work_type;
pub mod puzzle_result_draft_type;
pub mod puzzle_result_preview_blocker_type;
pub mod puzzle_result_preview_envelope_type;
pub mod puzzle_result_preview_finding_type;
pub mod puzzle_run_drag_input_type;
pub mod puzzle_run_get_input_type;
pub mod puzzle_run_next_level_input_type;
pub mod puzzle_run_pause_input_type;
pub mod puzzle_run_procedure_result_type;
pub mod puzzle_run_prop_input_type;
pub mod puzzle_run_snapshot_type;
pub mod puzzle_run_start_input_type;
pub mod puzzle_run_swap_input_type;
pub mod puzzle_runtime_level_snapshot_type;
pub mod puzzle_runtime_level_status_type;
pub mod puzzle_runtime_run_row_type;
pub mod puzzle_runtime_run_table;
pub mod puzzle_select_cover_image_input_type;
@@ -740,34 +772,43 @@ pub mod seed_analytics_date_dimensions_reducer;
pub mod select_puzzle_cover_image_procedure;
pub mod square_hole_agent_message_finalize_input_type;
pub mod square_hole_agent_message_row_type;
pub mod square_hole_agent_message_snapshot_type;
pub mod square_hole_agent_message_submit_input_type;
pub mod square_hole_agent_message_table;
pub mod square_hole_agent_session_create_input_type;
pub mod square_hole_agent_session_get_input_type;
pub mod square_hole_agent_session_procedure_result_type;
pub mod square_hole_agent_session_row_type;
pub mod square_hole_agent_session_snapshot_type;
pub mod square_hole_agent_session_table;
pub mod square_hole_creator_config_snapshot_type;
pub mod square_hole_draft_compile_input_type;
pub mod square_hole_draft_snapshot_type;
pub mod square_hole_drop_feedback_snapshot_type;
pub mod square_hole_drop_shape_procedure_result_type;
pub mod square_hole_gallery_view_row_type;
pub mod square_hole_gallery_view_table;
pub mod square_hole_hole_option_snapshot_type;
pub mod square_hole_hole_snapshot_type;
pub mod square_hole_run_drop_input_type;
pub mod square_hole_run_get_input_type;
pub mod square_hole_run_procedure_result_type;
pub mod square_hole_run_restart_input_type;
pub mod square_hole_run_snapshot_type;
pub mod square_hole_run_start_input_type;
pub mod square_hole_run_stop_input_type;
pub mod square_hole_run_time_up_input_type;
pub mod square_hole_runtime_run_row_type;
pub mod square_hole_runtime_run_table;
pub mod square_hole_shape_option_snapshot_type;
pub mod square_hole_shape_snapshot_type;
pub mod square_hole_work_delete_input_type;
pub mod square_hole_work_get_input_type;
pub mod square_hole_work_procedure_result_type;
pub mod square_hole_work_profile_row_type;
pub mod square_hole_work_profile_table;
pub mod square_hole_work_publish_input_type;
pub mod square_hole_work_snapshot_type;
pub mod square_hole_work_update_input_type;
pub mod square_hole_works_list_input_type;
pub mod square_hole_works_procedure_result_type;
@@ -844,26 +885,33 @@ pub mod user_browse_history_table;
pub mod user_browse_history_type;
pub mod visual_novel_agent_message_finalize_input_type;
pub mod visual_novel_agent_message_row_type;
pub mod visual_novel_agent_message_snapshot_type;
pub mod visual_novel_agent_message_submit_input_type;
pub mod visual_novel_agent_message_table;
pub mod visual_novel_agent_session_create_input_type;
pub mod visual_novel_agent_session_get_input_type;
pub mod visual_novel_agent_session_procedure_result_type;
pub mod visual_novel_agent_session_row_type;
pub mod visual_novel_agent_session_snapshot_type;
pub mod visual_novel_agent_session_table;
pub mod visual_novel_gallery_view_row_type;
pub mod visual_novel_gallery_view_table;
pub mod visual_novel_history_procedure_result_type;
pub mod visual_novel_json_field_type;
pub mod visual_novel_json_value_type;
pub mod visual_novel_run_get_input_type;
pub mod visual_novel_run_procedure_result_type;
pub mod visual_novel_run_snapshot_type;
pub mod visual_novel_run_snapshot_upsert_input_type;
pub mod visual_novel_run_start_input_type;
pub mod visual_novel_runtime_event_procedure_result_type;
pub mod visual_novel_runtime_event_record_input_type;
pub mod visual_novel_runtime_event_snapshot_type;
pub mod visual_novel_runtime_event_table;
pub mod visual_novel_runtime_event_type;
pub mod visual_novel_runtime_history_append_input_type;
pub mod visual_novel_runtime_history_entry_row_type;
pub mod visual_novel_runtime_history_entry_snapshot_type;
pub mod visual_novel_runtime_history_entry_table;
pub mod visual_novel_runtime_history_list_input_type;
pub mod visual_novel_runtime_run_row_type;
@@ -875,6 +923,7 @@ pub mod visual_novel_work_procedure_result_type;
pub mod visual_novel_work_profile_row_type;
pub mod visual_novel_work_profile_table;
pub mod visual_novel_work_publish_input_type;
pub mod visual_novel_work_snapshot_type;
pub mod visual_novel_work_update_input_type;
pub mod visual_novel_works_list_input_type;
pub mod visual_novel_works_procedure_result_type;
@@ -968,6 +1017,7 @@ pub use auth_store_snapshot_type::AuthStoreSnapshot;
pub use auth_store_snapshot_upsert_input_type::AuthStoreSnapshotUpsertInput;
pub use authorize_database_migration_operator_procedure::authorize_database_migration_operator;
pub use bark_battle_draft_config_row_type::BarkBattleDraftConfigRow;
pub use bark_battle_draft_config_snapshot_type::BarkBattleDraftConfigSnapshot;
pub use bark_battle_draft_config_table::*;
pub use bark_battle_draft_config_upsert_input_type::BarkBattleDraftConfigUpsertInput;
pub use bark_battle_draft_create_input_type::BarkBattleDraftCreateInput;
@@ -980,8 +1030,10 @@ pub use bark_battle_published_config_row_type::BarkBattlePublishedConfigRow;
pub use bark_battle_published_config_table::*;
pub use bark_battle_run_finish_input_type::BarkBattleRunFinishInput;
pub use bark_battle_run_get_input_type::BarkBattleRunGetInput;
pub use bark_battle_run_snapshot_type::BarkBattleRunSnapshot;
pub use bark_battle_run_start_input_type::BarkBattleRunStartInput;
pub use bark_battle_runtime_config_get_input_type::BarkBattleRuntimeConfigGetInput;
pub use bark_battle_runtime_config_snapshot_type::BarkBattleRuntimeConfigSnapshot;
pub use bark_battle_runtime_run_row_type::BarkBattleRuntimeRunRow;
pub use bark_battle_runtime_run_table::*;
pub use bark_battle_score_record_row_type::BarkBattleScoreRecordRow;
@@ -1034,13 +1086,16 @@ pub use big_fish_run_get_input_type::BigFishRunGetInput;
pub use big_fish_run_procedure_result_type::BigFishRunProcedureResult;
pub use big_fish_run_start_input_type::BigFishRunStartInput;
pub use big_fish_run_status_type::BigFishRunStatus;
pub use big_fish_runtime_entity_snapshot_type::BigFishRuntimeEntitySnapshot;
pub use big_fish_runtime_params_type::BigFishRuntimeParams;
pub use big_fish_runtime_run_table::*;
pub use big_fish_runtime_run_type::BigFishRuntimeRun;
pub use big_fish_runtime_snapshot_type::BigFishRuntimeSnapshot;
pub use big_fish_session_create_input_type::BigFishSessionCreateInput;
pub use big_fish_session_get_input_type::BigFishSessionGetInput;
pub use big_fish_session_procedure_result_type::BigFishSessionProcedureResult;
pub use big_fish_session_snapshot_type::BigFishSessionSnapshot;
pub use big_fish_vector_2_type::BigFishVector2;
pub use big_fish_work_delete_input_type::BigFishWorkDeleteInput;
pub use big_fish_work_like_record_input_type::BigFishWorkLikeRecordInput;
pub use big_fish_work_remix_input_type::BigFishWorkRemixInput;
@@ -1277,32 +1332,40 @@ pub use list_visual_novel_works_procedure::list_visual_novel_works;
pub use mark_profile_recharge_order_paid_and_return_procedure::mark_profile_recharge_order_paid_and_return;
pub use match_3_d_agent_message_finalize_input_type::Match3DAgentMessageFinalizeInput;
pub use match_3_d_agent_message_row_type::Match3DAgentMessageRow;
pub use match_3_d_agent_message_snapshot_type::Match3DAgentMessageSnapshot;
pub use match_3_d_agent_message_submit_input_type::Match3DAgentMessageSubmitInput;
pub use match_3_d_agent_message_table::*;
pub use match_3_d_agent_session_create_input_type::Match3DAgentSessionCreateInput;
pub use match_3_d_agent_session_get_input_type::Match3DAgentSessionGetInput;
pub use match_3_d_agent_session_procedure_result_type::Match3DAgentSessionProcedureResult;
pub use match_3_d_agent_session_row_type::Match3DAgentSessionRow;
pub use match_3_d_agent_session_snapshot_type::Match3DAgentSessionSnapshot;
pub use match_3_d_agent_session_table::*;
pub use match_3_d_click_item_procedure_result_type::Match3DClickItemProcedureResult;
pub use match_3_d_creator_config_snapshot_type::Match3DCreatorConfigSnapshot;
pub use match_3_d_draft_compile_input_type::Match3DDraftCompileInput;
pub use match_3_d_draft_snapshot_type::Match3DDraftSnapshot;
pub use match_3_d_gallery_view_row_type::Match3DGalleryViewRow;
pub use match_3_d_gallery_view_table::*;
pub use match_3_d_item_snapshot_type::Match3DItemSnapshot;
pub use match_3_d_run_click_input_type::Match3DRunClickInput;
pub use match_3_d_run_get_input_type::Match3DRunGetInput;
pub use match_3_d_run_procedure_result_type::Match3DRunProcedureResult;
pub use match_3_d_run_restart_input_type::Match3DRunRestartInput;
pub use match_3_d_run_snapshot_type::Match3DRunSnapshot;
pub use match_3_d_run_start_input_type::Match3DRunStartInput;
pub use match_3_d_run_stop_input_type::Match3DRunStopInput;
pub use match_3_d_run_time_up_input_type::Match3DRunTimeUpInput;
pub use match_3_d_runtime_run_row_type::Match3DRuntimeRunRow;
pub use match_3_d_runtime_run_table::*;
pub use match_3_d_tray_slot_snapshot_type::Match3DTraySlotSnapshot;
pub use match_3_d_work_delete_input_type::Match3DWorkDeleteInput;
pub use match_3_d_work_get_input_type::Match3DWorkGetInput;
pub use match_3_d_work_procedure_result_type::Match3DWorkProcedureResult;
pub use match_3_d_work_profile_row_type::Match3DWorkProfileRow;
pub use match_3_d_work_profile_table::*;
pub use match_3_d_work_publish_input_type::Match3DWorkPublishInput;
pub use match_3_d_work_snapshot_type::Match3DWorkSnapshot;
pub use match_3_d_work_update_input_type::Match3DWorkUpdateInput;
pub use match_3_d_works_list_input_type::Match3DWorksListInput;
pub use match_3_d_works_procedure_result_type::Match3DWorksProcedureResult;
@@ -1376,40 +1439,58 @@ pub use puzzle_agent_message_finalize_input_type::PuzzleAgentMessageFinalizeInpu
pub use puzzle_agent_message_kind_type::PuzzleAgentMessageKind;
pub use puzzle_agent_message_role_type::PuzzleAgentMessageRole;
pub use puzzle_agent_message_row_type::PuzzleAgentMessageRow;
pub use puzzle_agent_message_snapshot_type::PuzzleAgentMessageSnapshot;
pub use puzzle_agent_message_submit_input_type::PuzzleAgentMessageSubmitInput;
pub use puzzle_agent_message_table::*;
pub use puzzle_agent_session_create_input_type::PuzzleAgentSessionCreateInput;
pub use puzzle_agent_session_get_input_type::PuzzleAgentSessionGetInput;
pub use puzzle_agent_session_procedure_result_type::PuzzleAgentSessionProcedureResult;
pub use puzzle_agent_session_row_type::PuzzleAgentSessionRow;
pub use puzzle_agent_session_snapshot_type::PuzzleAgentSessionSnapshot;
pub use puzzle_agent_session_table::*;
pub use puzzle_agent_stage_type::PuzzleAgentStage;
pub use puzzle_agent_suggested_action_type::PuzzleAgentSuggestedAction;
pub use puzzle_anchor_item_type::PuzzleAnchorItem;
pub use puzzle_anchor_pack_type::PuzzleAnchorPack;
pub use puzzle_anchor_status_type::PuzzleAnchorStatus;
pub use puzzle_audio_asset_type::PuzzleAudioAsset;
pub use puzzle_board_snapshot_type::PuzzleBoardSnapshot;
pub use puzzle_cell_position_type::PuzzleCellPosition;
pub use puzzle_creator_intent_type::PuzzleCreatorIntent;
pub use puzzle_draft_compile_input_type::PuzzleDraftCompileInput;
pub use puzzle_draft_level_type::PuzzleDraftLevel;
pub use puzzle_event_kind_type::PuzzleEventKind;
pub use puzzle_event_table::*;
pub use puzzle_event_type::PuzzleEvent;
pub use puzzle_form_draft_save_input_type::PuzzleFormDraftSaveInput;
pub use puzzle_form_draft_type::PuzzleFormDraft;
pub use puzzle_gallery_view_table::*;
pub use puzzle_generated_image_candidate_type::PuzzleGeneratedImageCandidate;
pub use puzzle_generated_images_save_input_type::PuzzleGeneratedImagesSaveInput;
pub use puzzle_leaderboard_entry_row_type::PuzzleLeaderboardEntryRow;
pub use puzzle_leaderboard_entry_table::*;
pub use puzzle_leaderboard_entry_type::PuzzleLeaderboardEntry;
pub use puzzle_leaderboard_submit_input_type::PuzzleLeaderboardSubmitInput;
pub use puzzle_merged_group_state_type::PuzzleMergedGroupState;
pub use puzzle_piece_state_type::PuzzlePieceState;
pub use puzzle_publication_status_type::PuzzlePublicationStatus;
pub use puzzle_publish_input_type::PuzzlePublishInput;
pub use puzzle_recommended_next_work_type::PuzzleRecommendedNextWork;
pub use puzzle_result_draft_type::PuzzleResultDraft;
pub use puzzle_result_preview_blocker_type::PuzzleResultPreviewBlocker;
pub use puzzle_result_preview_envelope_type::PuzzleResultPreviewEnvelope;
pub use puzzle_result_preview_finding_type::PuzzleResultPreviewFinding;
pub use puzzle_run_drag_input_type::PuzzleRunDragInput;
pub use puzzle_run_get_input_type::PuzzleRunGetInput;
pub use puzzle_run_next_level_input_type::PuzzleRunNextLevelInput;
pub use puzzle_run_pause_input_type::PuzzleRunPauseInput;
pub use puzzle_run_procedure_result_type::PuzzleRunProcedureResult;
pub use puzzle_run_prop_input_type::PuzzleRunPropInput;
pub use puzzle_run_snapshot_type::PuzzleRunSnapshot;
pub use puzzle_run_start_input_type::PuzzleRunStartInput;
pub use puzzle_run_swap_input_type::PuzzleRunSwapInput;
pub use puzzle_runtime_level_snapshot_type::PuzzleRuntimeLevelSnapshot;
pub use puzzle_runtime_level_status_type::PuzzleRuntimeLevelStatus;
pub use puzzle_runtime_run_row_type::PuzzleRuntimeRunRow;
pub use puzzle_runtime_run_table::*;
pub use puzzle_select_cover_image_input_type::PuzzleSelectCoverImageInput;
@@ -1613,34 +1694,43 @@ pub use seed_analytics_date_dimensions_reducer::seed_analytics_date_dimensions;
pub use select_puzzle_cover_image_procedure::select_puzzle_cover_image;
pub use square_hole_agent_message_finalize_input_type::SquareHoleAgentMessageFinalizeInput;
pub use square_hole_agent_message_row_type::SquareHoleAgentMessageRow;
pub use square_hole_agent_message_snapshot_type::SquareHoleAgentMessageSnapshot;
pub use square_hole_agent_message_submit_input_type::SquareHoleAgentMessageSubmitInput;
pub use square_hole_agent_message_table::*;
pub use square_hole_agent_session_create_input_type::SquareHoleAgentSessionCreateInput;
pub use square_hole_agent_session_get_input_type::SquareHoleAgentSessionGetInput;
pub use square_hole_agent_session_procedure_result_type::SquareHoleAgentSessionProcedureResult;
pub use square_hole_agent_session_row_type::SquareHoleAgentSessionRow;
pub use square_hole_agent_session_snapshot_type::SquareHoleAgentSessionSnapshot;
pub use square_hole_agent_session_table::*;
pub use square_hole_creator_config_snapshot_type::SquareHoleCreatorConfigSnapshot;
pub use square_hole_draft_compile_input_type::SquareHoleDraftCompileInput;
pub use square_hole_draft_snapshot_type::SquareHoleDraftSnapshot;
pub use square_hole_drop_feedback_snapshot_type::SquareHoleDropFeedbackSnapshot;
pub use square_hole_drop_shape_procedure_result_type::SquareHoleDropShapeProcedureResult;
pub use square_hole_gallery_view_row_type::SquareHoleGalleryViewRow;
pub use square_hole_gallery_view_table::*;
pub use square_hole_hole_option_snapshot_type::SquareHoleHoleOptionSnapshot;
pub use square_hole_hole_snapshot_type::SquareHoleHoleSnapshot;
pub use square_hole_run_drop_input_type::SquareHoleRunDropInput;
pub use square_hole_run_get_input_type::SquareHoleRunGetInput;
pub use square_hole_run_procedure_result_type::SquareHoleRunProcedureResult;
pub use square_hole_run_restart_input_type::SquareHoleRunRestartInput;
pub use square_hole_run_snapshot_type::SquareHoleRunSnapshot;
pub use square_hole_run_start_input_type::SquareHoleRunStartInput;
pub use square_hole_run_stop_input_type::SquareHoleRunStopInput;
pub use square_hole_run_time_up_input_type::SquareHoleRunTimeUpInput;
pub use square_hole_runtime_run_row_type::SquareHoleRuntimeRunRow;
pub use square_hole_runtime_run_table::*;
pub use square_hole_shape_option_snapshot_type::SquareHoleShapeOptionSnapshot;
pub use square_hole_shape_snapshot_type::SquareHoleShapeSnapshot;
pub use square_hole_work_delete_input_type::SquareHoleWorkDeleteInput;
pub use square_hole_work_get_input_type::SquareHoleWorkGetInput;
pub use square_hole_work_procedure_result_type::SquareHoleWorkProcedureResult;
pub use square_hole_work_profile_row_type::SquareHoleWorkProfileRow;
pub use square_hole_work_profile_table::*;
pub use square_hole_work_publish_input_type::SquareHoleWorkPublishInput;
pub use square_hole_work_snapshot_type::SquareHoleWorkSnapshot;
pub use square_hole_work_update_input_type::SquareHoleWorkUpdateInput;
pub use square_hole_works_list_input_type::SquareHoleWorksListInput;
pub use square_hole_works_procedure_result_type::SquareHoleWorksProcedureResult;
@@ -1717,26 +1807,33 @@ pub use user_browse_history_table::*;
pub use user_browse_history_type::UserBrowseHistory;
pub use visual_novel_agent_message_finalize_input_type::VisualNovelAgentMessageFinalizeInput;
pub use visual_novel_agent_message_row_type::VisualNovelAgentMessageRow;
pub use visual_novel_agent_message_snapshot_type::VisualNovelAgentMessageSnapshot;
pub use visual_novel_agent_message_submit_input_type::VisualNovelAgentMessageSubmitInput;
pub use visual_novel_agent_message_table::*;
pub use visual_novel_agent_session_create_input_type::VisualNovelAgentSessionCreateInput;
pub use visual_novel_agent_session_get_input_type::VisualNovelAgentSessionGetInput;
pub use visual_novel_agent_session_procedure_result_type::VisualNovelAgentSessionProcedureResult;
pub use visual_novel_agent_session_row_type::VisualNovelAgentSessionRow;
pub use visual_novel_agent_session_snapshot_type::VisualNovelAgentSessionSnapshot;
pub use visual_novel_agent_session_table::*;
pub use visual_novel_gallery_view_row_type::VisualNovelGalleryViewRow;
pub use visual_novel_gallery_view_table::*;
pub use visual_novel_history_procedure_result_type::VisualNovelHistoryProcedureResult;
pub use visual_novel_json_field_type::VisualNovelJsonField;
pub use visual_novel_json_value_type::VisualNovelJsonValue;
pub use visual_novel_run_get_input_type::VisualNovelRunGetInput;
pub use visual_novel_run_procedure_result_type::VisualNovelRunProcedureResult;
pub use visual_novel_run_snapshot_type::VisualNovelRunSnapshot;
pub use visual_novel_run_snapshot_upsert_input_type::VisualNovelRunSnapshotUpsertInput;
pub use visual_novel_run_start_input_type::VisualNovelRunStartInput;
pub use visual_novel_runtime_event_procedure_result_type::VisualNovelRuntimeEventProcedureResult;
pub use visual_novel_runtime_event_record_input_type::VisualNovelRuntimeEventRecordInput;
pub use visual_novel_runtime_event_snapshot_type::VisualNovelRuntimeEventSnapshot;
pub use visual_novel_runtime_event_table::*;
pub use visual_novel_runtime_event_type::VisualNovelRuntimeEvent;
pub use visual_novel_runtime_history_append_input_type::VisualNovelRuntimeHistoryAppendInput;
pub use visual_novel_runtime_history_entry_row_type::VisualNovelRuntimeHistoryEntryRow;
pub use visual_novel_runtime_history_entry_snapshot_type::VisualNovelRuntimeHistoryEntrySnapshot;
pub use visual_novel_runtime_history_entry_table::*;
pub use visual_novel_runtime_history_list_input_type::VisualNovelRuntimeHistoryListInput;
pub use visual_novel_runtime_run_row_type::VisualNovelRuntimeRunRow;
@@ -1748,6 +1845,7 @@ pub use visual_novel_work_procedure_result_type::VisualNovelWorkProcedureResult;
pub use visual_novel_work_profile_row_type::VisualNovelWorkProfileRow;
pub use visual_novel_work_profile_table::*;
pub use visual_novel_work_publish_input_type::VisualNovelWorkPublishInput;
pub use visual_novel_work_snapshot_type::VisualNovelWorkSnapshot;
pub use visual_novel_work_update_input_type::VisualNovelWorkUpdateInput;
pub use visual_novel_works_list_input_type::VisualNovelWorksListInput;
pub use visual_novel_works_procedure_result_type::VisualNovelWorksProcedureResult;

View File

@@ -0,0 +1,23 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::puzzle_agent_message_kind_type::PuzzleAgentMessageKind;
use super::puzzle_agent_message_role_type::PuzzleAgentMessageRole;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct PuzzleAgentMessageSnapshot {
pub message_id: String,
pub session_id: String,
pub role: PuzzleAgentMessageRole,
pub kind: PuzzleAgentMessageKind,
pub text: String,
pub created_at_micros: i64,
}
impl __sdk::InModule for PuzzleAgentMessageSnapshot {
type Module = super::RemoteModule;
}

View File

@@ -4,11 +4,13 @@
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::puzzle_agent_session_snapshot_type::PuzzleAgentSessionSnapshot;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct PuzzleAgentSessionProcedureResult {
pub ok: bool,
pub session_json: Option<String>,
pub session: Option<PuzzleAgentSessionSnapshot>,
pub error_message: Option<String>,
}

View File

@@ -0,0 +1,36 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::puzzle_agent_message_snapshot_type::PuzzleAgentMessageSnapshot;
use super::puzzle_agent_stage_type::PuzzleAgentStage;
use super::puzzle_agent_suggested_action_type::PuzzleAgentSuggestedAction;
use super::puzzle_anchor_pack_type::PuzzleAnchorPack;
use super::puzzle_result_draft_type::PuzzleResultDraft;
use super::puzzle_result_preview_envelope_type::PuzzleResultPreviewEnvelope;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct PuzzleAgentSessionSnapshot {
pub session_id: String,
pub owner_user_id: String,
pub seed_text: String,
pub current_turn: u32,
pub progress_percent: u32,
pub stage: PuzzleAgentStage,
pub anchor_pack: PuzzleAnchorPack,
pub draft: Option<PuzzleResultDraft>,
pub messages: Vec<PuzzleAgentMessageSnapshot>,
pub last_assistant_reply: Option<String>,
pub published_profile_id: Option<String>,
pub suggested_actions: Vec<PuzzleAgentSuggestedAction>,
pub result_preview: Option<PuzzleResultPreviewEnvelope>,
pub created_at_micros: i64,
pub updated_at_micros: i64,
}
impl __sdk::InModule for PuzzleAgentSessionSnapshot {
type Module = super::RemoteModule;
}

View File

@@ -0,0 +1,17 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct PuzzleAgentSuggestedAction {
pub id: String,
pub action_type: String,
pub label: String,
}
impl __sdk::InModule for PuzzleAgentSuggestedAction {
type Module = super::RemoteModule;
}

View File

@@ -0,0 +1,23 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::puzzle_merged_group_state_type::PuzzleMergedGroupState;
use super::puzzle_piece_state_type::PuzzlePieceState;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct PuzzleBoardSnapshot {
pub rows: u32,
pub cols: u32,
pub pieces: Vec<PuzzlePieceState>,
pub merged_groups: Vec<PuzzleMergedGroupState>,
pub selected_piece_id: Option<String>,
pub all_tiles_resolved: bool,
}
impl __sdk::InModule for PuzzleBoardSnapshot {
type Module = super::RemoteModule;
}

View File

@@ -0,0 +1,16 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct PuzzleCellPosition {
pub row: u32,
pub col: u32,
}
impl __sdk::InModule for PuzzleCellPosition {
type Module = super::RemoteModule;
}

View File

@@ -0,0 +1,22 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct PuzzleCreatorIntent {
pub source_mode: String,
pub raw_messages_summary: String,
pub theme_promise: String,
pub visual_subject: String,
pub visual_mood: Vec<String>,
pub composition_hooks: Vec<String>,
pub theme_tags: Vec<String>,
pub forbidden_directives: Vec<String>,
}
impl __sdk::InModule for PuzzleCreatorIntent {
type Module = super::RemoteModule;
}

View File

@@ -0,0 +1,17 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct PuzzleFormDraft {
pub work_title: Option<String>,
pub work_description: Option<String>,
pub picture_description: Option<String>,
}
impl __sdk::InModule for PuzzleFormDraft {
type Module = super::RemoteModule;
}

View File

@@ -0,0 +1,19 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct PuzzleLeaderboardEntry {
pub rank: u32,
pub nickname: String,
pub elapsed_ms: u64,
pub visible_tags: Vec<String>,
pub is_current_player: bool,
}
impl __sdk::InModule for PuzzleLeaderboardEntry {
type Module = super::RemoteModule;
}

View File

@@ -0,0 +1,19 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::puzzle_cell_position_type::PuzzleCellPosition;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct PuzzleMergedGroupState {
pub group_id: String,
pub piece_ids: Vec<String>,
pub occupied_cells: Vec<PuzzleCellPosition>,
}
impl __sdk::InModule for PuzzleMergedGroupState {
type Module = super::RemoteModule;
}

View File

@@ -0,0 +1,20 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct PuzzlePieceState {
pub piece_id: String,
pub correct_row: u32,
pub correct_col: u32,
pub current_row: u32,
pub current_col: u32,
pub merged_group_id: Option<String>,
}
impl __sdk::InModule for PuzzlePieceState {
type Module = super::RemoteModule;
}

View File

@@ -0,0 +1,20 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct PuzzleRecommendedNextWork {
pub profile_id: String,
pub level_name: String,
pub author_display_name: String,
pub theme_tags: Vec<String>,
pub cover_image_src: Option<String>,
pub similarity_score: f32,
}
impl __sdk::InModule for PuzzleRecommendedNextWork {
type Module = super::RemoteModule;
}

View File

@@ -0,0 +1,35 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::puzzle_anchor_pack_type::PuzzleAnchorPack;
use super::puzzle_creator_intent_type::PuzzleCreatorIntent;
use super::puzzle_draft_level_type::PuzzleDraftLevel;
use super::puzzle_form_draft_type::PuzzleFormDraft;
use super::puzzle_generated_image_candidate_type::PuzzleGeneratedImageCandidate;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct PuzzleResultDraft {
pub work_title: String,
pub work_description: String,
pub level_name: String,
pub summary: String,
pub theme_tags: Vec<String>,
pub forbidden_directives: Vec<String>,
pub creator_intent: Option<PuzzleCreatorIntent>,
pub anchor_pack: PuzzleAnchorPack,
pub candidates: Vec<PuzzleGeneratedImageCandidate>,
pub selected_candidate_id: Option<String>,
pub cover_image_src: Option<String>,
pub cover_asset_id: Option<String>,
pub generation_status: String,
pub levels: Vec<PuzzleDraftLevel>,
pub form_draft: Option<PuzzleFormDraft>,
}
impl __sdk::InModule for PuzzleResultDraft {
type Module = super::RemoteModule;
}

View File

@@ -0,0 +1,17 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct PuzzleResultPreviewBlocker {
pub id: String,
pub code: String,
pub message: String,
}
impl __sdk::InModule for PuzzleResultPreviewBlocker {
type Module = super::RemoteModule;
}

View File

@@ -0,0 +1,22 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::puzzle_result_draft_type::PuzzleResultDraft;
use super::puzzle_result_preview_blocker_type::PuzzleResultPreviewBlocker;
use super::puzzle_result_preview_finding_type::PuzzleResultPreviewFinding;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct PuzzleResultPreviewEnvelope {
pub draft: PuzzleResultDraft,
pub blockers: Vec<PuzzleResultPreviewBlocker>,
pub quality_findings: Vec<PuzzleResultPreviewFinding>,
pub publish_ready: bool,
}
impl __sdk::InModule for PuzzleResultPreviewEnvelope {
type Module = super::RemoteModule;
}

View File

@@ -0,0 +1,18 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct PuzzleResultPreviewFinding {
pub id: String,
pub severity: String,
pub code: String,
pub message: String,
}
impl __sdk::InModule for PuzzleResultPreviewFinding {
type Module = super::RemoteModule;
}

View File

@@ -4,11 +4,13 @@
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::puzzle_run_snapshot_type::PuzzleRunSnapshot;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct PuzzleRunProcedureResult {
pub ok: bool,
pub run_json: Option<String>,
pub run: Option<PuzzleRunSnapshot>,
pub error_message: Option<String>,
}

View File

@@ -0,0 +1,32 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::puzzle_leaderboard_entry_type::PuzzleLeaderboardEntry;
use super::puzzle_recommended_next_work_type::PuzzleRecommendedNextWork;
use super::puzzle_runtime_level_snapshot_type::PuzzleRuntimeLevelSnapshot;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct PuzzleRunSnapshot {
pub run_id: String,
pub entry_profile_id: String,
pub cleared_level_count: u32,
pub current_level_index: u32,
pub current_grid_size: u32,
pub played_profile_ids: Vec<String>,
pub previous_level_tags: Vec<String>,
pub current_level: Option<PuzzleRuntimeLevelSnapshot>,
pub recommended_next_profile_id: Option<String>,
pub next_level_mode: String,
pub next_level_profile_id: Option<String>,
pub next_level_id: Option<String>,
pub recommended_next_works: Vec<PuzzleRecommendedNextWork>,
pub leaderboard_entries: Vec<PuzzleLeaderboardEntry>,
}
impl __sdk::InModule for PuzzleRunSnapshot {
type Module = super::RemoteModule;
}

View File

@@ -0,0 +1,44 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::puzzle_audio_asset_type::PuzzleAudioAsset;
use super::puzzle_board_snapshot_type::PuzzleBoardSnapshot;
use super::puzzle_leaderboard_entry_type::PuzzleLeaderboardEntry;
use super::puzzle_runtime_level_status_type::PuzzleRuntimeLevelStatus;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct PuzzleRuntimeLevelSnapshot {
pub run_id: String,
pub level_index: u32,
pub level_id: Option<String>,
pub grid_size: u32,
pub profile_id: String,
pub level_name: String,
pub author_display_name: String,
pub theme_tags: Vec<String>,
pub cover_image_src: Option<String>,
pub ui_background_image_src: Option<String>,
pub ui_background_image_object_key: Option<String>,
pub background_music: Option<PuzzleAudioAsset>,
pub board: PuzzleBoardSnapshot,
pub status: PuzzleRuntimeLevelStatus,
pub started_at_ms: u64,
pub cleared_at_ms: Option<u64>,
pub elapsed_ms: Option<u64>,
pub time_limit_ms: u64,
pub remaining_ms: u64,
pub paused_accumulated_ms: u64,
pub pause_started_at_ms: Option<u64>,
pub freeze_accumulated_ms: u64,
pub freeze_started_at_ms: Option<u64>,
pub freeze_until_ms: Option<u64>,
pub leaderboard_entries: Vec<PuzzleLeaderboardEntry>,
}
impl __sdk::InModule for PuzzleRuntimeLevelSnapshot {
type Module = super::RemoteModule;
}

View File

@@ -0,0 +1,20 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
#[derive(Copy, Eq, Hash)]
pub enum PuzzleRuntimeLevelStatus {
Playing,
Cleared,
Failed,
}
impl __sdk::InModule for PuzzleRuntimeLevelStatus {
type Module = super::RemoteModule;
}

View File

@@ -4,11 +4,13 @@
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::puzzle_work_profile_type::PuzzleWorkProfile;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct PuzzleWorkProcedureResult {
pub ok: bool,
pub item_json: Option<String>,
pub item: Option<PuzzleWorkProfile>,
pub error_message: Option<String>,
}

View File

@@ -4,11 +4,13 @@
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::puzzle_work_profile_type::PuzzleWorkProfile;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct PuzzleWorksProcedureResult {
pub ok: bool,
pub items_json: Option<String>,
pub items: Vec<PuzzleWorkProfile>,
pub error_message: Option<String>,
}

View File

@@ -0,0 +1,20 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct SquareHoleAgentMessageSnapshot {
pub message_id: String,
pub session_id: String,
pub role: String,
pub kind: String,
pub text: String,
pub created_at_micros: i64,
}
impl __sdk::InModule for SquareHoleAgentMessageSnapshot {
type Module = super::RemoteModule;
}

View File

@@ -4,11 +4,13 @@
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::square_hole_agent_session_snapshot_type::SquareHoleAgentSessionSnapshot;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct SquareHoleAgentSessionProcedureResult {
pub ok: bool,
pub session_json: Option<String>,
pub session: Option<SquareHoleAgentSessionSnapshot>,
pub error_message: Option<String>,
}

View File

@@ -0,0 +1,31 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::square_hole_agent_message_snapshot_type::SquareHoleAgentMessageSnapshot;
use super::square_hole_creator_config_snapshot_type::SquareHoleCreatorConfigSnapshot;
use super::square_hole_draft_snapshot_type::SquareHoleDraftSnapshot;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct SquareHoleAgentSessionSnapshot {
pub session_id: String,
pub owner_user_id: String,
pub seed_text: String,
pub current_turn: u32,
pub progress_percent: u32,
pub stage: String,
pub config: SquareHoleCreatorConfigSnapshot,
pub draft: Option<SquareHoleDraftSnapshot>,
pub messages: Vec<SquareHoleAgentMessageSnapshot>,
pub last_assistant_reply: String,
pub published_profile_id: Option<String>,
pub created_at_micros: i64,
pub updated_at_micros: i64,
}
impl __sdk::InModule for SquareHoleAgentSessionSnapshot {
type Module = super::RemoteModule;
}

View File

@@ -0,0 +1,26 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::square_hole_hole_option_snapshot_type::SquareHoleHoleOptionSnapshot;
use super::square_hole_shape_option_snapshot_type::SquareHoleShapeOptionSnapshot;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct SquareHoleCreatorConfigSnapshot {
pub theme_text: String,
pub twist_rule: String,
pub shape_count: u32,
pub difficulty: u32,
pub shape_options: Vec<SquareHoleShapeOptionSnapshot>,
pub hole_options: Vec<SquareHoleHoleOptionSnapshot>,
pub background_prompt: String,
pub cover_image_src: String,
pub background_image_src: String,
}
impl __sdk::InModule for SquareHoleCreatorConfigSnapshot {
type Module = super::RemoteModule;
}

View File

@@ -0,0 +1,30 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::square_hole_hole_option_snapshot_type::SquareHoleHoleOptionSnapshot;
use super::square_hole_shape_option_snapshot_type::SquareHoleShapeOptionSnapshot;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct SquareHoleDraftSnapshot {
pub profile_id: String,
pub game_name: String,
pub theme_text: String,
pub twist_rule: String,
pub summary_text: String,
pub tags: Vec<String>,
pub cover_image_src: String,
pub background_prompt: String,
pub background_image_src: String,
pub shape_options: Vec<SquareHoleShapeOptionSnapshot>,
pub hole_options: Vec<SquareHoleHoleOptionSnapshot>,
pub shape_count: u32,
pub difficulty: u32,
}
impl __sdk::InModule for SquareHoleDraftSnapshot {
type Module = super::RemoteModule;
}

View File

@@ -0,0 +1,17 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct SquareHoleDropFeedbackSnapshot {
pub accepted: bool,
pub reject_reason: Option<String>,
pub message: String,
}
impl __sdk::InModule for SquareHoleDropFeedbackSnapshot {
type Module = super::RemoteModule;
}

View File

@@ -4,13 +4,16 @@
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::square_hole_drop_feedback_snapshot_type::SquareHoleDropFeedbackSnapshot;
use super::square_hole_run_snapshot_type::SquareHoleRunSnapshot;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct SquareHoleDropShapeProcedureResult {
pub ok: bool,
pub status: String,
pub run_json: Option<String>,
pub feedback_json: Option<String>,
pub run: Option<SquareHoleRunSnapshot>,
pub feedback: Option<SquareHoleDropFeedbackSnapshot>,
pub failure_reason: Option<String>,
pub error_message: Option<String>,
}

View File

@@ -0,0 +1,20 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct SquareHoleHoleSnapshot {
pub hole_id: String,
pub hole_kind: String,
pub label: String,
pub x: f32,
pub y: f32,
pub image_src: String,
}
impl __sdk::InModule for SquareHoleHoleSnapshot {
type Module = super::RemoteModule;
}

View File

@@ -4,11 +4,13 @@
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::square_hole_run_snapshot_type::SquareHoleRunSnapshot;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct SquareHoleRunProcedureResult {
pub ok: bool,
pub run_json: Option<String>,
pub run: Option<SquareHoleRunSnapshot>,
pub error_message: Option<String>,
}

View File

@@ -0,0 +1,39 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::square_hole_drop_feedback_snapshot_type::SquareHoleDropFeedbackSnapshot;
use super::square_hole_hole_snapshot_type::SquareHoleHoleSnapshot;
use super::square_hole_shape_option_snapshot_type::SquareHoleShapeOptionSnapshot;
use super::square_hole_shape_snapshot_type::SquareHoleShapeSnapshot;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct SquareHoleRunSnapshot {
pub run_id: String,
pub profile_id: String,
pub owner_user_id: String,
pub status: String,
pub snapshot_version: u64,
pub started_at_ms: i64,
pub duration_limit_ms: i64,
pub server_now_ms: i64,
pub remaining_ms: i64,
pub total_shape_count: u32,
pub completed_shape_count: u32,
pub combo: u32,
pub best_combo: u32,
pub score: u32,
pub rule_label: String,
pub background_image_src: String,
pub shape_options: Vec<SquareHoleShapeOptionSnapshot>,
pub current_shape: Option<SquareHoleShapeSnapshot>,
pub holes: Vec<SquareHoleHoleSnapshot>,
pub last_feedback: Option<SquareHoleDropFeedbackSnapshot>,
}
impl __sdk::InModule for SquareHoleRunSnapshot {
type Module = super::RemoteModule;
}

View File

@@ -0,0 +1,20 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct SquareHoleShapeSnapshot {
pub shape_id: String,
pub shape_kind: String,
pub label: String,
pub target_hole_id: String,
pub color: String,
pub image_src: String,
}
impl __sdk::InModule for SquareHoleShapeSnapshot {
type Module = super::RemoteModule;
}

View File

@@ -4,11 +4,13 @@
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::square_hole_work_snapshot_type::SquareHoleWorkSnapshot;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct SquareHoleWorkProcedureResult {
pub ok: bool,
pub work_json: Option<String>,
pub work: Option<SquareHoleWorkSnapshot>,
pub error_message: Option<String>,
}

View File

@@ -0,0 +1,41 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::square_hole_creator_config_snapshot_type::SquareHoleCreatorConfigSnapshot;
use super::square_hole_hole_option_snapshot_type::SquareHoleHoleOptionSnapshot;
use super::square_hole_shape_option_snapshot_type::SquareHoleShapeOptionSnapshot;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct SquareHoleWorkSnapshot {
pub work_id: String,
pub profile_id: String,
pub owner_user_id: String,
pub source_session_id: String,
pub author_display_name: String,
pub game_name: String,
pub theme_text: String,
pub twist_rule: String,
pub summary_text: String,
pub tags: Vec<String>,
pub cover_image_src: String,
pub background_prompt: String,
pub background_image_src: String,
pub shape_options: Vec<SquareHoleShapeOptionSnapshot>,
pub hole_options: Vec<SquareHoleHoleOptionSnapshot>,
pub shape_count: u32,
pub difficulty: u32,
pub config: SquareHoleCreatorConfigSnapshot,
pub publication_status: String,
pub publish_ready: bool,
pub play_count: u32,
pub updated_at_micros: i64,
pub published_at_micros: Option<i64>,
}
impl __sdk::InModule for SquareHoleWorkSnapshot {
type Module = super::RemoteModule;
}

View File

@@ -4,11 +4,13 @@
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::square_hole_work_snapshot_type::SquareHoleWorkSnapshot;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct SquareHoleWorksProcedureResult {
pub ok: bool,
pub items_json: Option<String>,
pub items: Vec<SquareHoleWorkSnapshot>,
pub error_message: Option<String>,
}

View File

@@ -0,0 +1,20 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct VisualNovelAgentMessageSnapshot {
pub message_id: String,
pub session_id: String,
pub role: String,
pub kind: String,
pub text: String,
pub created_at_micros: i64,
}
impl __sdk::InModule for VisualNovelAgentMessageSnapshot {
type Module = super::RemoteModule;
}

View File

@@ -4,11 +4,13 @@
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::visual_novel_agent_session_snapshot_type::VisualNovelAgentSessionSnapshot;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct VisualNovelAgentSessionProcedureResult {
pub ok: bool,
pub session_json: Option<String>,
pub session: Option<VisualNovelAgentSessionSnapshot>,
pub error_message: Option<String>,
}

View File

@@ -0,0 +1,32 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::visual_novel_agent_message_snapshot_type::VisualNovelAgentMessageSnapshot;
use super::visual_novel_json_value_type::VisualNovelJsonValue;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct VisualNovelAgentSessionSnapshot {
pub session_id: String,
pub owner_user_id: String,
pub source_mode: String,
pub status: String,
pub seed_text: String,
pub source_asset_ids: Vec<String>,
pub current_turn: u32,
pub progress_percent: u32,
pub messages: Vec<VisualNovelAgentMessageSnapshot>,
pub draft: Option<VisualNovelJsonValue>,
pub pending_action: Option<VisualNovelJsonValue>,
pub last_assistant_reply: Option<String>,
pub published_profile_id: Option<String>,
pub created_at_micros: i64,
pub updated_at_micros: i64,
}
impl __sdk::InModule for VisualNovelAgentSessionSnapshot {
type Module = super::RemoteModule;
}

View File

@@ -4,11 +4,13 @@
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::visual_novel_runtime_history_entry_snapshot_type::VisualNovelRuntimeHistoryEntrySnapshot;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct VisualNovelHistoryProcedureResult {
pub ok: bool,
pub items_json: Option<String>,
pub items: Vec<VisualNovelRuntimeHistoryEntrySnapshot>,
pub error_message: Option<String>,
}

View File

@@ -0,0 +1,18 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::visual_novel_json_value_type::VisualNovelJsonValue;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct VisualNovelJsonField {
pub key: String,
pub value: VisualNovelJsonValue,
}
impl __sdk::InModule for VisualNovelJsonField {
type Module = super::RemoteModule;
}

View File

@@ -0,0 +1,27 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::visual_novel_json_field_type::VisualNovelJsonField;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub enum VisualNovelJsonValue {
Null,
Bool(bool),
Number(f64),
String(String),
Array(Vec<VisualNovelJsonValue>),
Object(Vec<VisualNovelJsonField>),
}
impl __sdk::InModule for VisualNovelJsonValue {
type Module = super::RemoteModule;
}

View File

@@ -4,11 +4,13 @@
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::visual_novel_run_snapshot_type::VisualNovelRunSnapshot;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct VisualNovelRunProcedureResult {
pub ok: bool,
pub run_json: Option<String>,
pub run: Option<VisualNovelRunSnapshot>,
pub error_message: Option<String>,
}

View File

@@ -0,0 +1,32 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::visual_novel_json_value_type::VisualNovelJsonValue;
use super::visual_novel_runtime_history_entry_snapshot_type::VisualNovelRuntimeHistoryEntrySnapshot;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct VisualNovelRunSnapshot {
pub run_id: String,
pub owner_user_id: String,
pub profile_id: String,
pub mode: String,
pub status: String,
pub current_scene_id: Option<String>,
pub current_phase_id: Option<String>,
pub visible_character_ids: Vec<String>,
pub flags: VisualNovelJsonValue,
pub metrics: VisualNovelJsonValue,
pub history: Vec<VisualNovelRuntimeHistoryEntrySnapshot>,
pub available_choices: VisualNovelJsonValue,
pub text_mode_enabled: bool,
pub created_at_micros: i64,
pub updated_at_micros: i64,
}
impl __sdk::InModule for VisualNovelRunSnapshot {
type Module = super::RemoteModule;
}

View File

@@ -4,11 +4,13 @@
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::visual_novel_runtime_event_snapshot_type::VisualNovelRuntimeEventSnapshot;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct VisualNovelRuntimeEventProcedureResult {
pub ok: bool,
pub event_json: Option<String>,
pub event: Option<VisualNovelRuntimeEventSnapshot>,
pub error_message: Option<String>,
}

View File

@@ -0,0 +1,25 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::visual_novel_json_value_type::VisualNovelJsonValue;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct VisualNovelRuntimeEventSnapshot {
pub event_id: String,
pub run_id: Option<String>,
pub owner_user_id: String,
pub profile_id: Option<String>,
pub event_kind: String,
pub client_event_id: Option<String>,
pub history_entry_id: Option<String>,
pub payload: VisualNovelJsonValue,
pub occurred_at_micros: i64,
}
impl __sdk::InModule for VisualNovelRuntimeEventSnapshot {
type Module = super::RemoteModule;
}

View File

@@ -0,0 +1,27 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::visual_novel_json_value_type::VisualNovelJsonValue;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct VisualNovelRuntimeHistoryEntrySnapshot {
pub entry_id: String,
pub run_id: String,
pub owner_user_id: String,
pub profile_id: String,
pub turn_index: u32,
pub source: String,
pub action_text: Option<String>,
pub steps: VisualNovelJsonValue,
pub snapshot_before_hash: Option<String>,
pub snapshot_after_hash: Option<String>,
pub created_at_micros: i64,
}
impl __sdk::InModule for VisualNovelRuntimeHistoryEntrySnapshot {
type Module = super::RemoteModule;
}

View File

@@ -4,11 +4,13 @@
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::visual_novel_work_snapshot_type::VisualNovelWorkSnapshot;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct VisualNovelWorkProcedureResult {
pub ok: bool,
pub work_json: Option<String>,
pub work: Option<VisualNovelWorkSnapshot>,
pub error_message: Option<String>,
}

View File

@@ -0,0 +1,33 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::visual_novel_json_value_type::VisualNovelJsonValue;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct VisualNovelWorkSnapshot {
pub work_id: String,
pub profile_id: String,
pub owner_user_id: String,
pub source_session_id: Option<String>,
pub author_display_name: String,
pub work_title: String,
pub work_description: String,
pub tags: Vec<String>,
pub cover_image_src: Option<String>,
pub source_asset_ids: Vec<String>,
pub draft: VisualNovelJsonValue,
pub publication_status: String,
pub publish_ready: bool,
pub play_count: u32,
pub created_at_micros: i64,
pub updated_at_micros: i64,
pub published_at_micros: Option<i64>,
}
impl __sdk::InModule for VisualNovelWorkSnapshot {
type Module = super::RemoteModule;
}

View File

@@ -4,11 +4,13 @@
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
use super::visual_novel_work_snapshot_type::VisualNovelWorkSnapshot;
#[derive(__lib::ser::Serialize, __lib::de::Deserialize, Clone, PartialEq, Debug)]
#[sats(crate = __lib)]
pub struct VisualNovelWorksProcedureResult {
pub ok: bool,
pub items_json: Option<String>,
pub items: Vec<VisualNovelWorkSnapshot>,
pub error_message: Option<String>,
}

View File

@@ -33,8 +33,8 @@ pub(crate) fn build_ai_task_snapshot_from_row(
let mut stages = ctx
.db
.ai_task_stage()
.iter()
.filter(|stage| stage.task_id == row.task_id)
.by_ai_task_stage_task_id()
.filter(&row.task_id)
.map(|stage| build_ai_task_stage_snapshot_from_row(&stage))
.collect::<Vec<_>>();
stages.sort_by_key(|stage| stage.order);
@@ -42,8 +42,8 @@ pub(crate) fn build_ai_task_snapshot_from_row(
let mut result_references = ctx
.db
.ai_result_reference()
.iter()
.filter(|reference| reference.task_id == row.task_id)
.by_ai_result_reference_task_id()
.filter(&row.task_id)
.map(|reference| build_ai_result_reference_snapshot_from_row(&reference))
.collect::<Vec<_>>();
result_references.sort_by_key(|reference| reference.created_at_micros);

View File

@@ -318,8 +318,8 @@ pub(crate) fn replace_ai_task_stages(
let stage_ids = ctx
.db
.ai_task_stage()
.iter()
.filter(|row| row.task_id == task_id)
.by_ai_task_stage_task_id()
.filter(task_id)
.map(|row| row.task_stage_id.clone())
.collect::<Vec<_>>();
for stage_id in stage_ids {
@@ -341,7 +341,8 @@ pub(crate) fn collect_ai_stage_text_output(
let mut chunks = ctx
.db
.ai_text_chunk()
.iter()
.by_ai_text_chunk_task_id()
.filter(task_id)
.filter(|row| row.task_id == task_id && row.stage_kind == stage_kind)
.map(|row| build_ai_text_chunk_snapshot_from_row(&row))
.collect::<Vec<_>>();

View File

@@ -66,12 +66,16 @@ fn upsert_asset_entity_binding(
return Err("asset_entity_binding.asset_object_id 对应的 asset_object 不存在".to_string());
}
// 首版绑定按 entity_kind + entity_id + slot 幂等定位,后续访问量明确后再改为组合索引扫描。
let current = ctx.db.asset_entity_binding().iter().find(|row| {
row.entity_kind == input.entity_kind
&& row.entity_id == input.entity_id
&& row.slot == input.slot
});
let current = ctx
.db
.asset_entity_binding()
.by_entity_slot()
.filter((
input.entity_kind.as_str(),
input.entity_id.as_str(),
input.slot.as_str(),
))
.next();
let snapshot = match current {
Some(existing) => {

View File

@@ -128,12 +128,12 @@ pub(crate) fn upsert_asset_object(
)
.map_err(|error| error.to_string())?;
// 这里先保持最小可发布实现:查重语义已经冻结,后续再把实现优化回组合索引扫描。
let current = ctx
.db
.asset_object()
.iter()
.find(|row| row.bucket == input.bucket && row.object_key == input.object_key);
.by_bucket_object_key()
.filter((input.bucket.as_str(), input.object_key.as_str()))
.next();
let snapshot = match current {
Some(existing) => {
@@ -196,8 +196,9 @@ pub(crate) fn upsert_asset_object(
pub(crate) fn has_asset_object(ctx: &ReducerContext, asset_object_id: &str) -> bool {
ctx.db
.asset_object()
.iter()
.any(|row| row.asset_object_id == asset_object_id)
.asset_object_id()
.find(&asset_object_id.to_string())
.is_some()
}
fn list_asset_history(
@@ -224,8 +225,8 @@ fn list_asset_history(
let mut entries = ctx
.db
.asset_object()
.iter()
.filter(|row| row.asset_kind == asset_kind)
.asset_kind()
.filter(&asset_kind.to_string())
.map(|row| AssetHistoryEntrySnapshot {
asset_object_id: row.asset_object_id,
asset_kind: row.asset_kind,

View File

@@ -1,6 +1,5 @@
use crate::*;
use serde::Serialize;
use serde::de::DeserializeOwned;
use serde::{Serialize, de::DeserializeOwned};
use sha2::{Digest, Sha256};
pub(crate) mod tables;
@@ -15,7 +14,7 @@ pub fn create_bark_battle_draft(
input: BarkBattleDraftCreateInput,
) -> BarkBattleProcedureResult {
match ctx.try_with_tx(|tx| create_bark_battle_draft_tx(tx, input.clone())) {
Ok(snapshot) => bark_battle_json_result(&snapshot),
Ok(snapshot) => bark_battle_draft_config_result(snapshot),
Err(error) => bark_battle_error_result(error),
}
}
@@ -26,7 +25,7 @@ pub fn update_bark_battle_draft_config(
input: BarkBattleDraftConfigUpsertInput,
) -> BarkBattleProcedureResult {
match ctx.try_with_tx(|tx| update_bark_battle_draft_config_tx(tx, input.clone())) {
Ok(snapshot) => bark_battle_json_result(&snapshot),
Ok(snapshot) => bark_battle_draft_config_result(snapshot),
Err(error) => bark_battle_error_result(error),
}
}
@@ -37,7 +36,7 @@ pub fn publish_bark_battle_work(
input: BarkBattleWorkPublishInput,
) -> BarkBattleProcedureResult {
match ctx.try_with_tx(|tx| publish_bark_battle_work_tx(tx, input.clone())) {
Ok(snapshot) => bark_battle_json_result(&snapshot),
Ok(snapshot) => bark_battle_runtime_config_result(snapshot),
Err(error) => bark_battle_error_result(error),
}
}
@@ -48,7 +47,7 @@ pub fn get_bark_battle_runtime_config(
input: BarkBattleRuntimeConfigGetInput,
) -> BarkBattleProcedureResult {
match ctx.try_with_tx(|tx| get_bark_battle_runtime_config_tx(tx, input.clone())) {
Ok(snapshot) => bark_battle_json_result(&snapshot),
Ok(snapshot) => bark_battle_runtime_config_result(snapshot),
Err(error) => bark_battle_error_result(error),
}
}
@@ -59,7 +58,7 @@ pub fn start_bark_battle_run(
input: BarkBattleRunStartInput,
) -> BarkBattleProcedureResult {
match ctx.try_with_tx(|tx| start_bark_battle_run_tx(tx, input.clone())) {
Ok(snapshot) => bark_battle_json_result(&snapshot),
Ok(snapshot) => bark_battle_run_result(snapshot),
Err(error) => bark_battle_error_result(error),
}
}
@@ -70,7 +69,7 @@ pub fn finish_bark_battle_run(
input: BarkBattleRunFinishInput,
) -> BarkBattleProcedureResult {
match ctx.try_with_tx(|tx| finish_bark_battle_run_tx(tx, input.clone())) {
Ok(snapshot) => bark_battle_json_result(&snapshot),
Ok(snapshot) => bark_battle_run_result(snapshot),
Err(error) => bark_battle_error_result(error),
}
}
@@ -81,7 +80,7 @@ pub fn get_bark_battle_run(
input: BarkBattleRunGetInput,
) -> BarkBattleProcedureResult {
match ctx.try_with_tx(|tx| get_bark_battle_run_tx(tx, input.clone())) {
Ok(snapshot) => bark_battle_json_result(&snapshot),
Ok(snapshot) => bark_battle_run_result(snapshot),
Err(error) => bark_battle_error_result(error),
}
}
@@ -584,10 +583,36 @@ fn validate_json<T: DeserializeOwned>(value: &str, field_name: &str) -> Result<(
.map_err(|error| format!("bark_battle {field_name} JSON 无效: {error}"))
}
fn bark_battle_json_result<T: Serialize>(value: &T) -> BarkBattleProcedureResult {
fn bark_battle_draft_config_result(
draft_config: BarkBattleDraftConfigSnapshot,
) -> BarkBattleProcedureResult {
BarkBattleProcedureResult {
ok: true,
row_json: Some(to_json_string(value)),
draft_config: Some(draft_config),
runtime_config: None,
run: None,
error_message: None,
}
}
fn bark_battle_runtime_config_result(
runtime_config: BarkBattleRuntimeConfigSnapshot,
) -> BarkBattleProcedureResult {
BarkBattleProcedureResult {
ok: true,
draft_config: None,
runtime_config: Some(runtime_config),
run: None,
error_message: None,
}
}
fn bark_battle_run_result(run: BarkBattleRunSnapshot) -> BarkBattleProcedureResult {
BarkBattleProcedureResult {
ok: true,
draft_config: None,
runtime_config: None,
run: Some(run),
error_message: None,
}
}
@@ -595,7 +620,9 @@ fn bark_battle_json_result<T: Serialize>(value: &T) -> BarkBattleProcedureResult
fn bark_battle_error_result(error: String) -> BarkBattleProcedureResult {
BarkBattleProcedureResult {
ok: false,
row_json: None,
draft_config: None,
runtime_config: None,
run: None,
error_message: Some(error),
}
}
@@ -850,7 +877,21 @@ mod tests {
let result = BarkBattleProcedureResult {
ok: true,
row_json: Some(input.config_json.clone()),
draft_config: Some(BarkBattleDraftConfigSnapshot {
draft_id: input.draft_id.clone(),
owner_user_id: input.owner_user_id.clone(),
work_id: input.work_id.clone(),
config_version: input.config_version,
ruleset_version: input.ruleset_version.clone(),
difficulty_preset: input.difficulty_preset.clone(),
leaderboard_enabled: input.leaderboard_enabled,
config_json: input.config_json.clone(),
editor_state_json: "{}".to_string(),
created_at_micros: 1_700_000,
updated_at_micros: input.updated_at_micros,
}),
runtime_config: None,
run: None,
error_message: None,
};

View File

@@ -102,14 +102,16 @@ pub struct BarkBattleRunGetInput {
pub owner_user_id: String,
}
#[derive(Clone, Debug, PartialEq, Eq, SpacetimeType)]
#[derive(Clone, Debug, PartialEq, SpacetimeType)]
pub struct BarkBattleProcedureResult {
pub ok: bool,
pub row_json: Option<String>,
pub draft_config: Option<BarkBattleDraftConfigSnapshot>,
pub runtime_config: Option<BarkBattleRuntimeConfigSnapshot>,
pub run: Option<BarkBattleRunSnapshot>,
pub error_message: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize, SpacetimeType)]
#[serde(rename_all = "camelCase")]
pub struct BarkBattleEditorConfigSnapshot {
pub title: String,
@@ -121,7 +123,7 @@ pub struct BarkBattleEditorConfigSnapshot {
pub leaderboard_enabled: bool,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize, SpacetimeType)]
#[serde(rename_all = "camelCase")]
pub struct BarkBattleDraftConfigSnapshot {
pub draft_id: String,
@@ -137,7 +139,7 @@ pub struct BarkBattleDraftConfigSnapshot {
pub updated_at_micros: i64,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize, SpacetimeType)]
#[serde(rename_all = "camelCase")]
pub struct BarkBattleRuntimeConfigSnapshot {
pub work_id: String,
@@ -153,7 +155,7 @@ pub struct BarkBattleRuntimeConfigSnapshot {
pub updated_at_micros: i64,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, SpacetimeType)]
#[serde(rename_all = "camelCase")]
pub struct BarkBattleRunSnapshot {
pub run_id: String,

View File

@@ -222,8 +222,8 @@ pub(crate) fn list_big_fish_asset_slots(
let mut slots = ctx
.db
.big_fish_asset_slot()
.iter()
.filter(|slot| slot.session_id == session_id)
.by_big_fish_asset_session_id()
.filter(&session_id.to_string())
.map(|slot| BigFishAssetSlotSnapshot {
slot_id: slot.slot_id,
session_id: slot.session_id,

View File

@@ -16,12 +16,12 @@ pub fn start_big_fish_run(
match ctx.try_with_tx(|tx| start_big_fish_run_tx(tx, input.clone())) {
Ok(run) => BigFishRunProcedureResult {
ok: true,
run_json: Some(serialize_big_fish_run_json(&run)),
run: Some(run),
error_message: None,
},
Err(message) => BigFishRunProcedureResult {
ok: false,
run_json: None,
run: None,
error_message: Some(message),
},
}
@@ -35,12 +35,12 @@ pub fn get_big_fish_run(
match ctx.try_with_tx(|tx| get_big_fish_run_tx(tx, input.clone())) {
Ok(run) => BigFishRunProcedureResult {
ok: true,
run_json: Some(serialize_big_fish_run_json(&run)),
run: Some(run),
error_message: None,
},
Err(message) => BigFishRunProcedureResult {
ok: false,
run_json: None,
run: None,
error_message: Some(message),
},
}
@@ -54,12 +54,12 @@ pub fn submit_big_fish_input(
match ctx.try_with_tx(|tx| submit_big_fish_input_tx(tx, input.clone())) {
Ok(run) => BigFishRunProcedureResult {
ok: true,
run_json: Some(serialize_big_fish_run_json(&run)),
run: Some(run),
error_message: None,
},
Err(message) => BigFishRunProcedureResult {
ok: false,
run_json: None,
run: None,
error_message: Some(message),
},
}
@@ -225,7 +225,3 @@ fn replace_big_fish_runtime_run(
});
Ok(())
}
fn serialize_big_fish_run_json(run: &BigFishRuntimeSnapshot) -> String {
serialize_runtime_snapshot(run).unwrap_or_else(|_| "{}".to_string())
}

View File

@@ -88,21 +88,14 @@ pub fn list_big_fish_works(
input: BigFishWorksListInput,
) -> BigFishWorksProcedureResult {
match ctx.try_with_tx(|tx| list_big_fish_works_tx(tx, input.clone())) {
Ok(items) => match serde_json::to_string(&items) {
Ok(items_json) => BigFishWorksProcedureResult {
Ok(items) => BigFishWorksProcedureResult {
ok: true,
items_json: Some(items_json),
items,
error_message: None,
},
Err(error) => BigFishWorksProcedureResult {
ok: false,
items_json: None,
error_message: Some(error.to_string()),
},
},
Err(message) => BigFishWorksProcedureResult {
ok: false,
items_json: None,
items: Vec::new(),
error_message: Some(message),
},
}
@@ -114,21 +107,14 @@ pub fn delete_big_fish_work(
input: BigFishWorkDeleteInput,
) -> BigFishWorksProcedureResult {
match ctx.try_with_tx(|tx| delete_big_fish_work_tx(tx, input.clone())) {
Ok(items) => match serde_json::to_string(&items) {
Ok(items_json) => BigFishWorksProcedureResult {
Ok(items) => BigFishWorksProcedureResult {
ok: true,
items_json: Some(items_json),
items,
error_message: None,
},
Err(error) => BigFishWorksProcedureResult {
ok: false,
items_json: None,
error_message: Some(error.to_string()),
},
},
Err(message) => BigFishWorksProcedureResult {
ok: false,
items_json: None,
items: Vec::new(),
error_message: Some(message),
},
}
@@ -140,21 +126,14 @@ pub fn record_big_fish_play(
input: BigFishPlayRecordInput,
) -> BigFishWorksProcedureResult {
match ctx.try_with_tx(|tx| record_big_fish_play_tx(tx, input.clone())) {
Ok(items) => match serde_json::to_string(&items) {
Ok(items_json) => BigFishWorksProcedureResult {
Ok(items) => BigFishWorksProcedureResult {
ok: true,
items_json: Some(items_json),
items,
error_message: None,
},
Err(error) => BigFishWorksProcedureResult {
ok: false,
items_json: None,
error_message: Some(error.to_string()),
},
},
Err(message) => BigFishWorksProcedureResult {
ok: false,
items_json: None,
items: Vec::new(),
error_message: Some(message),
},
}
@@ -166,21 +145,14 @@ pub fn record_big_fish_like(
input: BigFishWorkLikeRecordInput,
) -> BigFishWorksProcedureResult {
match ctx.try_with_tx(|tx| record_big_fish_like_tx(tx, input.clone())) {
Ok(items) => match serde_json::to_string(&items) {
Ok(items_json) => BigFishWorksProcedureResult {
Ok(items) => BigFishWorksProcedureResult {
ok: true,
items_json: Some(items_json),
items,
error_message: None,
},
Err(error) => BigFishWorksProcedureResult {
ok: false,
items_json: None,
error_message: Some(error.to_string()),
},
},
Err(message) => BigFishWorksProcedureResult {
ok: false,
items_json: None,
items: Vec::new(),
error_message: Some(message),
},
}
@@ -354,16 +326,20 @@ pub(crate) fn list_big_fish_works_tx(
validate_works_list_input(&input).map_err(|error| error.to_string())?;
let now_micros = ctx.timestamp.to_micros_since_unix_epoch();
let mut items = ctx
let rows = ctx
.db
.big_fish_creation_session()
.by_big_fish_session_owner_user_id()
.filter(&input.owner_user_id)
.collect::<Vec<_>>();
let mut items = rows
.iter()
.filter(|row| {
if input.published_only {
return row.stage == BigFishCreationStage::Published;
}
row.owner_user_id == input.owner_user_id && should_include_big_fish_work(ctx, row)
should_include_big_fish_work(ctx, row)
})
.map(|row| build_big_fish_work_summary(ctx, &row, now_micros))
.collect::<Result<Vec<_>, _>>()?;
@@ -382,10 +358,11 @@ fn should_include_big_fish_work(ctx: &ReducerContext, row: &BigFishCreationSessi
return true;
}
ctx.db.big_fish_agent_message().iter().any(|message| {
message.session_id == row.session_id
&& matches!(message.role, BigFishAgentMessageRole::User)
})
ctx.db
.big_fish_agent_message()
.by_big_fish_message_session_id()
.filter(&row.session_id)
.any(|message| matches!(message.role, BigFishAgentMessageRole::User))
}
fn big_fish_session_has_direct_work_content(row: &BigFishCreationSession) -> bool {
@@ -420,8 +397,8 @@ pub(crate) fn delete_big_fish_work_tx(
for message in ctx
.db
.big_fish_agent_message()
.iter()
.filter(|row| row.session_id == input.session_id)
.by_big_fish_message_session_id()
.filter(&input.session_id)
.collect::<Vec<_>>()
{
ctx.db
@@ -432,8 +409,8 @@ pub(crate) fn delete_big_fish_work_tx(
for slot in ctx
.db
.big_fish_asset_slot()
.iter()
.filter(|row| row.session_id == input.session_id)
.by_big_fish_asset_session_id()
.filter(&input.session_id)
.collect::<Vec<_>>()
{
ctx.db.big_fish_asset_slot().slot_id().delete(&slot.slot_id);
@@ -441,8 +418,8 @@ pub(crate) fn delete_big_fish_work_tx(
for run in ctx
.db
.big_fish_runtime_run()
.iter()
.filter(|row| row.session_id == input.session_id)
.by_big_fish_run_session_id()
.filter(&input.session_id)
.collect::<Vec<_>>()
{
ctx.db.big_fish_runtime_run().run_id().delete(&run.run_id);
@@ -985,8 +962,8 @@ pub(crate) fn build_big_fish_session_snapshot(
let mut messages = ctx
.db
.big_fish_agent_message()
.iter()
.filter(|message| message.session_id == row.session_id)
.by_big_fish_message_session_id()
.filter(&row.session_id)
.map(|message| BigFishAgentMessageSnapshot {
message_id: message.message_id,
session_id: message.session_id,

View File

@@ -436,7 +436,8 @@ fn delete_custom_world_agent_session_tx(
let published_profile = ctx
.db
.custom_world_profile()
.iter()
.by_custom_world_profile_owner_user_id()
.filter(&input.owner_user_id)
.find(|row| {
row.owner_user_id == input.owner_user_id
&& row.source_agent_session_id.as_deref() == Some(input.session_id.as_str())
@@ -471,8 +472,8 @@ fn delete_custom_world_agent_session_tx(
for message in ctx
.db
.custom_world_agent_message()
.iter()
.filter(|row| row.session_id == input.session_id)
.by_custom_world_agent_message_session_id()
.filter(&input.session_id)
.collect::<Vec<_>>()
{
ctx.db
@@ -483,8 +484,8 @@ fn delete_custom_world_agent_session_tx(
for operation in ctx
.db
.custom_world_agent_operation()
.iter()
.filter(|row| row.session_id == input.session_id)
.by_custom_world_agent_operation_session_id()
.filter(&input.session_id)
.collect::<Vec<_>>()
{
ctx.db
@@ -495,8 +496,8 @@ fn delete_custom_world_agent_session_tx(
for card in ctx
.db
.custom_world_draft_card()
.iter()
.filter(|row| row.session_id == input.session_id)
.by_custom_world_draft_card_session_id()
.filter(&input.session_id)
.collect::<Vec<_>>()
{
ctx.db
@@ -1184,8 +1185,16 @@ fn upsert_custom_world_profile_record(
.source_agent_session_id
.as_ref()
.and_then(|session_id| {
ctx.db.custom_world_profile().iter().find(|row| {
is_same_agent_draft_profile_candidate(row, &input.owner_user_id, session_id)
ctx.db
.custom_world_profile()
.by_custom_world_profile_owner_user_id()
.filter(&input.owner_user_id)
.find(|row| {
is_same_agent_draft_profile_candidate(
row,
&input.owner_user_id,
session_id,
)
})
})
});
@@ -1534,8 +1543,9 @@ fn list_custom_world_profile_snapshots(
let mut entries = ctx
.db
.custom_world_profile()
.iter()
.filter(|row| row.owner_user_id == input.owner_user_id && row.deleted_at.is_none())
.by_custom_world_profile_owner_user_id()
.filter(&input.owner_user_id)
.filter(|row| row.deleted_at.is_none())
.map(|row| build_custom_world_profile_snapshot(&row))
.collect::<Vec<_>>();
@@ -1676,8 +1686,9 @@ fn get_custom_world_gallery_detail_record_by_code(
let gallery_entry = ctx
.db
.custom_world_gallery_entry()
.iter()
.find(|row| row.public_work_code == normalized_public_work_code);
.by_custom_world_gallery_public_work_code()
.filter(&normalized_public_work_code)
.next();
let profile = gallery_entry.as_ref().and_then(|row| {
ctx.db
@@ -1974,9 +1985,14 @@ fn list_custom_world_work_snapshots(
let mut items = Vec::new();
let mut active_agent_session_ids = HashSet::new();
for session in ctx.db.custom_world_agent_session().iter().filter(|row| {
row.owner_user_id == input.owner_user_id
&& row.stage != RpgAgentStage::Published
let sessions = ctx
.db
.custom_world_agent_session()
.by_custom_world_agent_session_owner_user_id()
.filter(&input.owner_user_id)
.collect::<Vec<_>>();
for session in sessions.iter().filter(|row| {
row.stage != RpgAgentStage::Published
&& should_include_custom_world_agent_session_work(ctx, row)
}) {
active_agent_session_ids.insert(session.session_id.clone());
@@ -2021,8 +2037,9 @@ fn list_custom_world_work_snapshots(
for profile in ctx
.db
.custom_world_profile()
.iter()
.filter(|row| row.owner_user_id == input.owner_user_id && row.deleted_at.is_none())
.by_custom_world_profile_owner_user_id()
.filter(&input.owner_user_id)
.filter(|row| row.deleted_at.is_none())
.filter(|row| should_include_custom_world_profile_work(row, &active_agent_session_ids))
{
items.push(CustomWorldWorkSummarySnapshot {
@@ -2086,16 +2103,20 @@ fn should_include_custom_world_agent_session_work(
return true;
}
if ctx.db.custom_world_agent_message().iter().any(|message| {
message.session_id == session.session_id
&& matches!(message.role, RpgAgentMessageRole::User)
}) {
if ctx
.db
.custom_world_agent_message()
.by_custom_world_agent_message_session_id()
.filter(&session.session_id)
.any(|message| matches!(message.role, RpgAgentMessageRole::User))
{
return true;
}
ctx.db
.custom_world_draft_card()
.iter()
.by_custom_world_draft_card_session_id()
.filter(&session.session_id)
.any(|card| card.session_id == session.session_id)
}
@@ -3446,10 +3467,12 @@ fn update_role_asset_cards(
label: &str,
updated_at_micros: i64,
) {
for card in
ctx.db.custom_world_draft_card().iter().filter(|row| {
row.session_id == session_id && row.kind == RpgAgentDraftCardKind::Character
})
for card in ctx
.db
.custom_world_draft_card()
.by_custom_world_draft_card_session_id()
.filter(&session_id.to_string())
.filter(|row| row.kind == RpgAgentDraftCardKind::Character)
{
replace_custom_world_draft_card(
ctx,
@@ -4590,8 +4613,8 @@ fn resolve_session_work_counts(
for card in ctx
.db
.custom_world_draft_card()
.iter()
.filter(|row| row.session_id == session.session_id)
.by_custom_world_draft_card_session_id()
.filter(&session.session_id)
{
match card.kind {
RpgAgentDraftCardKind::Character => {
@@ -4827,11 +4850,9 @@ fn sync_missing_custom_world_gallery_entries(ctx: &ReducerContext) -> Result<(),
let published_profiles = ctx
.db
.custom_world_profile()
.iter()
.filter(|profile| {
profile.publication_status == CustomWorldPublicationStatus::Published
&& profile.deleted_at.is_none()
})
.by_custom_world_profile_publication_status()
.filter(CustomWorldPublicationStatus::Published)
.filter(|profile| profile.deleted_at.is_none())
.collect::<Vec<_>>();
for profile in published_profiles {
@@ -4973,8 +4994,8 @@ fn build_custom_world_agent_session_snapshot(
let mut messages = ctx
.db
.custom_world_agent_message()
.iter()
.filter(|message| message.session_id == row.session_id)
.by_custom_world_agent_message_session_id()
.filter(&row.session_id)
.map(|message| build_custom_world_agent_message_snapshot(&message))
.collect::<Vec<_>>();
messages.sort_by_key(|message| (message.created_at_micros, message.message_id.clone()));
@@ -4982,8 +5003,8 @@ fn build_custom_world_agent_session_snapshot(
let mut draft_cards = ctx
.db
.custom_world_draft_card()
.iter()
.filter(|card| card.session_id == row.session_id)
.by_custom_world_draft_card_session_id()
.filter(&row.session_id)
.map(|card| build_custom_world_draft_card_snapshot(&card))
.collect::<Vec<_>>();
draft_cards.sort_by_key(|card| (card.created_at_micros, card.card_id.clone()));
@@ -4991,8 +5012,8 @@ fn build_custom_world_agent_session_snapshot(
let mut operations = ctx
.db
.custom_world_agent_operation()
.iter()
.filter(|operation| operation.session_id == row.session_id)
.by_custom_world_agent_operation_session_id()
.filter(&row.session_id)
.map(|operation| build_custom_world_agent_operation_snapshot(&operation))
.collect::<Vec<_>>();
operations

View File

@@ -415,11 +415,9 @@ fn apply_inventory_mutation_tx(
let current_slots = ctx
.db
.inventory_slot()
.iter()
.filter(|slot| {
slot.runtime_session_id == input.runtime_session_id
&& slot.actor_user_id == input.actor_user_id
})
.by_inventory_runtime_session_id()
.filter(&input.runtime_session_id)
.filter(|slot| slot.actor_user_id == input.actor_user_id)
.map(|row| build_inventory_slot_snapshot_from_row(&row))
.collect::<Vec<_>>();
@@ -587,11 +585,9 @@ fn get_runtime_inventory_state_tx(
let slots = ctx
.db
.inventory_slot()
.iter()
.filter(|row| {
row.runtime_session_id == validated_input.runtime_session_id
&& row.actor_user_id == validated_input.actor_user_id
})
.by_inventory_runtime_session_id()
.filter(&validated_input.runtime_session_id)
.filter(|row| row.actor_user_id == validated_input.actor_user_id)
.map(|row| build_inventory_slot_snapshot_from_row(&row))
.collect::<Vec<_>>();
@@ -926,8 +922,8 @@ fn get_story_session_state_tx(
let mut events = ctx
.db
.story_event()
.iter()
.filter(|row| row.story_session_id == input.story_session_id)
.by_story_session_id()
.filter(&input.story_session_id)
.map(|row| build_story_event_snapshot_from_row(&row))
.collect::<Vec<_>>();
events.sort_by_key(|event| (event.created_at_micros, event.event_id.clone()));
@@ -1439,11 +1435,9 @@ fn inventory_reward_source_already_granted(
ctx.db
.inventory_slot()
.iter()
.filter(|row| {
row.runtime_session_id == first_mutation.runtime_session_id
&& row.actor_user_id == first_mutation.actor_user_id
})
.by_inventory_runtime_session_id()
.filter(&first_mutation.runtime_session_id)
.filter(|row| row.actor_user_id == first_mutation.actor_user_id)
.any(|row| row.source_reference_id.as_deref() == Some(source_reference_id))
}

View File

@@ -161,12 +161,12 @@ pub fn list_match3d_works(
match ctx.try_with_tx(|tx| list_match3d_works_tx(tx, input.clone())) {
Ok(items) => Match3DWorksProcedureResult {
ok: true,
items_json: Some(to_json_string(&items)),
items,
error_message: None,
},
Err(message) => Match3DWorksProcedureResult {
ok: false,
items_json: None,
items: Vec::new(),
error_message: Some(message),
},
}
@@ -191,12 +191,12 @@ pub fn delete_match3d_work(
match ctx.try_with_tx(|tx| delete_match3d_work_tx(tx, input.clone())) {
Ok(items) => Match3DWorksProcedureResult {
ok: true,
items_json: Some(to_json_string(&items)),
items,
error_message: None,
},
Err(message) => Match3DWorksProcedureResult {
ok: false,
items_json: None,
items: Vec::new(),
error_message: Some(message),
},
}
@@ -234,7 +234,7 @@ pub fn click_match3d_item(
Err(message) => Match3DClickItemProcedureResult {
ok: false,
status: MATCH3D_CLICK_REJECTED_NOT_CLICKABLE.to_string(),
run_json: None,
run: None,
accepted_item_instance_id: None,
cleared_item_instance_ids: Vec::new(),
failure_reason: None,
@@ -690,17 +690,22 @@ fn list_match3d_works_tx(
ctx: &ReducerContext,
input: Match3DWorksListInput,
) -> Result<Vec<Match3DWorkSnapshot>, String> {
let mut items = ctx
.db
let rows = if input.published_only {
ctx.db
.match3d_work_profile()
.iter()
.filter(|row| {
if input.published_only {
row.publication_status == MATCH3D_PUBLICATION_PUBLISHED
.by_match3d_work_publication_status()
.filter(&MATCH3D_PUBLICATION_PUBLISHED.to_string())
.collect::<Vec<_>>()
} else {
row.owner_user_id == input.owner_user_id
}
})
require_non_empty(&input.owner_user_id, "match3d owner_user_id")?;
ctx.db
.match3d_work_profile()
.by_match3d_work_owner_user_id()
.filter(&input.owner_user_id)
.collect::<Vec<_>>()
};
let mut items = rows
.iter()
.map(|row| build_work_snapshot(&row))
.collect::<Result<Vec<_>, _>>()?;
items.sort_by(|left, right| {
@@ -741,10 +746,9 @@ fn delete_match3d_work_tx(
for run in ctx
.db
.match3d_runtime_run()
.iter()
.filter(|row| {
row.profile_id == input.profile_id && row.owner_user_id == input.owner_user_id
})
.by_match3d_run_profile_id()
.filter(&input.profile_id)
.filter(|row| row.owner_user_id == input.owner_user_id)
.collect::<Vec<_>>()
{
ctx.db.match3d_runtime_run().run_id().delete(&run.run_id);
@@ -987,8 +991,8 @@ fn build_session_snapshot(
let mut messages = ctx
.db
.match3d_agent_message()
.iter()
.filter(|message| message.session_id == row.session_id)
.by_match3d_agent_message_session_id()
.filter(&row.session_id)
.map(|message| Match3DAgentMessageSnapshot {
message_id: message.message_id,
session_id: message.session_id,
@@ -1241,10 +1245,10 @@ fn click_result(
Match3DClickItemProcedureResult {
ok: true,
status: status.to_string(),
run_json: Some(to_json_string(&snapshot)),
failure_reason: snapshot.failure_reason.clone(),
run: Some(snapshot),
accepted_item_instance_id,
cleared_item_instance_ids,
failure_reason: snapshot.failure_reason,
error_message: None,
}
}
@@ -1802,7 +1806,7 @@ fn to_json_string<T: Serialize>(value: &T) -> String {
fn session_result(session: Match3DAgentSessionSnapshot) -> Match3DAgentSessionProcedureResult {
Match3DAgentSessionProcedureResult {
ok: true,
session_json: Some(to_json_string(&session)),
session: Some(session),
error_message: None,
}
}
@@ -1810,7 +1814,7 @@ fn session_result(session: Match3DAgentSessionSnapshot) -> Match3DAgentSessionPr
fn session_error(message: String) -> Match3DAgentSessionProcedureResult {
Match3DAgentSessionProcedureResult {
ok: false,
session_json: None,
session: None,
error_message: Some(message),
}
}
@@ -1818,7 +1822,7 @@ fn session_error(message: String) -> Match3DAgentSessionProcedureResult {
fn work_result(work: Match3DWorkSnapshot) -> Match3DWorkProcedureResult {
Match3DWorkProcedureResult {
ok: true,
work_json: Some(to_json_string(&work)),
work: Some(work),
error_message: None,
}
}
@@ -1826,7 +1830,7 @@ fn work_result(work: Match3DWorkSnapshot) -> Match3DWorkProcedureResult {
fn work_error(message: String) -> Match3DWorkProcedureResult {
Match3DWorkProcedureResult {
ok: false,
work_json: None,
work: None,
error_message: Some(message),
}
}
@@ -1834,7 +1838,7 @@ fn work_error(message: String) -> Match3DWorkProcedureResult {
fn run_result(run: Match3DRunSnapshot) -> Match3DRunProcedureResult {
Match3DRunProcedureResult {
ok: true,
run_json: Some(to_json_string(&run)),
run: Some(run),
error_message: None,
}
}
@@ -1842,7 +1846,7 @@ fn run_result(run: Match3DRunSnapshot) -> Match3DRunProcedureResult {
fn run_error(message: String) -> Match3DRunProcedureResult {
Match3DRunProcedureResult {
ok: false,
run_json: None,
run: None,
error_message: Some(message),
}
}

Some files were not shown because too many files have changed in this diff Show More