Integrate unfinished server-rs refactor worklists
This commit is contained in:
@@ -2,3 +2,305 @@
|
||||
//!
|
||||
//! 后续迁移 profile、Agent 会话、草稿卡、发布门禁和画廊投影规则时,
|
||||
//! 只保留纯领域结构;LLM 推理、SSE 和 OSS 均留在外层 adapter。
|
||||
|
||||
use serde::{Deserialize, Serialize};
|
||||
#[cfg(feature = "spacetime-types")]
|
||||
use spacetimedb::SpacetimeType;
|
||||
|
||||
pub const MAX_PROGRESS_PERCENT: u32 = 100;
|
||||
|
||||
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub enum CustomWorldPublicationStatus {
|
||||
Draft,
|
||||
Published,
|
||||
}
|
||||
|
||||
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub enum CustomWorldThemeMode {
|
||||
Martial,
|
||||
Arcane,
|
||||
Machina,
|
||||
Tide,
|
||||
Rift,
|
||||
Mythic,
|
||||
}
|
||||
|
||||
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub enum CustomWorldGenerationMode {
|
||||
Fast,
|
||||
Full,
|
||||
}
|
||||
|
||||
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub enum CustomWorldSessionStatus {
|
||||
Clarifying,
|
||||
ReadyToGenerate,
|
||||
Generating,
|
||||
Completed,
|
||||
GenerationError,
|
||||
}
|
||||
|
||||
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub enum RpgAgentStage {
|
||||
CollectingIntent,
|
||||
Clarifying,
|
||||
FoundationReview,
|
||||
ObjectRefining,
|
||||
VisualRefining,
|
||||
LongTailReview,
|
||||
ReadyToPublish,
|
||||
Published,
|
||||
Error,
|
||||
}
|
||||
|
||||
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub enum RpgAgentMessageRole {
|
||||
User,
|
||||
Assistant,
|
||||
System,
|
||||
}
|
||||
|
||||
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub enum RpgAgentMessageKind {
|
||||
Chat,
|
||||
Clarification,
|
||||
Summary,
|
||||
Checkpoint,
|
||||
Warning,
|
||||
ActionResult,
|
||||
}
|
||||
|
||||
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub enum RpgAgentOperationType {
|
||||
ProcessMessage,
|
||||
DraftFoundation,
|
||||
UpdateDraftCard,
|
||||
SyncResultProfile,
|
||||
GenerateCharacters,
|
||||
GenerateLandmarks,
|
||||
DeleteCharacters,
|
||||
DeleteLandmarks,
|
||||
GenerateRoleAssets,
|
||||
SyncRoleAssets,
|
||||
GenerateSceneAssets,
|
||||
SyncSceneAssets,
|
||||
ExpandLongTail,
|
||||
PublishWorld,
|
||||
RevertCheckpoint,
|
||||
}
|
||||
|
||||
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub enum RpgAgentOperationStatus {
|
||||
Queued,
|
||||
Running,
|
||||
Completed,
|
||||
Failed,
|
||||
}
|
||||
|
||||
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub enum RpgAgentDraftCardKind {
|
||||
World,
|
||||
Camp,
|
||||
Faction,
|
||||
Character,
|
||||
Landmark,
|
||||
Thread,
|
||||
Chapter,
|
||||
SceneChapter,
|
||||
Carrier,
|
||||
SidequestSeed,
|
||||
}
|
||||
|
||||
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub enum RpgAgentDraftCardStatus {
|
||||
Suggested,
|
||||
Confirmed,
|
||||
Locked,
|
||||
Warning,
|
||||
}
|
||||
|
||||
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub enum CustomWorldRoleAssetStatus {
|
||||
Missing,
|
||||
VisualReady,
|
||||
AnimationsReady,
|
||||
Complete,
|
||||
}
|
||||
|
||||
impl CustomWorldPublicationStatus {
|
||||
pub fn as_str(&self) -> &'static str {
|
||||
match self {
|
||||
Self::Draft => "draft",
|
||||
Self::Published => "published",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl CustomWorldThemeMode {
|
||||
pub fn as_str(&self) -> &'static str {
|
||||
match self {
|
||||
Self::Martial => "martial",
|
||||
Self::Arcane => "arcane",
|
||||
Self::Machina => "machina",
|
||||
Self::Tide => "tide",
|
||||
Self::Rift => "rift",
|
||||
Self::Mythic => "mythic",
|
||||
}
|
||||
}
|
||||
|
||||
pub fn from_client_str(value: &str) -> Option<Self> {
|
||||
match value.trim().to_ascii_lowercase().as_str() {
|
||||
"martial" => Some(Self::Martial),
|
||||
"arcane" => Some(Self::Arcane),
|
||||
"machina" => Some(Self::Machina),
|
||||
"tide" => Some(Self::Tide),
|
||||
"rift" => Some(Self::Rift),
|
||||
"mythic" => Some(Self::Mythic),
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl CustomWorldGenerationMode {
|
||||
pub fn as_str(&self) -> &'static str {
|
||||
match self {
|
||||
Self::Fast => "fast",
|
||||
Self::Full => "full",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl CustomWorldSessionStatus {
|
||||
pub fn as_str(&self) -> &'static str {
|
||||
match self {
|
||||
Self::Clarifying => "clarifying",
|
||||
Self::ReadyToGenerate => "ready_to_generate",
|
||||
Self::Generating => "generating",
|
||||
Self::Completed => "completed",
|
||||
Self::GenerationError => "generation_error",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl RpgAgentStage {
|
||||
pub fn as_str(&self) -> &'static str {
|
||||
match self {
|
||||
Self::CollectingIntent => "collecting_intent",
|
||||
Self::Clarifying => "clarifying",
|
||||
Self::FoundationReview => "foundation_review",
|
||||
Self::ObjectRefining => "object_refining",
|
||||
Self::VisualRefining => "visual_refining",
|
||||
Self::LongTailReview => "long_tail_review",
|
||||
Self::ReadyToPublish => "ready_to_publish",
|
||||
Self::Published => "published",
|
||||
Self::Error => "error",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl RpgAgentMessageRole {
|
||||
pub fn as_str(&self) -> &'static str {
|
||||
match self {
|
||||
Self::User => "user",
|
||||
Self::Assistant => "assistant",
|
||||
Self::System => "system",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl RpgAgentMessageKind {
|
||||
pub fn as_str(&self) -> &'static str {
|
||||
match self {
|
||||
Self::Chat => "chat",
|
||||
Self::Clarification => "clarification",
|
||||
Self::Summary => "summary",
|
||||
Self::Checkpoint => "checkpoint",
|
||||
Self::Warning => "warning",
|
||||
Self::ActionResult => "action_result",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl RpgAgentOperationType {
|
||||
pub fn as_str(&self) -> &'static str {
|
||||
match self {
|
||||
Self::ProcessMessage => "process_message",
|
||||
Self::DraftFoundation => "draft_foundation",
|
||||
Self::UpdateDraftCard => "update_draft_card",
|
||||
Self::SyncResultProfile => "sync_result_profile",
|
||||
Self::GenerateCharacters => "generate_characters",
|
||||
Self::GenerateLandmarks => "generate_landmarks",
|
||||
Self::DeleteCharacters => "delete_characters",
|
||||
Self::DeleteLandmarks => "delete_landmarks",
|
||||
Self::GenerateRoleAssets => "generate_role_assets",
|
||||
Self::SyncRoleAssets => "sync_role_assets",
|
||||
Self::GenerateSceneAssets => "generate_scene_assets",
|
||||
Self::SyncSceneAssets => "sync_scene_assets",
|
||||
Self::ExpandLongTail => "expand_long_tail",
|
||||
Self::PublishWorld => "publish_world",
|
||||
Self::RevertCheckpoint => "revert_checkpoint",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl RpgAgentOperationStatus {
|
||||
pub fn as_str(&self) -> &'static str {
|
||||
match self {
|
||||
Self::Queued => "queued",
|
||||
Self::Running => "running",
|
||||
Self::Completed => "completed",
|
||||
Self::Failed => "failed",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl RpgAgentDraftCardKind {
|
||||
pub fn as_str(&self) -> &'static str {
|
||||
match self {
|
||||
Self::World => "world",
|
||||
Self::Camp => "camp",
|
||||
Self::Faction => "faction",
|
||||
Self::Character => "character",
|
||||
Self::Landmark => "landmark",
|
||||
Self::Thread => "thread",
|
||||
Self::Chapter => "chapter",
|
||||
Self::SceneChapter => "scene_chapter",
|
||||
Self::Carrier => "carrier",
|
||||
Self::SidequestSeed => "sidequest_seed",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl RpgAgentDraftCardStatus {
|
||||
pub fn as_str(&self) -> &'static str {
|
||||
match self {
|
||||
Self::Suggested => "suggested",
|
||||
Self::Confirmed => "confirmed",
|
||||
Self::Locked => "locked",
|
||||
Self::Warning => "warning",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl CustomWorldRoleAssetStatus {
|
||||
pub fn as_str(&self) -> &'static str {
|
||||
match self {
|
||||
Self::Missing => "missing",
|
||||
Self::VisualReady => "visual_ready",
|
||||
Self::AnimationsReady => "animations_ready",
|
||||
Self::Complete => "complete",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,8 @@ mod domain;
|
||||
mod errors;
|
||||
mod events;
|
||||
|
||||
pub use domain::*;
|
||||
|
||||
use std::{error::Error, fmt};
|
||||
|
||||
use serde::{Deserialize, Serialize};
|
||||
@@ -11,138 +13,6 @@ use serde_json::{Map, Value};
|
||||
#[cfg(feature = "spacetime-types")]
|
||||
use spacetimedb::SpacetimeType;
|
||||
|
||||
pub const MAX_PROGRESS_PERCENT: u32 = 100;
|
||||
|
||||
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub enum CustomWorldPublicationStatus {
|
||||
Draft,
|
||||
Published,
|
||||
}
|
||||
|
||||
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub enum CustomWorldThemeMode {
|
||||
Martial,
|
||||
Arcane,
|
||||
Machina,
|
||||
Tide,
|
||||
Rift,
|
||||
Mythic,
|
||||
}
|
||||
|
||||
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub enum CustomWorldGenerationMode {
|
||||
Fast,
|
||||
Full,
|
||||
}
|
||||
|
||||
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub enum CustomWorldSessionStatus {
|
||||
Clarifying,
|
||||
ReadyToGenerate,
|
||||
Generating,
|
||||
Completed,
|
||||
GenerationError,
|
||||
}
|
||||
|
||||
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub enum RpgAgentStage {
|
||||
CollectingIntent,
|
||||
Clarifying,
|
||||
FoundationReview,
|
||||
ObjectRefining,
|
||||
VisualRefining,
|
||||
LongTailReview,
|
||||
ReadyToPublish,
|
||||
Published,
|
||||
Error,
|
||||
}
|
||||
|
||||
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub enum RpgAgentMessageRole {
|
||||
User,
|
||||
Assistant,
|
||||
System,
|
||||
}
|
||||
|
||||
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub enum RpgAgentMessageKind {
|
||||
Chat,
|
||||
Clarification,
|
||||
Summary,
|
||||
Checkpoint,
|
||||
Warning,
|
||||
ActionResult,
|
||||
}
|
||||
|
||||
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub enum RpgAgentOperationType {
|
||||
ProcessMessage,
|
||||
DraftFoundation,
|
||||
UpdateDraftCard,
|
||||
SyncResultProfile,
|
||||
GenerateCharacters,
|
||||
GenerateLandmarks,
|
||||
DeleteCharacters,
|
||||
DeleteLandmarks,
|
||||
GenerateRoleAssets,
|
||||
SyncRoleAssets,
|
||||
GenerateSceneAssets,
|
||||
SyncSceneAssets,
|
||||
ExpandLongTail,
|
||||
PublishWorld,
|
||||
RevertCheckpoint,
|
||||
}
|
||||
|
||||
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub enum RpgAgentOperationStatus {
|
||||
Queued,
|
||||
Running,
|
||||
Completed,
|
||||
Failed,
|
||||
}
|
||||
|
||||
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub enum RpgAgentDraftCardKind {
|
||||
World,
|
||||
Camp,
|
||||
Faction,
|
||||
Character,
|
||||
Landmark,
|
||||
Thread,
|
||||
Chapter,
|
||||
SceneChapter,
|
||||
Carrier,
|
||||
SidequestSeed,
|
||||
}
|
||||
|
||||
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub enum RpgAgentDraftCardStatus {
|
||||
Suggested,
|
||||
Confirmed,
|
||||
Locked,
|
||||
Warning,
|
||||
}
|
||||
|
||||
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub enum CustomWorldRoleAssetStatus {
|
||||
Missing,
|
||||
VisualReady,
|
||||
AnimationsReady,
|
||||
Complete,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, Eq)]
|
||||
pub enum CustomWorldFieldError {
|
||||
MissingProfileId,
|
||||
@@ -688,172 +558,6 @@ pub struct CustomWorldPublishWorldResult {
|
||||
pub error_message: Option<String>,
|
||||
}
|
||||
|
||||
impl CustomWorldPublicationStatus {
|
||||
pub fn as_str(&self) -> &'static str {
|
||||
match self {
|
||||
Self::Draft => "draft",
|
||||
Self::Published => "published",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl CustomWorldThemeMode {
|
||||
pub fn as_str(&self) -> &'static str {
|
||||
match self {
|
||||
Self::Martial => "martial",
|
||||
Self::Arcane => "arcane",
|
||||
Self::Machina => "machina",
|
||||
Self::Tide => "tide",
|
||||
Self::Rift => "rift",
|
||||
Self::Mythic => "mythic",
|
||||
}
|
||||
}
|
||||
|
||||
pub fn from_client_str(value: &str) -> Option<Self> {
|
||||
match value.trim().to_ascii_lowercase().as_str() {
|
||||
"martial" => Some(Self::Martial),
|
||||
"arcane" => Some(Self::Arcane),
|
||||
"machina" => Some(Self::Machina),
|
||||
"tide" => Some(Self::Tide),
|
||||
"rift" => Some(Self::Rift),
|
||||
"mythic" => Some(Self::Mythic),
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl CustomWorldGenerationMode {
|
||||
pub fn as_str(&self) -> &'static str {
|
||||
match self {
|
||||
Self::Fast => "fast",
|
||||
Self::Full => "full",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl CustomWorldSessionStatus {
|
||||
pub fn as_str(&self) -> &'static str {
|
||||
match self {
|
||||
Self::Clarifying => "clarifying",
|
||||
Self::ReadyToGenerate => "ready_to_generate",
|
||||
Self::Generating => "generating",
|
||||
Self::Completed => "completed",
|
||||
Self::GenerationError => "generation_error",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl RpgAgentStage {
|
||||
pub fn as_str(&self) -> &'static str {
|
||||
match self {
|
||||
Self::CollectingIntent => "collecting_intent",
|
||||
Self::Clarifying => "clarifying",
|
||||
Self::FoundationReview => "foundation_review",
|
||||
Self::ObjectRefining => "object_refining",
|
||||
Self::VisualRefining => "visual_refining",
|
||||
Self::LongTailReview => "long_tail_review",
|
||||
Self::ReadyToPublish => "ready_to_publish",
|
||||
Self::Published => "published",
|
||||
Self::Error => "error",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl RpgAgentMessageRole {
|
||||
pub fn as_str(&self) -> &'static str {
|
||||
match self {
|
||||
Self::User => "user",
|
||||
Self::Assistant => "assistant",
|
||||
Self::System => "system",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl RpgAgentMessageKind {
|
||||
pub fn as_str(&self) -> &'static str {
|
||||
match self {
|
||||
Self::Chat => "chat",
|
||||
Self::Clarification => "clarification",
|
||||
Self::Summary => "summary",
|
||||
Self::Checkpoint => "checkpoint",
|
||||
Self::Warning => "warning",
|
||||
Self::ActionResult => "action_result",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl RpgAgentOperationType {
|
||||
pub fn as_str(&self) -> &'static str {
|
||||
match self {
|
||||
Self::ProcessMessage => "process_message",
|
||||
Self::DraftFoundation => "draft_foundation",
|
||||
Self::UpdateDraftCard => "update_draft_card",
|
||||
Self::SyncResultProfile => "sync_result_profile",
|
||||
Self::GenerateCharacters => "generate_characters",
|
||||
Self::GenerateLandmarks => "generate_landmarks",
|
||||
Self::DeleteCharacters => "delete_characters",
|
||||
Self::DeleteLandmarks => "delete_landmarks",
|
||||
Self::GenerateRoleAssets => "generate_role_assets",
|
||||
Self::SyncRoleAssets => "sync_role_assets",
|
||||
Self::GenerateSceneAssets => "generate_scene_assets",
|
||||
Self::SyncSceneAssets => "sync_scene_assets",
|
||||
Self::ExpandLongTail => "expand_long_tail",
|
||||
Self::PublishWorld => "publish_world",
|
||||
Self::RevertCheckpoint => "revert_checkpoint",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl RpgAgentOperationStatus {
|
||||
pub fn as_str(&self) -> &'static str {
|
||||
match self {
|
||||
Self::Queued => "queued",
|
||||
Self::Running => "running",
|
||||
Self::Completed => "completed",
|
||||
Self::Failed => "failed",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl RpgAgentDraftCardKind {
|
||||
pub fn as_str(&self) -> &'static str {
|
||||
match self {
|
||||
Self::World => "world",
|
||||
Self::Camp => "camp",
|
||||
Self::Faction => "faction",
|
||||
Self::Character => "character",
|
||||
Self::Landmark => "landmark",
|
||||
Self::Thread => "thread",
|
||||
Self::Chapter => "chapter",
|
||||
Self::SceneChapter => "scene_chapter",
|
||||
Self::Carrier => "carrier",
|
||||
Self::SidequestSeed => "sidequest_seed",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl RpgAgentDraftCardStatus {
|
||||
pub fn as_str(&self) -> &'static str {
|
||||
match self {
|
||||
Self::Suggested => "suggested",
|
||||
Self::Confirmed => "confirmed",
|
||||
Self::Locked => "locked",
|
||||
Self::Warning => "warning",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl CustomWorldRoleAssetStatus {
|
||||
pub fn as_str(&self) -> &'static str {
|
||||
match self {
|
||||
Self::Missing => "missing",
|
||||
Self::VisualReady => "visual_ready",
|
||||
Self::AnimationsReady => "animations_ready",
|
||||
Self::Complete => "complete",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn validate_custom_world_profile_fields(
|
||||
profile_id: &str,
|
||||
owner_user_id: &str,
|
||||
|
||||
Reference in New Issue
Block a user