mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-04 17:38:10 +00:00
dummy data, rename migrations
This commit is contained in:
1 parent
fcfc8bf485
commit
91ad838f3e
10 files changed
+95
-30
No files matched your search
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+38
-9
@@ -2,12 +2,18 @@ use std::sync::Arc;
|
||||
|
||||
use actix_web::web::{Json, Path};
|
||||
use actix_web::{web, HttpRequest};
|
||||
use log::warn;
|
||||
|
||||
use artcraft_api_defs::characters::get_character::{GetCharacterDetails, GetCharacterPathInfo, GetCharacterResponse};
|
||||
use bucket_paths::legacy::typified_paths::public::media_files::bucket_file_path::MediaFileBucketPath;
|
||||
use enums::common::generation::common_model_type::CommonModelType;
|
||||
use mysql_queries::queries::media_files::get::get_media_file::get_media_file;
|
||||
use tokens::tokens::characters::CharacterToken;
|
||||
use tokens::tokens::media_files::MediaFileToken;
|
||||
|
||||
use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain;
|
||||
use crate::state::server_state::ServerState;
|
||||
|
||||
/// Get a character by token.
|
||||
@@ -25,22 +31,45 @@ use crate::state::server_state::ServerState;
|
||||
)
|
||||
)]
|
||||
pub async fn get_character_handler(
|
||||
_http_request: HttpRequest,
|
||||
http_request: HttpRequest,
|
||||
path: Path<GetCharacterPathInfo>,
|
||||
_server_state: web::Data<Arc<ServerState>>,
|
||||
server_state: web::Data<Arc<ServerState>>,
|
||||
) -> Result<Json<GetCharacterResponse>, CommonWebError> {
|
||||
// TODO: Replace with real implementation.
|
||||
let mock_character = GetCharacterDetails {
|
||||
// TODO: Replace with real character query. This is test data using a real media file (Ernest).
|
||||
|
||||
let media_domain = get_media_domain(&http_request);
|
||||
let ernest_media_token = MediaFileToken::new_from_str("m_1997908e4tcbaj34wa0s5bvr4y4szt");
|
||||
|
||||
let maybe_links = match get_media_file(&ernest_media_token, false, &server_state.mysql_pool).await {
|
||||
Ok(Some(record)) => {
|
||||
let path = MediaFileBucketPath::from_object_hash(
|
||||
&record.public_bucket_directory_hash,
|
||||
record.maybe_public_bucket_prefix.as_deref(),
|
||||
record.maybe_public_bucket_extension.as_deref(),
|
||||
);
|
||||
Some(MediaLinksBuilder::from_media_path_and_env(media_domain, server_state.server_environment, &path))
|
||||
}
|
||||
Ok(None) => {
|
||||
warn!("Ernest media file not found in database");
|
||||
None
|
||||
}
|
||||
Err(err) => {
|
||||
warn!("Failed to look up Ernest media file: {:?}", err);
|
||||
None
|
||||
}
|
||||
};
|
||||
|
||||
let character = GetCharacterDetails {
|
||||
token: path.character_token.clone(),
|
||||
models: vec![CommonModelType::Seedance2p0],
|
||||
name: "Mock Character".to_string(),
|
||||
maybe_description: Some("This is a mock character for development.".to_string()),
|
||||
maybe_avatar: None,
|
||||
maybe_full_image: None,
|
||||
name: "Ernest".to_string(),
|
||||
maybe_description: Some("Ernest P. Worrell".to_string()),
|
||||
maybe_avatar: maybe_links.clone(),
|
||||
maybe_full_image: maybe_links,
|
||||
};
|
||||
|
||||
Ok(Json(GetCharacterResponse {
|
||||
success: true,
|
||||
character: mock_character,
|
||||
character,
|
||||
}))
|
||||
}
|
||||
+57
-21
@@ -2,12 +2,18 @@ use std::sync::Arc;
|
||||
|
||||
use actix_web::web::{Json, Query};
|
||||
use actix_web::{web, HttpRequest};
|
||||
use log::warn;
|
||||
|
||||
use artcraft_api_defs::characters::list_characters::{ListCharactersEntry, ListCharactersQuery, ListCharactersResponse};
|
||||
use bucket_paths::legacy::typified_paths::public::media_files::bucket_file_path::MediaFileBucketPath;
|
||||
use enums::common::generation::common_model_type::CommonModelType;
|
||||
use mysql_queries::queries::media_files::get::batch_get_media_files_by_tokens::batch_get_media_files_by_tokens;
|
||||
use tokens::tokens::characters::CharacterToken;
|
||||
use tokens::tokens::media_files::MediaFileToken;
|
||||
|
||||
use crate::http_server::common_responses::media::media_links_builder::MediaLinksBuilder;
|
||||
use crate::http_server::common_responses::common_web_error::CommonWebError;
|
||||
use crate::http_server::endpoints::media_files::helpers::get_media_domain::get_media_domain;
|
||||
use crate::state::server_state::ServerState;
|
||||
|
||||
/// List characters for the current session.
|
||||
@@ -23,33 +29,63 @@ use crate::state::server_state::ServerState;
|
||||
),
|
||||
)]
|
||||
pub async fn list_characters_handler(
|
||||
_http_request: HttpRequest,
|
||||
http_request: HttpRequest,
|
||||
_query: Query<ListCharactersQuery>,
|
||||
_server_state: web::Data<Arc<ServerState>>,
|
||||
server_state: web::Data<Arc<ServerState>>,
|
||||
) -> Result<Json<ListCharactersResponse>, CommonWebError> {
|
||||
// TODO: Replace with real implementation.
|
||||
let mock_characters = vec![
|
||||
ListCharactersEntry {
|
||||
token: CharacterToken::new_from_str("character_mock_abc123"),
|
||||
models: vec![CommonModelType::Seedance2p0],
|
||||
name: "Juno".to_string(),
|
||||
maybe_description: Some("Juno the shiba inu".to_string()),
|
||||
maybe_avatar: None,
|
||||
maybe_full_image: None,
|
||||
},
|
||||
ListCharactersEntry {
|
||||
token: CharacterToken::new_from_str("character_mock_def456"),
|
||||
models: vec![CommonModelType::Seedance2p0],
|
||||
name: "Ernest".to_string(),
|
||||
maybe_description: Some("Ernest P. Worrell".to_string()),
|
||||
maybe_avatar: None,
|
||||
maybe_full_image: None,
|
||||
},
|
||||
// TODO: Replace with real character queries. This is test data using real media files.
|
||||
|
||||
let media_domain = get_media_domain(&http_request);
|
||||
|
||||
struct TestCharacter {
|
||||
token: &'static str,
|
||||
name: &'static str,
|
||||
description: &'static str,
|
||||
media_token: &'static str,
|
||||
}
|
||||
|
||||
let test_characters = vec![
|
||||
TestCharacter { token: "character_mock_ernest_001", name: "Ernest", description: "Ernest P. Worrell", media_token: "m_1997908e4tcbaj34wa0s5bvr4y4szt" },
|
||||
TestCharacter { token: "character_mock_juno_002", name: "Juno", description: "Juno the corgi", media_token: "m_m1bz02z1kkzanxy6rb4vk1kvq9de9g" },
|
||||
TestCharacter { token: "character_mock_mochi_003", name: "Mochi", description: "Mochi with glasses", media_token: "m_5y81rcnpnrbey55da6cc2s9z4d2f45" },
|
||||
];
|
||||
|
||||
let media_tokens: Vec<MediaFileToken> = test_characters.iter()
|
||||
.map(|c| MediaFileToken::new_from_str(c.media_token))
|
||||
.collect();
|
||||
|
||||
let media_records = batch_get_media_files_by_tokens(&server_state.mysql_pool, &media_tokens, false)
|
||||
.await
|
||||
.unwrap_or_else(|err| {
|
||||
warn!("Failed to look up media files for test characters: {:?}", err);
|
||||
vec![]
|
||||
});
|
||||
|
||||
let characters = test_characters.iter().map(|tc| {
|
||||
let maybe_links = media_records.iter()
|
||||
.find(|r| r.token.as_str() == tc.media_token)
|
||||
.map(|r| {
|
||||
let path = MediaFileBucketPath::from_object_hash(
|
||||
&r.public_bucket_directory_hash,
|
||||
r.maybe_public_bucket_prefix.as_deref(),
|
||||
r.maybe_public_bucket_extension.as_deref(),
|
||||
);
|
||||
MediaLinksBuilder::from_media_path_and_env(media_domain, server_state.server_environment, &path)
|
||||
});
|
||||
|
||||
ListCharactersEntry {
|
||||
token: CharacterToken::new_from_str(tc.token),
|
||||
models: vec![CommonModelType::Seedance2p0],
|
||||
name: tc.name.to_string(),
|
||||
maybe_description: Some(tc.description.to_string()),
|
||||
maybe_avatar: maybe_links.clone(),
|
||||
maybe_full_image: maybe_links,
|
||||
}
|
||||
}).collect();
|
||||
|
||||
Ok(Json(ListCharactersResponse {
|
||||
success: true,
|
||||
characters: mock_characters,
|
||||
characters,
|
||||
next_cursor: None,
|
||||
}))
|
||||
}
|
||||
Reference in new issue
Block a user