Skip to content

Commit

Permalink
feat: add get admin api
Browse files Browse the repository at this point in the history
  • Loading branch information
zrll12 committed Aug 25, 2024
1 parent cfae3da commit 0bdfc89
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 1 deletion.
22 changes: 22 additions & 0 deletions src/controller/admin.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
use crate::controller::error::ErrorMessage;
use crate::model::generated::prelude::Admin;
use crate::service::admin::AdminTokenInfo;
use axum::extract::Query;
use sea_orm::EntityTrait;
use serde::Deserialize;
use tracing::info;

pub async fn get_admin_info(Query(query): Query<AdminInfoRequest>, AdminTokenInfo(admin): AdminTokenInfo) -> Result<String, ErrorMessage> {
info!("Admin {} is getting info of admin {}", admin.id, query.id);

let admin = Admin::find_by_id(query.id)
.one(&*crate::DATABASE).await.unwrap()
.ok_or(ErrorMessage::NotFound)?;

Ok(serde_json::to_string(&admin).unwrap())
}

#[derive(Deserialize)]
pub struct AdminInfoRequest {
pub id: i64,
}
3 changes: 3 additions & 0 deletions src/controller/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,19 @@ mod answer;
mod judge;
mod refresh;
mod ping;
mod admin;

use crate::controller::auth::{get_token, get_user};
use axum::routing::get;
use axum::Router;
use crate::controller::admin::get_admin_info;

pub fn all_routers() -> Router {
Router::new()
.route("/", get(ping::ping))
.route("/user", get(get_user).post(get_token))
.route("/refresh", get(refresh::refresh_cache))
.route("/admin", get(get_admin_info))
.nest("/oauth", oauth::get_oauth_routers())
.nest("/question", question::get_question_routers())
.nest("/survey", survey::get_survey_routes())
Expand Down
3 changes: 2 additions & 1 deletion src/model/generated/admin.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
//! `SeaORM` Entity. Generated by sea-orm-codegen 0.12.15

use sea_orm::entity::prelude::*;
use serde::Serialize;

#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
#[derive(Serialize, Clone, Debug, PartialEq, DeriveEntityModel, Eq)]
#[sea_orm(table_name = "admin")]
pub struct Model {
#[sea_orm(primary_key, auto_increment = false)]
Expand Down

0 comments on commit 0bdfc89

Please sign in to comment.