2 个版本
0.2.1 | 2023年4月2日 |
---|---|
0.2.0 | 2023年4月2日 |
1268 在 开发工具 中
每月下载量 25 次
22KB
369 行 代码
README
此包提供了一套函数,用于生成针对各种 PostgreSQL 模式对象的 SQL 语句,例如表、视图、物化视图、函数、触发器和索引。生成的 SQL 语句可用于模式反查、文档或迁移目的。
特性
该模块提供了一个 PgSchema
结构体,它接受一个命名空间(模式名称)作为输入,并公开了生成以下模式对象的 SQL 语句的方法
- 枚举
- 复合类型
- 表
- 视图
- 物化视图
- 函数
- 触发器
- 索引
用法
- 使用所需的命名空间(模式名称)创建
PgSchema
的实例。
rust
use your_module_name::PgSchema;
let schema = PgSchema::new("your_schema_name");
- 使用可用的方法生成所需模式对象的 SQL 语句。
rust
// Get the SQL statements for all enums in the schema
let enums_sql = schema.enums();
// Get the SQL statements for all composite types in the schema
let types_sql = schema.types();
// Get the SQL statements for all tables in the schema
let tables_sql = schema.tables();
// Get the SQL statements for all views in the schema
let views_sql = schema.views();
// Get the SQL statements for all materialized views in the schema
let mviews_sql = schema.mviews();
// Get the SQL statements for all functions in the schema
let functions_sql = schema.functions();
// Get the SQL statements for all triggers in the schema
let triggers_sql = schema.triggers();
// Get the SQL statements for all indexes in the schema
let indexes_sql = schema.indexes();
您还可以使用 get_*
方法生成所需模式对象的 SQL 语句。这些方法接受一个 PgPool
实例作为输入,并返回一个 Result<Vec<String>, sqlx::Error>
。
示例
以下是一个示例,说明如何检索给定命名空间(模式名称)中所有模式对象的 SQL 语句
rust
use your_module_name::PgSchema;
use sqlx::PgPool;
async fn generate_sql_statements_for_schema(pool: &PgPool) -> Result<(), sqlx::Error> {
let schema = PgSchema::new("your_schema_name");
let enums = schema.get_enums(pool).await?;
let types = schema.get_types(pool).await?;
let tables = schema.get_tables(pool).await?;
let views = schema.get_views(pool).await?;
let mviews = schema.get_mviews(pool).await?;
let functions = schema.get_functions(pool).await?;
let triggers = schema.get_triggers(pool).await?;
let indexes = schema.get_indexes(pool).await?;
println!("Enums: {:?}", enums);
println!("Types: {:?}", types);
println!("Tables: {:?}", tables);
println!("Views: {:?}", views);
println!("Materialized Views: {:?}", mviews);
println!("Functions: {:?}", functions);
println!("Triggers: {:?}", triggers);
println!("Indexes: {:?}", indexes);
Ok(())
}
测试
代码还包括测试以验证 PgSchema
结构体的功能。要运行测试,请执行以下命令
sh
cargo nextest run
依赖关系
~0–16MB
~220K SLoC