doc, split types

This commit is contained in:
Brandon Thomas committed 2026-03-30 14:16:04 -04:00
1 parent 646ef895b3
commit fcfc8bf485
7 files changed
+68 -35

No files matched your search

@@ -1,7 +1,8 @@
use serde_derive::{Deserialize, Serialize};
use utoipa::ToSchema;
use crate::characters::shared::CharacterDetails;
use crate::common::responses::media_links::MediaLinks;
use enums::common::generation::common_model_type::CommonModelType;
use tokens::tokens::characters::CharacterToken;
/// Path parameters for getting a character.
@@ -14,5 +15,22 @@ pub struct GetCharacterPathInfo {
#[derive(Serialize, ToSchema)]
pub struct GetCharacterResponse {
pub success: bool,
pub character: CharacterDetails,
pub character: GetCharacterDetails,
}
/// Full character details returned by the get endpoint.
#[derive(Serialize, ToSchema)]
pub struct GetCharacterDetails {
pub token: CharacterToken,
/// Which models this character can be used with.
pub models: Vec<CommonModelType>,
pub name: String,
pub maybe_description: Option<String>,
pub maybe_avatar: Option<MediaLinks>,
pub maybe_full_image: Option<MediaLinks>,
}
@@ -1,7 +1,9 @@
use serde_derive::{Deserialize, Serialize};
use utoipa::{IntoParams, ToSchema};
use crate::characters::shared::CharacterDetails;
use crate::common::responses::media_links::MediaLinks;
use enums::common::generation::common_model_type::CommonModelType;
use tokens::tokens::characters::CharacterToken;
/// Query string parameters for listing characters.
#[derive(Deserialize, IntoParams)]
@@ -14,6 +16,23 @@ pub struct ListCharactersQuery {
#[derive(Serialize, ToSchema)]
pub struct ListCharactersResponse {
pub success: bool,
pub characters: Vec<CharacterDetails>,
pub characters: Vec<ListCharactersEntry>,
pub next_cursor: Option<u64>,
}
/// A character entry in the list response.
#[derive(Serialize, ToSchema)]
pub struct ListCharactersEntry {
pub token: CharacterToken,
/// Which models this character can be used with.
pub models: Vec<CommonModelType>,
pub name: String,
pub maybe_description: Option<String>,
pub maybe_avatar: Option<MediaLinks>,
pub maybe_full_image: Option<MediaLinks>,
}
@@ -3,4 +3,3 @@ pub mod delete_character;
pub mod edit_character;
pub mod get_character;
pub mod list_characters;
pub mod shared;
@@ -1,23 +0,0 @@
use serde_derive::Serialize;
use utoipa::ToSchema;
use crate::common::responses::media_links::MediaLinks;
use enums::common::generation::common_model_type::CommonModelType;
use tokens::tokens::characters::CharacterToken;
/// Character summary used in list and get responses.
#[derive(Serialize, ToSchema)]
pub struct CharacterDetails {
pub token: CharacterToken,
/// Which models this character can be used with.
pub models: Vec<CommonModelType>,
pub name: String,
pub maybe_description: Option<String>,
pub maybe_avatar: Option<MediaLinks>,
pub maybe_full_image: Option<MediaLinks>,
}
@@ -279,6 +279,11 @@ use artcraft_api_defs::subscriptions::get_session_subscription::*;
use artcraft_api_defs::media_file::list_batch_generated_media_files::*;
// Handler modules with locally-defined types
use crate::http_server::endpoints::moderation::info::moderator_token_info_handler::*;
use artcraft_api_defs::characters::create_character::*;
use artcraft_api_defs::characters::delete_character::*;
use artcraft_api_defs::characters::edit_character::*;
use artcraft_api_defs::characters::get_character::*;
use artcraft_api_defs::characters::list_characters::*;
use artcraft_api_defs::moderation::alerts::moderation_send_alert::*;
use artcraft_api_defs::omni_gen::cost_and_generate_requests::omni_gen_image_cost_and_generate_request::*;
use artcraft_api_defs::omni_gen::cost_and_generate_requests::omni_gen_video_cost_and_generate_request::*;
@@ -476,6 +481,12 @@ use crate::http_server::endpoints::media_files::list::list_batch_generated_redux
crate::http_server::endpoints::voice_conversion::enqueue_seed_vc_inference_handler::enqueue_infer_seed_vc_handler,
// TTS
crate::http_server::endpoints::tts::enqueue_infer_f5_tts_handler::enqueue_infer_f5_tts_handler::enqueue_infer_f5_tts_handler,
// Characters
crate::http_server::endpoints::characters::list_characters_handler::list_characters_handler,
crate::http_server::endpoints::characters::create_character_handler::create_character_handler,
crate::http_server::endpoints::characters::get_character_handler::get_character_handler,
crate::http_server::endpoints::characters::edit_character_handler::edit_character_handler,
crate::http_server::endpoints::characters::delete_character_handler::delete_character_handler,
// Omni Gen
crate::http_server::endpoints::omni_gen::cost::image::omni_gen_image_cost_handler::omni_gen_image_cost_handler,
crate::http_server::endpoints::omni_gen::cost::video::omni_gen_video_cost_handler::omni_gen_video_cost_handler,
@@ -693,6 +704,17 @@ use crate::http_server::endpoints::media_files::list::list_batch_generated_redux
ModeratorUserLookupRequest,
ModeratorUserLookupSuccessResponse,
ModeratorUserLookupUserDetails,
CreateCharacterRequest,
CreateCharacterResponse,
DeleteCharacterPathInfo,
DeleteCharacterResponse,
EditCharacterRequest,
EditCharacterResponse,
GetCharacterDetails,
GetCharacterPathInfo,
GetCharacterResponse,
ListCharactersEntry,
ListCharactersResponse,
OmniGenImageCostAndGenerateRequest,
OmniGenImageCostResponse,
OmniGenImageGenerateResponse,
@@ -3,8 +3,7 @@ use std::sync::Arc;
use actix_web::web::{Json, Path};
use actix_web::{web, HttpRequest};
use artcraft_api_defs::characters::get_character::{GetCharacterPathInfo, GetCharacterResponse};
use artcraft_api_defs::characters::shared::CharacterDetails;
use artcraft_api_defs::characters::get_character::{GetCharacterDetails, GetCharacterPathInfo, GetCharacterResponse};
use enums::common::generation::common_model_type::CommonModelType;
use tokens::tokens::characters::CharacterToken;
@@ -31,7 +30,7 @@ pub async fn get_character_handler(
_server_state: web::Data<Arc<ServerState>>,
) -> Result<Json<GetCharacterResponse>, CommonWebError> {
// TODO: Replace with real implementation.
let mock_character = CharacterDetails {
let mock_character = GetCharacterDetails {
token: path.character_token.clone(),
models: vec![CommonModelType::Seedance2p0],
name: "Mock Character".to_string(),
@@ -3,8 +3,7 @@ use std::sync::Arc;
use actix_web::web::{Json, Query};
use actix_web::{web, HttpRequest};
use artcraft_api_defs::characters::list_characters::{ListCharactersQuery, ListCharactersResponse};
use artcraft_api_defs::characters::shared::CharacterDetails;
use artcraft_api_defs::characters::list_characters::{ListCharactersEntry, ListCharactersQuery, ListCharactersResponse};
use enums::common::generation::common_model_type::CommonModelType;
use tokens::tokens::characters::CharacterToken;
@@ -30,7 +29,7 @@ pub async fn list_characters_handler(
) -> Result<Json<ListCharactersResponse>, CommonWebError> {
// TODO: Replace with real implementation.
let mock_characters = vec![
CharacterDetails {
ListCharactersEntry {
token: CharacterToken::new_from_str("character_mock_abc123"),
models: vec![CommonModelType::Seedance2p0],
name: "Juno".to_string(),
@@ -38,7 +37,7 @@ pub async fn list_characters_handler(
maybe_avatar: None,
maybe_full_image: None,
},
CharacterDetails {
ListCharactersEntry {
token: CharacterToken::new_from_str("character_mock_def456"),
models: vec![CommonModelType::Seedance2p0],
name: "Ernest".to_string(),