Skip to content

yujikawa/alisql

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

68 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

alisql

test alisql at crates.io alisql at docs.rs

A tool for analyzing SQL files that use Jinja2 {{ ref() }} macros, extracting table dependencies and visualizing them as graphs.


Installation

cargo install alisql

Or download a pre-built binary for your platform from Releases.


CLI

deps — Show dependencies

# Text format (default)
alisql deps ./sql

# JSON format
alisql deps ./sql --format json

# Limit search depth (default: 5)
alisql deps ./sql --max-depth 3

Output (text):

[sample]
  <- db.users
  <- role
[sample2]
  <- db.sales
  <- db.sale_detail

Output (json):

[
  {
    "table": "sample",
    "depends_on": ["db.users", "role"]
  },
  {
    "table": "sample2",
    "depends_on": ["db.sales", "db.sale_detail"]
  }
]

graph — Generate a Mermaid diagram

# Default orientation (top-down: TD)
alisql graph ./sql

# Specify orientation (TB / TD / BT / RL / LR)
alisql graph ./sql --orientation lr

Output:

graph TD;
db.users --> sample;
role --> sample;
db.sales --> sample2;
db.sale_detail --> sample2;

Rendered as a Mermaid diagram:

graph TD;
db.users --> sample;
role --> sample;
db.sales --> sample2;
db.sale_detail --> sample2;
Loading

Using as a Rust library

# Cargo.toml
[dependencies]
alisql = "0.2"

Get dependencies

let tables = alisql::get_dependencies("./sql", 5);
for table in &tables {
    println!("{} depends on {:?}", table.table, table.depends_on);
}

Get a Mermaid diagram

let graph = alisql::get_mermaid("./sql", "TD", 5);
println!("{}", graph);

Writing SQL files

Reference dependent tables using {{ ref("table") }} or {{ ref("schema", "table") }}.

-- sql/orders.sql
select o.*, u.name
from {{ ref("db", "orders") }} as o
left join {{ ref("users") }} as u on o.user_id = u.id

Analyzing this file reveals that the orders table depends on db.orders and users.

About

This is library to analize SQL with jinja template.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages