Thanks to visit codestin.com
Credit goes to docs.rs

Skip to main content

Crate alisql

Crate alisql 

Source
Expand description

§QuickStart

§Get dependencies from SQL written ref macro with Jinja.

First, create sql like Jinja.

-- 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

Use alias lib from main function.

use alisql;

let d = alisql::get_dependencies("src/sample_sqls", 5);
 dbg!(d);

§Result

 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",
        ],
    },
]

§Get dependencies graph from SQL with Mermaid.

orientation are

  • TB : top to bottom
  • TD : top-down/ same as top to bottom
  • BT : bottom to top
  • RL : right to left
  • LR : left to right
use alisql;

let m = alisql::get_mermaid("src/sample_sqls", "TD", 5);
println!("{}", m);
graph TD;
db.users --> sample;
role --> sample;
db.sales --> sample2;
db.sale_detail --> sample2;

§Reference

Modules§

sql_analyzer

Functions§

get_dependencies
get_mermaid