14个版本
0.1.13 | 2022年11月18日 |
---|---|
0.1.12 | 2022年11月18日 |
0.1.10 | 2022年10月30日 |
#287 in 模板引擎
13KB
217 行
alisql
这是一个使用Jinja模板分析SQL的库。
示例
获取依赖项
首先,创建类似于Jinja的SQL。
-- src/sample_sqls/level1/sample.sql
select
u.*
, r.*
from {{ ref("db", "users") }} as u
left join {{ ref("role") }} as r on
u.id = r.user_id
-- src/sample_sqls/sample2.sql
select
u.*
, r.*
from {{ ref("db", "sales") }} as u
left join {{ ref("db", "sale_detail") }} as r on
u.id = r.sale_id
在主函数中使用别名lib。
use alias;
fn main() {
let d = alias::get_dependencies("src/sample_sqls")
}
结果是...
d = [
Table {
table: "sample",
sql: SQL {
path: "src/sample_sqls/level1/sample.sql",
query: "select \nu.*\n, r.* \nfrom {{ ref(\"db\", \"users\") }} as u\nleft join {{ ref(\"role\") }} as r on\nu.id = r.user_id",
},
depends_on: [
"db.users",
"role",
],
},
Table {
table: "sample2",
sql: SQL {
path: "src/sample_sqls/sample2.sql",
query: "select \nu.*\n, r.* \nfrom {{ ref(\"db\", \"sales\") }} as u\nleft join {{ ref(\"db\", \"sale_detail\") }} as r on\nu.id = r.sale_id",
},
depends_on: [
"db.sales",
"db.sale_detail",
],
},
]
获取mermaid图
use alisql;
fn main() {
let m = alisql::get_mermaid("src/sample_sqls", "TD");
println!("{}", m);
}
变量m是
graph TD;
db.users --> sample;
role --> sample;
db.sales --> sample2;
db.sale_detail --> sample2;
这将在下面的图中展示。
graph TD;
db.users --> sample;
role --> sample;
db.sales --> sample2;
db.sale_detail --> sample2;
依赖项
~3–12MB
~138K SLoC