Skip to main content

Crate pgbatis

Crate pgbatis 

Source
Expand description

§pgbatis — 轻量级异步 PostgreSQL CRUD 辅助库

基于 tokio-postgres + deadpool-postgres,通过派生宏 #[derive(PGCRUD)] 快速为结构体生成 CRUD 能力,并提供链式条件构造器(Wrapper)和可选逻辑删除支持。

§快速开始

use pgbatis::pgmacro::PGCRUD;
use serde::{Deserialize, Serialize};

#[derive(PGCRUD, Serialize, Deserialize, Clone, Debug, Default)]
pub struct User {
    pub id: Option<String>,
    pub name: Option<String>,
    pub age: Option<i32>,
}

// 1. 初始化连接(必须在任何数据库操作之前调用)
pgbatis::link("127.0.0.1", 5432, "user", "pass", "mydb", 10).await?;

// 2. 保存
let user = User { id: Some("1".into()), name: Some("Alice".into()), age: Some(30) };
pgbatis::save(&user, None, None).await?;

// 3. 条件查询
use pgbatis::Wrapper;
let wrapper = Wrapper::new().eq(&"name", &"Alice").set_pages(1, 10);
let page = pgbatis::fetch_page::<User>(wrapper, None, None).await?;

§核心概念

  • Parameters trait:实体必须实现的 trait,通常由 #[derive(PGCRUD)] 自动生成
  • Wrapper:链式 WHERE 条件、排序、分页构造器
  • 逻辑删除:默认启用,读操作自动过滤已删除数据,remove() 默认软删除

Re-exports§

pub use plugin::logic_delete::LogicDelete;
pub use plugin::logic_delete::LogicDeletePlugin;
pub use wrapper::Wrapper;
pub use pgmacro;
pub use tokio_postgres;

Modules§

plugin
unit
wrapper

Structs§

Client
An asynchronous PostgreSQL client.
NoTls
A MakeTlsConnect and TlsConnect implementation which simply returns an error.
PageHash
HashMap 形式的分页查询结果。
PageT
类型化分页查询结果。
Pgbatis
全局数据库连接管理器。
Row
A row of data returned from the database by a query.
TransactionBatchParam
事务批量操作的参数。

Constants§

LOG_SPACE
日志对齐空格常量,用于格式化 SQL 日志输出中的缩进。

Traits§

ColumnExt
列名提取 trait,用于将类型安全的列标识转换为 SQL 列名字符串。
Parameters
实体参数 trait —— 定义 CRUD 操作所需的元数据与 SQL 生成能力。
ToSql
A trait for types that can be converted into Postgres values.

Functions§

check_row_by_column
检查表中是否存在满足列值条件的记录。
check_row_wrap
检查表中是否存在满足 Wrapper 条件的记录。
execute
执行原生 SQL(INSERT / UPDATE / DELETE 等非查询语句)。
fetch
通过一个字段执行删除操作 单表查询,返回实体列表(不分页)。
fetch_one
单表查询单条数据。
fetch_page
单表分页查询。
fetch_with_recoder_field
单表查询,返回 Vec<HashMap<String, Value>>(不分页)。
format_like
为 LIKE 查询格式化字符串:左右各加 %
format_like_left
为 LIKE 查询格式化字符串:左侧加 %(后缀匹配)。
format_like_right
为 LIKE 查询格式化字符串:右侧加 %(前缀匹配)。
link
初始化 PostgreSQL 连接池。必须在任何数据库操作之前调用。
permanent_deletion
强制物理删除(DELETE FROM),忽略逻辑删除插件配置。
ping
数据库连接探活。
query
执行原生 SQL 查询,返回 Vec<HashMap<String, Value>>
query_one
执行原生 SQL 查询,返回单行 HashMap<String, Value>
query_page
执行原生 SQL 分页查询,返回 PageHash
query_t
执行原生 SQL 查询,返回类型化实体列表。
remove
删除操作。默认行为取决于逻辑删除插件配置:
save
保存实体到数据库(执行 INSERT 操作)。
set_unlogic_delete_table
将指定表加入逻辑删除排除名单。
transaction_batch
事务批量操作:在同一个事务中执行多条 SQL(可跨表)。
transaction_delete_and_save
事务操作:先按指定列值删除,再批量插入新数据。
update
执行 UPDATE 操作。