From 8257c9e7e5aa22c8adcf129eb200193a68491f50 Mon Sep 17 00:00:00 2001 From: matresnan <1358168412@qq.com> Date: Wed, 20 Aug 2025 00:37:02 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=B8=BA=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E6=B7=BB=E5=8A=A0=E5=BC=82=E6=AD=A5=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E9=A1=B9=E7=9B=AE=E5=90=8D=E6=96=B9=E6=B3=95=E5=8F=8A?= =?UTF-8?q?=E5=AF=B9=E5=BA=94=E8=B7=AF=E7=94=B1=E5=A4=84=E7=90=86=E5=87=BD?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 为数据库模块添加获取所有项目名称的异步方法并实现初步查询逻辑。 - 新增获取所有项目名的路由及其处理函数以支持项目信息查询功能。 --- src/db.rs | 18 +++++++++++++++++- src/main.rs | 22 ++++++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/src/db.rs b/src/db.rs index 71137f0..28ec1b3 100644 --- a/src/db.rs +++ b/src/db.rs @@ -4,7 +4,6 @@ use std::{fs, path::Path}; use welds::{connections::sqlite::SqliteClient, prelude::*}; use crate::InsertArgs; - #[derive(WeldsModel, Clone, Serialize)] #[welds(table = "authorize")] pub struct Authorize { @@ -186,4 +185,21 @@ impl Db { None => Ok(None), } } + + pub async fn get_all_project( + &self, + ) -> Result, Box> { + let result = Authorize::select(|a| a.project) + .group_by(|a| a.project) + .run(&self.client) + .await?; + + let rows: Vec = result.collect_into()?; + let projects: Vec = Vec::new(); + for row in rows { + println!("{row:?}"); + } + + Ok(projects) + } } diff --git a/src/main.rs b/src/main.rs index dd8b0b2..72c16e6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -35,6 +35,7 @@ async fn main() -> Result<(), Box> { .route("/info", get(get_token_info)) .route("/reset", get(update_token_status)) .route("/renewal", get(renewal_token)) + .route("/project", get(get_projects)) .with_state(state); let listener = tokio::net::TcpListener::bind("0.0.0.0:3009").await.unwrap(); @@ -214,6 +215,21 @@ async fn renewal_token( } } +/// 获取所有的项目名 +async fn get_projects( + State(state): State, +) -> (StatusCode, Json) { + let projects = state.db.get_all_project().await.unwrap(); + + ( + StatusCode::OK, + Json(ProjectResponse { + code: 404, + projects: projects, + }), + ) +} + fn get_current_datetime() -> String { Local::now().format("%Y-%m-%d %H:%M:%S").to_string() } @@ -312,3 +328,9 @@ struct UpdateTokenStatus { token: String, enable: bool, } + +#[derive(Serialize)] +struct ProjectResponse { + code: i32, + projects: Vec, +}