From 144d13a1e9ab9668de7c44b09415db675e90bace Mon Sep 17 00:00:00 2001 From: hz Date: Fri, 5 Dec 2025 18:24:50 +0800 Subject: [PATCH] =?UTF-8?q?feat(serv):=20=E5=88=9D=E5=A7=8B=E5=8C=96?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E8=BF=9E=E6=8E=A5=E5=B9=B6=E9=9B=86?= =?UTF-8?q?=E6=88=90SeaORM?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加 SeaORM 依赖并配置工作区共享 - 替换原有的 r2d2 数据库连接池实现 - 实现异步数据库初始化函数 init_database - 在主函数中初始化数据库并注入应用上下文 - 移除旧的 sqlite 模块和相关路由配置文件 - 更新日志模块引用并增强环境变量打印测试 - 新增运行时信息打印工具模块 progress_running_info - 调整模块结构,移除冗余的 router 模块定义 - 修正单元测试模块引用路径及内容适配新架构 --- packages/bill/Cargo.toml | 3 ++- packages/bill/src/http_request/bank_card.http | 4 +++ packages/bill/src/router/bank_card.rs | 3 ++- packages/hutils/Cargo.toml | 1 + packages/hutils/src/lib.rs | 1 + packages/hutils/src/running_info.rs | 9 +++++++ packages/serv/Cargo.toml | 1 - packages/serv/src/main.rs | 7 ++++++ packages/serv/src/test/base_api.rs | 9 ++++--- packages/serv/src/test/identity_card.rs | 7 ++++++ packages/serv/src/test/main/mod.rs | 20 --------------- packages/serv/src/test/mod.rs | 2 +- packages/serv/src/utils/database.rs | 25 ++++++++++--------- packages/serv/src/utils/mod.rs | 1 - packages/serv/src/utils/router.rs | 7 ------ 15 files changed, 53 insertions(+), 47 deletions(-) create mode 100644 packages/bill/src/http_request/bank_card.http create mode 100644 packages/hutils/src/running_info.rs create mode 100644 packages/serv/src/test/identity_card.rs delete mode 100644 packages/serv/src/test/main/mod.rs delete mode 100644 packages/serv/src/utils/router.rs diff --git a/packages/bill/Cargo.toml b/packages/bill/Cargo.toml index 2d49c84..1e6c303 100644 --- a/packages/bill/Cargo.toml +++ b/packages/bill/Cargo.toml @@ -9,4 +9,5 @@ serde.workspace = true serde_json.workspace = true tokio.workspace = true hutils.workspace = true -log = "0.4.28" \ No newline at end of file +log.workspace = true +sea-orm.workspace = true \ No newline at end of file diff --git a/packages/bill/src/http_request/bank_card.http b/packages/bill/src/http_request/bank_card.http new file mode 100644 index 0000000..9c8b0c9 --- /dev/null +++ b/packages/bill/src/http_request/bank_card.http @@ -0,0 +1,4 @@ +### 获取银行卡列表 +GET http://localhost:8080/bank_card + +### \ No newline at end of file diff --git a/packages/bill/src/router/bank_card.rs b/packages/bill/src/router/bank_card.rs index 92dc7f6..239bb05 100644 --- a/packages/bill/src/router/bank_card.rs +++ b/packages/bill/src/router/bank_card.rs @@ -1,5 +1,6 @@ use actix_web::{delete, get, post, web}; use log::info; +use sea_orm::DatabaseConnection; pub fn bank_card_router_configure(cfg: &mut web::ServiceConfig) { cfg @@ -8,7 +9,7 @@ pub fn bank_card_router_configure(cfg: &mut web::ServiceConfig) { .service(delete_bank_card); } #[get("/bank-card")] -pub async fn get_bank_card() -> String { +pub async fn get_bank_card(db: web::Data) -> String { info!("this is get bank card"); String::from("Bill Get") } diff --git a/packages/hutils/Cargo.toml b/packages/hutils/Cargo.toml index 92669ac..39a536c 100644 --- a/packages/hutils/Cargo.toml +++ b/packages/hutils/Cargo.toml @@ -5,3 +5,4 @@ edition = "2024" [dependencies] env_logger = "0.11.8" +log = "0.4.29" diff --git a/packages/hutils/src/lib.rs b/packages/hutils/src/lib.rs index d991728..8ccc740 100644 --- a/packages/hutils/src/lib.rs +++ b/packages/hutils/src/lib.rs @@ -1 +1,2 @@ pub mod logger; +pub mod running_info; diff --git a/packages/hutils/src/running_info.rs b/packages/hutils/src/running_info.rs new file mode 100644 index 0000000..79c8921 --- /dev/null +++ b/packages/hutils/src/running_info.rs @@ -0,0 +1,9 @@ +use log::info; +use std::env; +/** + * 获取正在运行的进程信息 + * 前置条件 需要 初始化 logger + */ +pub fn progress_running_info() { + info!("当前项目工作路径为 {}", env::current_dir().unwrap().display()); +} diff --git a/packages/serv/Cargo.toml b/packages/serv/Cargo.toml index a657ab1..8f0c838 100644 --- a/packages/serv/Cargo.toml +++ b/packages/serv/Cargo.toml @@ -5,7 +5,6 @@ edition = "2024" [dependencies] tokio.workspace = true -gotify-ws.workspace = true log.workspace = true sea-orm.workspace = true regex.workspace = true diff --git a/packages/serv/src/main.rs b/packages/serv/src/main.rs index 7ca8b49..2a78ba6 100644 --- a/packages/serv/src/main.rs +++ b/packages/serv/src/main.rs @@ -1,15 +1,22 @@ mod handler; mod test; +mod utils; +use crate::utils::database::init_database; use actix_web::middleware::Logger; use actix_web::{App, HttpServer, main}; use hutils::logger::init_logger; +use hutils::running_info::progress_running_info; + #[main] async fn main() -> std::io::Result<()> { init_logger(); + progress_running_info(); + let db = init_database().await; HttpServer::new(move || { let app = App::new(); + let app = app.app_data(db.clone()); let app = app.configure(bill::router::router_register); let app = app.wrap(Logger::default()); app diff --git a/packages/serv/src/test/base_api.rs b/packages/serv/src/test/base_api.rs index 6083cd8..597f380 100644 --- a/packages/serv/src/test/base_api.rs +++ b/packages/serv/src/test/base_api.rs @@ -1,9 +1,12 @@ -use gotify_ws::utils::logger; +use hutils::logger::init_logger; use log::info; use std::env; #[test] fn test_base_api_env() { - logger::init_logger(); - info!(r"current dir is {:?}", env::vars()) + init_logger(); + for (key, value) in env::vars() { + info!("{:?} = {:?}", key, value); + } + // info!(r"current dir is {:?}", env::vars()) } diff --git a/packages/serv/src/test/identity_card.rs b/packages/serv/src/test/identity_card.rs new file mode 100644 index 0000000..5332b50 --- /dev/null +++ b/packages/serv/src/test/identity_card.rs @@ -0,0 +1,7 @@ +use sea_orm::{ActiveModelBehavior, DeriveEntityModel}; + +#[sea_orm::model] +#[derive(Debug, Clone, Copy, Eq, PartialEq, DeriveEntityModel)] +pub struct Model {} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/packages/serv/src/test/main/mod.rs b/packages/serv/src/test/main/mod.rs deleted file mode 100644 index a47e3eb..0000000 --- a/packages/serv/src/test/main/mod.rs +++ /dev/null @@ -1,20 +0,0 @@ -use crate::handler::test; -use actix_web::{App, HttpServer}; -#[tokio::test] -async fn run_application() { - println!("run application"); - - let serve = HttpServer::new(move || { - let app = App::new(); - let app = app.service(test::test); - - app - }); - - serve - .bind("127.0.0.1:8080") - .expect("端口绑定失败") - .run() - .await - .expect("服务启动失败"); -} diff --git a/packages/serv/src/test/mod.rs b/packages/serv/src/test/mod.rs index 8008738..3548e44 100644 --- a/packages/serv/src/test/mod.rs +++ b/packages/serv/src/test/mod.rs @@ -1,4 +1,4 @@ #[cfg(test)] mod base_api; mod id_card; -mod main; +mod identity_card; diff --git a/packages/serv/src/utils/database.rs b/packages/serv/src/utils/database.rs index 7006ce6..0a50d0f 100644 --- a/packages/serv/src/utils/database.rs +++ b/packages/serv/src/utils/database.rs @@ -1,14 +1,15 @@ -use actix_web::web; -use actix_web::web::Data; -use r2d2::{Pool, State}; -use r2d2_sqlite::SqliteConnectionManager; +use log::{info, warn}; +use sea_orm::{Database, DatabaseConnection, DbErr}; -pub struct SqliteState { - pool: Pool, -} - -pub fn init_database() -> Data { - let db = SqliteConnectionManager::file("./database.mod"); - let pool = Pool::new(db).unwrap(); - Data::new(SqliteState { pool: pool.clone() }) +pub async fn init_database() -> Result { + match Database::connect("sqlite:///home/hz/repo/hz/home-api/serv.sqlite?mode=rwc").await { + Ok(conn) => { + info!("数据库连接成功"); + Ok(conn) + } + Err(err) => { + warn!("数据库连接失败 {}", err); + Err(err) + } + } } diff --git a/packages/serv/src/utils/mod.rs b/packages/serv/src/utils/mod.rs index 47b292c..8fd0a6b 100644 --- a/packages/serv/src/utils/mod.rs +++ b/packages/serv/src/utils/mod.rs @@ -1,2 +1 @@ pub mod database; -pub mod router; diff --git a/packages/serv/src/utils/router.rs b/packages/serv/src/utils/router.rs deleted file mode 100644 index 7b098b6..0000000 --- a/packages/serv/src/utils/router.rs +++ /dev/null @@ -1,7 +0,0 @@ -use actix_web::web; - -use crate::handler::location; - -pub fn location(cfg: &mut web::ServiceConfig) { - cfg.service(web::scope("/location").service(location::location)); -}