db_utils

Crates.iodb_utils
lib.rsdb_utils
version0.1.5
sourcesrc
created_at2023-03-03 02:18:18.62737
updated_at2023-03-03 08:27:02.631791
description有关mysql的集成简化工具
homepage
repositoryhttps://github.com/cnYannuo/db_utils
max_upload_size
id799333
size41,259
(cnYannuo)

documentation

README

db_utils

主要是为mysql做的一些简化curd操作,集成了许多工具的功能

db的连接在对应配置里面

需要在项目路径下添加配置 application.toml

内容:

[profiles]
db = "test" // 使用哪个db文件配置 test为db_test.toml

static_resource = "./" // 静态文件路径  可忽略

limit = 100 // 默认分页数量 (没有用)可忽略

application.toml为第一层的配置文件

dev为生产环境文件,test为测试环境文件 里面集成了db连接方式 需要自己添加

内容为:

## 数据库测试分支

## mysql数据库
[mysql]
## mysql数据库地址
ip = "127.0.0.1"
## 数据库端口
port = 3306
## 数据库账号
username = "root"
## 数据库密码
password = "yannuo"
## 数据库库名
db_name = "test"

[redis]
## redis地址
ip = "127.0.0.1"
## 端口
port = 6379
## token超时时间
token_timeout = 86400
## 普通超时时间
timeout = 86400

最重要的是macro_builder中的过程宏,在quote!块里面修改或新增功能,并且在CommonDbImpl trait模块里面添加对应函数

例子:

   use macro_builder::CommonDbMacro;
   use serde_derive::{Serialize, Deserialize};

   #[derive(Debug, Serialize, Deserialize, CommonDbMacro)]
   pub struct User {
       pub id: u32,
       pub name: String,
       pub address: String,
       pub phone: u32
   }

   impl User {
       pub fn new(id: u32, name: String, address: String, phone: u32) -> Self {
           Self {id, name, address, phone,}
       }
   }

   pub trait DbImpl {
       fn get(table_name: &str) -> usize {
           let mut conn = db_tool::get_db_conn();
           conn.query_first(format!("select count(*) from {}", table_name)).unwrap().unwrap()
       }
   }

   impl DbImpl for User {

   }

   #[test]
   fn test() {
       // 获取表数据的数量
       let number = User::get_count("table");
       println!("number: {}", number);
       let number2 = User::get("table");
       println!("number2: {}", number2);
       // 获取表数据
       let user_list = User::batch_select("table", 1, 100);
       for item in user_list {
           println!("user: {:?}", item);
       }
       let user = User::new(1, "tester".to_owned(), "earth".to_owned(), 10086);
       // 插入
       user.insert("table");
       // 更新
       user.update("table");
       // 删除
       User::delete("table", 1);
   }
Commit count: 0

cargo fmt