1use crate::database::Database;
3use crate::model::DatabaseError;
4use axum::routing::put;
5use databeam::prelude::DefaultReturn;
6
7use axum::response::IntoResponse;
8use axum::{
9 routing::{delete, get, post},
10 Json, Router,
11};
12
13pub mod general;
14pub mod ipbans;
15pub mod ipblocks;
16pub mod items;
17pub mod labels;
18pub mod me;
19pub mod notifications;
20pub mod profile;
21pub mod relationships;
22pub mod warnings;
23
24pub async fn not_found() -> impl IntoResponse {
25 Json(DefaultReturn::<u16> {
26 success: false,
27 message: DatabaseError::NotFound.to_string(),
28 payload: 404,
29 })
30}
31
32pub fn routes(database: Database) -> Router {
33 Router::new()
34 .route(
36 "/relationships/follow/{id}",
37 post(relationships::follow_request),
38 )
39 .route(
40 "/relationships/friend/{id}",
41 post(relationships::friend_request),
42 )
43 .route(
44 "/relationships/block/{id}",
45 post(relationships::block_request),
46 )
47 .route(
48 "/relationships/current/{id}",
49 delete(relationships::delete_request),
50 )
51 .route(
53 "/profile/{id}/tokens/generate",
54 post(profile::generate_token_request),
55 )
56 .route("/profile/{id}/tokens", post(profile::update_tokens_request))
57 .route("/profile/{id}/tier", post(profile::update_tier_request))
58 .route("/profile/{id}/group", post(profile::update_group_request))
59 .route("/profile/{id}/coins", post(profile::update_coins_request))
60 .route(
61 "/profile/{id}/password",
62 post(profile::update_password_request),
63 )
64 .route(
65 "/profile/{id}/username",
66 post(profile::update_username_request),
67 )
68 .route(
69 "/profile/{id}/metadata",
70 post(profile::update_metdata_request),
71 )
72 .route(
73 "/profile/{id}/metadata",
74 put(profile::patch_metdata_request),
75 )
76 .route("/profile/{id}/badges", post(profile::update_badges_request))
77 .route("/profile/{id}/labels", post(profile::update_labels_request))
78 .route("/profile/{id}/links", post(profile::update_links_request))
79 .route("/profile/{id}/layout", post(profile::update_layout_request))
80 .route("/profile/{id}/totp", post(profile::enable_totp_request))
81 .route("/profile/{id}/totp", delete(profile::disable_totp_request))
82 .route(
83 "/profile/{id}/totp_recovery_codes",
84 post(profile::refresh_totp_recovery_codes_request),
85 )
86 .route("/profile/{id}/banner", get(profile::banner_request))
87 .route("/profile/{id}/avatar", get(profile::avatar_request))
88 .route("/profile/{id}/custom.css", get(profile::css_request))
89 .route("/profile/{id}", delete(profile::delete_request))
90 .route("/profile/{id}", get(profile::get_request))
91 .route("/token/{token}", get(profile::get_from_token_request))
92 .route("/items", post(items::create_request))
94 .route("/item/{id}", get(items::get_request))
95 .route("/item/{id}", post(items::update_item_request))
96 .route("/item/{id}/buy", post(items::buy_request))
97 .route("/item/{id}/status", post(items::update_status_request))
98 .route(
99 "/item/{id}/content",
100 post(items::update_item_content_request),
101 )
102 .route("/item/{id}", delete(items::delete_request))
103 .route("/labels", post(labels::create_request))
105 .route("/label/{id}", get(labels::get_request))
106 .route("/label/{id}", delete(labels::delete_request))
107 .route("/notifications/{id}", delete(notifications::delete_request))
109 .route(
110 "/notifications/clear",
111 delete(notifications::delete_all_request),
112 )
113 .route("/warnings", post(warnings::create_request))
115 .route("/warnings/{id}", delete(warnings::delete_request))
116 .route("/ipbans", post(ipbans::create_request))
118 .route("/ipbans/{id}", delete(ipbans::delete_request))
119 .route("/ipblocks", post(ipblocks::create_request))
121 .route("/ipblocks/{id}", delete(ipblocks::delete_request))
122 .route("/me/tokens/generate", post(me::generate_token_request))
124 .route("/me/tokens", post(me::update_tokens_request))
125 .route("/me/delete", post(me::delete_request))
126 .route("/me/upload_avatar", post(me::upload_avatar_request))
127 .route("/me/upload_banner", post(me::upload_banner_request))
128 .route("/me", get(me::get_request))
129 .route("/switch", post(general::set_token_request))
131 .route("/register", post(general::create_request))
132 .route("/login", post(general::login_request))
133 .route("/callback", get(general::callback_request))
134 .route("/logout", post(general::logout_request))
135 .route("/untag", post(general::remove_tag))
136 .route("/render_layout", post(profile::render_layout_request))
138 .with_state(database)
139}