Rework avatars.

Now we have a concept of an avatar at the server, realm, and scene level
and we have the groundwork for a realm store. New uesrs no longer props,
they get a default avatar. New system supports gender
{male,female,neutral} and {child,adult}.
This commit is contained in:
Evan Carroll 2026-01-22 21:04:27 -06:00
parent e4abdb183f
commit 6fb90e42c3
55 changed files with 7392 additions and 512 deletions

View file

@ -5,7 +5,7 @@ use axum::{
routing::{delete, get, post, put},
};
use super::{auth, config, dashboard, props, realms, scenes, spots, staff, users};
use super::{auth, avatars, config, dashboard, props, realms, scenes, spots, staff, users};
use crate::app::AdminAppState;
/// Create the admin API router.
@ -85,6 +85,28 @@ pub fn admin_api_router() -> Router<AdminAppState> {
"/props/{prop_id}",
get(props::get_prop).delete(props::delete_prop),
)
// API - Server Avatars
.route(
"/avatars",
get(avatars::list_avatars).post(avatars::create_avatar),
)
.route(
"/avatars/{avatar_id}",
get(avatars::get_avatar)
.put(avatars::update_avatar)
.delete(avatars::delete_avatar),
)
// API - Realm Avatars
.route(
"/realms/{slug}/avatars",
get(realms::list_realm_avatars).post(realms::create_realm_avatar),
)
.route(
"/realms/{slug}/avatars/{avatar_id}",
get(realms::get_realm_avatar)
.put(realms::update_realm_avatar)
.delete(realms::delete_realm_avatar),
)
}
/// Health check endpoint.