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, +}