2025-03-22 22:17:47 -04:00
|
|
|
pub mod auth;
|
2025-03-24 19:55:08 -04:00
|
|
|
pub mod journal;
|
2025-03-24 22:42:33 -04:00
|
|
|
pub mod reactions;
|
2025-03-24 19:55:08 -04:00
|
|
|
|
2025-03-22 22:17:47 -04:00
|
|
|
use axum::{
|
|
|
|
Router,
|
2025-03-24 19:55:08 -04:00
|
|
|
routing::{delete, get, post},
|
2025-03-22 22:17:47 -04:00
|
|
|
};
|
|
|
|
use serde::Deserialize;
|
2025-03-24 22:42:33 -04:00
|
|
|
use tetratto_core::model::{
|
|
|
|
journal::{JournalEntryContext, JournalPageReadAccess, JournalPageWriteAccess},
|
|
|
|
reactions::AssetType,
|
2025-03-24 20:23:52 -04:00
|
|
|
};
|
2025-03-22 22:17:47 -04:00
|
|
|
|
|
|
|
pub fn routes() -> Router {
|
|
|
|
Router::new()
|
2025-03-24 22:42:33 -04:00
|
|
|
// reactions
|
|
|
|
.route("/reactions", post(reactions::create_request))
|
|
|
|
.route("/reactions/{id}", get(reactions::get_request))
|
|
|
|
.route("/reactions/{id}", delete(reactions::delete_request))
|
2025-03-24 19:55:08 -04:00
|
|
|
// journal pages
|
|
|
|
.route("/pages", post(journal::pages::create_request))
|
|
|
|
.route("/pages/{id}", delete(journal::pages::delete_request))
|
|
|
|
.route(
|
|
|
|
"/pages/{id}/title",
|
|
|
|
post(journal::pages::update_title_request),
|
|
|
|
)
|
|
|
|
.route(
|
|
|
|
"/pages/{id}/prompt",
|
|
|
|
post(journal::pages::update_prompt_request),
|
|
|
|
)
|
|
|
|
.route(
|
|
|
|
"/pages/{id}/access/read",
|
|
|
|
post(journal::pages::update_read_access_request),
|
|
|
|
)
|
|
|
|
.route(
|
|
|
|
"/pages/{id}/access/write",
|
|
|
|
post(journal::pages::update_write_access_request),
|
|
|
|
)
|
|
|
|
// journal entries
|
|
|
|
.route("/entries", post(journal::entries::create_request))
|
|
|
|
.route("/entries/{id}", delete(journal::entries::delete_request))
|
|
|
|
.route(
|
|
|
|
"/entries/{id}/content",
|
|
|
|
post(journal::entries::update_content_request),
|
|
|
|
)
|
2025-03-24 20:23:52 -04:00
|
|
|
.route(
|
|
|
|
"/entries/{id}/context",
|
|
|
|
post(journal::entries::update_context_request),
|
|
|
|
)
|
2025-03-23 16:37:43 -04:00
|
|
|
// auth
|
2025-03-22 22:17:47 -04:00
|
|
|
// global
|
|
|
|
.route("/auth/register", post(auth::register_request))
|
|
|
|
.route("/auth/login", post(auth::login_request))
|
2025-03-23 16:37:43 -04:00
|
|
|
.route("/auth/logout", post(auth::logout_request))
|
2025-03-23 18:03:11 -04:00
|
|
|
.route(
|
|
|
|
"/auth/upload/avatar",
|
|
|
|
post(auth::images::upload_avatar_request),
|
|
|
|
)
|
|
|
|
.route(
|
|
|
|
"/auth/upload/banner",
|
|
|
|
post(auth::images::upload_banner_request),
|
|
|
|
)
|
2025-03-22 22:17:47 -04:00
|
|
|
// profile
|
|
|
|
.route(
|
|
|
|
"/auth/profile/{id}/avatar",
|
|
|
|
get(auth::images::avatar_request),
|
|
|
|
)
|
|
|
|
.route(
|
|
|
|
"/auth/profile/{id}/banner",
|
|
|
|
get(auth::images::banner_request),
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(Deserialize)]
|
|
|
|
pub struct AuthProps {
|
|
|
|
pub username: String,
|
|
|
|
pub password: String,
|
|
|
|
}
|
2025-03-24 19:55:08 -04:00
|
|
|
|
|
|
|
#[derive(Deserialize)]
|
|
|
|
pub struct CreateJournalPage {
|
|
|
|
pub title: String,
|
|
|
|
pub prompt: String,
|
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(Deserialize)]
|
|
|
|
pub struct UpdateJournalPageTitle {
|
|
|
|
pub title: String,
|
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(Deserialize)]
|
|
|
|
pub struct UpdateJournalPagePrompt {
|
|
|
|
pub prompt: String,
|
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(Deserialize)]
|
|
|
|
pub struct UpdateJournalPageReadAccess {
|
|
|
|
pub access: JournalPageReadAccess,
|
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(Deserialize)]
|
|
|
|
pub struct UpdateJournalPageWriteAccess {
|
|
|
|
pub access: JournalPageWriteAccess,
|
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(Deserialize)]
|
|
|
|
pub struct CreateJournalEntry {
|
|
|
|
pub content: String,
|
|
|
|
pub journal: usize,
|
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(Deserialize)]
|
|
|
|
pub struct UpdateJournalEntryContent {
|
|
|
|
pub content: String,
|
|
|
|
}
|
2025-03-24 20:23:52 -04:00
|
|
|
|
|
|
|
#[derive(Deserialize)]
|
|
|
|
pub struct UpdateJournalEntryContext {
|
|
|
|
pub context: JournalEntryContext,
|
|
|
|
}
|
2025-03-24 22:42:33 -04:00
|
|
|
|
|
|
|
#[derive(Deserialize)]
|
|
|
|
pub struct CreateReaction {
|
|
|
|
pub asset: usize,
|
|
|
|
pub asset_type: AssetType,
|
2025-03-24 22:49:15 -04:00
|
|
|
pub is_like: bool,
|
2025-03-24 22:42:33 -04:00
|
|
|
}
|