aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/routers/account.rs38
1 files changed, 19 insertions, 19 deletions
diff --git a/src/routers/account.rs b/src/routers/account.rs
index bb1cde5..a6fce99 100644
--- a/src/routers/account.rs
+++ b/src/routers/account.rs
@@ -78,12 +78,11 @@ struct ChangeUsernameRequest {
78 78
79#[derive(Deserialize, ToSchema)] 79#[derive(Deserialize, ToSchema)]
80#[schema(description = "Change account name data")] 80#[schema(description = "Change account name data")]
81#[serde(rename_all = "snake_case")] 81struct ChangeNameRequest {
82enum ChangeNameRequest {
83 #[schema(examples("John", "Иван"))] 82 #[schema(examples("John", "Иван"))]
84 FirstName(String), 83 first_name: Option<String>,
85 #[schema(examples("Doe", "Иванов"))] 84 #[schema(examples("Doe", "Иванов"))]
86 LastName(String), 85 last_name: Option<String>,
87} 86}
88 87
89#[derive(Deserialize, ToSchema)] 88#[derive(Deserialize, ToSchema)]
@@ -98,6 +97,7 @@ struct DeleteUserRequest {
98 path = "/me", 97 path = "/me",
99 tag = ACCOUNT, 98 tag = ACCOUNT,
100 summary = "Get me", 99 summary = "Get me",
100 description = "Get your account information",
101 responses( 101 responses(
102 ( 102 (
103 status = 200, body = SuccessResponse<Account>, 103 status = 200, body = SuccessResponse<Account>,
@@ -116,6 +116,8 @@ async fn me(Auth(user): Auth) -> ApiResult<Account> {
116 path = "/register", 116 path = "/register",
117 tag = ACCOUNT, 117 tag = ACCOUNT,
118 summary = "Register", 118 summary = "Register",
119 description = "Register a new account",
120 request_body = RegisterRequest,
119 responses( 121 responses(
120 ( 122 (
121 status = 200, body = SuccessResponse<Account>, 123 status = 200, body = SuccessResponse<Account>,
@@ -123,7 +125,6 @@ async fn me(Auth(user): Auth) -> ApiResult<Account> {
123 ), 125 ),
124 GlobalResponses 126 GlobalResponses
125 ), 127 ),
126 request_body = RegisterRequest
127)] 128)]
128async fn register( 129async fn register(
129 State(state): State<AppState>, 130 State(state): State<AppState>,
@@ -161,6 +162,8 @@ async fn register(
161 path = "/login", 162 path = "/login",
162 tag = ACCOUNT, 163 tag = ACCOUNT,
163 summary = "Login", 164 summary = "Login",
165 description = "Get auth data",
166 request_body = LoginRequest,
164 responses( 167 responses(
165 ( 168 (
166 status = 200, body = SuccessResponse<Token>, 169 status = 200, body = SuccessResponse<Token>,
@@ -168,7 +171,6 @@ async fn register(
168 ), 171 ),
169 GlobalResponses 172 GlobalResponses
170 ), 173 ),
171 request_body = LoginRequest
172)] 174)]
173async fn login( 175async fn login(
174 State(state): State<AppState>, 176 State(state): State<AppState>,
@@ -204,6 +206,7 @@ async fn login(
204 path = "/change/password", 206 path = "/change/password",
205 tag = ACCOUNT, 207 tag = ACCOUNT,
206 summary = "Change password", 208 summary = "Change password",
209 description = "Change your account password",
207 request_body = ChangePasswordRequest, 210 request_body = ChangePasswordRequest,
208 responses( 211 responses(
209 ( 212 (
@@ -236,6 +239,7 @@ async fn change_password(
236 path = "/change/username", 239 path = "/change/username",
237 tag = ACCOUNT, 240 tag = ACCOUNT,
238 summary = "Change username", 241 summary = "Change username",
242 description = "Change your account username",
239 request_body = ChangeUsernameRequest, 243 request_body = ChangeUsernameRequest,
240 responses( 244 responses(
241 ( 245 (
@@ -276,6 +280,7 @@ async fn change_username(
276 path = "/change/name", 280 path = "/change/name",
277 tag = ACCOUNT, 281 tag = ACCOUNT,
278 summary = "Change name", 282 summary = "Change name",
283 description = "Change your account first or last name",
279 request_body = ChangeNameRequest, 284 request_body = ChangeNameRequest,
280 responses( 285 responses(
281 ( 286 (
@@ -292,22 +297,16 @@ async fn change_name(
292 ApiJson(req): ApiJson<ChangeNameRequest>, 297 ApiJson(req): ApiJson<ChangeNameRequest>,
293) -> ApiResult<Account> { 298) -> ApiResult<Account> {
294 let mut active_user = user.into_active_model(); 299 let mut active_user = user.into_active_model();
295 match req { 300
296 ChangeNameRequest::FirstName(new_first_name) => { 301 if let Some(first_name) = req.first_name {
297 active_user.first_name = Set(new_first_name); 302 active_user.first_name = Set(first_name);
298 } 303 }
299 ChangeNameRequest::LastName(new_last_name) => { 304 if let Some(last_name) = req.last_name {
300 active_user.first_name = Set(new_last_name); 305 active_user.last_name = Set(last_name);
301 }
302 } 306 }
303 307
304 let user = active_user.update(&state.db).await?; 308 let user = active_user.update(&state.db).await?;
305 Ok(SuccessResponse::ok(Account { 309 Ok(SuccessResponse::ok(user.into()))
306 id: user.id,
307 username: user.username,
308 first_name: user.first_name,
309 last_name: user.last_name,
310 }))
311} 310}
312 311
313#[utoipa::path( 312#[utoipa::path(
@@ -315,6 +314,7 @@ async fn change_name(
315 path = "/delete", 314 path = "/delete",
316 tag = ACCOUNT, 315 tag = ACCOUNT,
317 summary = "Delete", 316 summary = "Delete",
317 description = "Delete your account",
318 request_body = DeleteUserRequest, 318 request_body = DeleteUserRequest,
319 responses( 319 responses(
320 ( 320 (