diff --git a/src/db.rs b/src/db.rs index 83ae2fa..4f5b5cf 100644 --- a/src/db.rs +++ b/src/db.rs @@ -19,7 +19,7 @@ pub struct Authorize { #[derive(Debug, WeldsModel)] pub struct Projects { - pub project: String, + pub project: String, } /// 包装类,内部持有 SQLite 连接 @@ -152,14 +152,14 @@ impl Db { token: &str, state: i8, ) -> Result> { - let rows = Authorize::all() + let mut rows = Authorize::all() .where_col(|a| a.token.equal(token)) .run(&self.client) .await?; if rows.is_empty() { return Ok(false); } - for mut row in rows { + for row in &mut rows { row.disable = state; row.save(&self.client).await?; } @@ -202,10 +202,18 @@ impl Db { // 用Projects结构体来收集查询到的结果 let result: Vec = rows.collect_into()?; - let mut projects:Vec = Vec::new(); - for row in result { - projects.push(row.project); - } - Ok(projects) + Ok(result.into_iter().map(|r| r.project).collect()) + } + + pub async fn query_project_token( + &self, + project: &str, + ) -> Result, Box> { + let rows = Authorize::all() + .where_col(|a| a.project.equal(project)) + .run(&self.client) + .await?; + + Ok(rows.into_iter().map(|r| r.into_inner()).collect()) } } diff --git a/src/main.rs b/src/main.rs index 9d1d406..0722e03 100644 --- a/src/main.rs +++ b/src/main.rs @@ -36,6 +36,7 @@ async fn main() -> Result<(), Box> { .route("/reset", get(update_token_status)) .route("/renewal", get(renewal_token)) .route("/project", get(get_projects)) + .route("/all", get(get_project_token)) .with_state(state); let listener = tokio::net::TcpListener::bind("0.0.0.0:3009").await?; @@ -230,6 +231,21 @@ async fn get_projects( ) } +async fn get_project_token( + State(state): State, + Query(args): Query, +) -> (StatusCode, Json) { + let items = state.db.query_project_token(&args.project).await.unwrap(); + + ( + StatusCode::OK, + Json(ProjectToken { + code: 200, + data: items, + }), + ) +} + fn get_current_datetime() -> String { Local::now().format("%Y-%m-%d %H:%M:%S").to_string() } @@ -284,6 +300,11 @@ struct RenewalToken { days: i64, } +#[derive(Deserialize)] +struct QueryProject { + project: String, +} + #[derive(Serialize)] struct VerifyResult { code: i16, @@ -334,3 +355,9 @@ struct ProjectResponse { code: i32, projects: Vec, } + +#[derive(Serialize)] +struct ProjectToken { + code: i32, + data: Vec, +}