|
| 1 | +import logging |
| 2 | +from pathlib import Path |
1 | 3 | from typing import List, Tuple |
2 | 4 |
|
3 | 5 | from click import Command, Context |
4 | 6 |
|
5 | 7 | from dbterd import default |
6 | 8 | from dbterd.adapters.base import Executor |
7 | 9 | from dbterd.adapters.meta import Ref, Table |
| 10 | +from dbterd.helpers.log import logger |
| 11 | + |
| 12 | +logger.setLevel(logging.WARNING) # hide log |
8 | 13 |
|
9 | 14 |
|
10 | 15 | class DbtErd: |
11 | 16 | """ |
12 | 17 | dbt ERD official API functions. |
13 | 18 |
|
14 | 19 |
|
15 | | - Usage: |
| 20 | + **Usage**: |
16 | 21 |
|
17 | | - - Get a whole ERD: |
18 | | - ```python |
19 | | - from dbterd.api import DbtErd |
20 | | - erd = DbtErd().get_erd() |
21 | | - ``` |
| 22 | + ## Get a whole ERD |
22 | 23 |
|
23 | | - - Get a whole ERD given all models attached to `my_exposure_name`: |
24 | | - ```python |
25 | | - from dbterd.api import DbtErd |
26 | | - erd = DbtErd(select="exposure:my_exposure_name").get_erd() |
27 | | - ``` |
28 | | - See the |
29 | | - [Selection](https://dbterd.datnguyen.de/latest/nav/guide/cli-references.html#dbterd-run-select-s) |
30 | | - page for more details. |
| 24 | + ```python |
| 25 | + from dbterd.api import DbtErd |
| 26 | + erd = DbtErd().get_erd() |
| 27 | + ``` |
31 | 28 |
|
32 | | - - Get a model (named `model.jaffle_shop.my_model`)'s ERD: |
33 | | - ```python |
34 | | - from dbterd.api import DbtErd |
35 | | - erd = DbtErd().get_model_erd(s |
36 | | - node_fqn="model.jaffle_shop.my_model" |
37 | | - ) |
38 | | - ``` |
| 29 | + ## Get a whole ERD given all models attached to `my_exposure_name` |
| 30 | +
|
| 31 | + ```python |
| 32 | + from dbterd.api import DbtErd |
| 33 | + erd = DbtErd(select="exposure:my_exposure_name").get_erd() |
| 34 | + ``` |
| 35 | + See the |
| 36 | + [Selection](https://dbterd.datnguyen.de/latest/nav/guide/cli-references.html#dbterd-run-select-s) |
| 37 | + page for more details. |
| 38 | +
|
| 39 | + ## Get a model (named `model.jaffle_shop.my_model`)'s ERD |
| 40 | +
|
| 41 | + ```python |
| 42 | + from dbterd.api import DbtErd |
| 43 | + erd = DbtErd().get_model_erd(s |
| 44 | + node_fqn="model.jaffle_shop.my_model" |
| 45 | + ) |
| 46 | + ``` |
39 | 47 | """ |
40 | 48 |
|
41 | 49 | def __init__(self, **kwargs) -> None: |
42 | 50 | """Initialize the main Executor given similar input CLI parameters""" |
| 51 | + |
43 | 52 | self.params: dict = kwargs |
44 | 53 | """ |
45 | 54 | Mimic CLI params with overriding `api = True`.\n |
@@ -67,11 +76,13 @@ def __set_params_default_if_not_specified(self) -> None: |
67 | 76 | self.params["resource_type"] = self.params.get( |
68 | 77 | "resource_type", default.default_resource_types() |
69 | 78 | ) |
70 | | - self.params["algo"] = self.params.get("algo", default.deafult_algo()) |
| 79 | + self.params["algo"] = self.params.get("algo", default.default_algo()) |
71 | 80 | self.params["entity_name_format"] = self.params.get( |
72 | 81 | "entity_name_format", default.default_entity_name_format() |
73 | 82 | ) |
74 | 83 | self.params["omit_columns"] = self.params.get("omit_columns", False) |
| 84 | + self.params["artifacts_dir"] = self.params.get("artifacts_dir", Path.cwd()) |
| 85 | + self.params["target"] = self.params.get("target", default.default_target()) |
75 | 86 |
|
76 | 87 | def get_erd(self) -> Tuple[List[Table], List[Ref]]: |
77 | 88 | """Generate ERD code for a whole project |
|
0 commit comments