Skip to content

Commit 41dbb82

Browse files
committed
🎯 feat: add template type args on SQLPlate object for filter jinja variables.
1 parent b9c02f3 commit 41dbb82

File tree

4 files changed

+25
-15
lines changed

4 files changed

+25
-15
lines changed

src/sqlplate/conf.py

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from typing import Any
99

1010

11-
class BaseConf:
11+
class Config:
1212
etl_columns: list[str] = [
1313
"load_src",
1414
"load_id",
@@ -27,10 +27,15 @@ class BaseConf:
2727
] + etl_columns
2828

2929
@classmethod
30-
def export(cls) -> dict[str, Any]:
31-
return {
32-
"etl_columns": cls.etl_columns,
33-
"scd1_soft_delete_columns": cls.scd1_soft_delete_columns,
34-
"scd2_columns": cls.scd2_columns,
35-
"only_main": False,
36-
}
30+
def export(cls, template_type: str | None = None) -> dict[str, Any]:
31+
template_type = template_type or 'NOT_SET'
32+
etl_vars: dict[str, Any] = {}
33+
if template_type == 'etl':
34+
etl_vars: dict[str, Any] = {
35+
"etl_columns": cls.etl_columns,
36+
"scd1_soft_delete_columns": cls.scd1_soft_delete_columns,
37+
"scd2_columns": cls.scd2_columns,
38+
"only_main": False,
39+
}
40+
41+
return {"only_main": False} | etl_vars

src/sqlplate/sqlplate.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
from jinja2 import Template
1212

13-
from .conf import BaseConf
13+
from .conf import Config
1414
from .exceptions import TemplateNotSet
1515
from .utils import get_env, remove_sql_comment
1616

@@ -30,6 +30,7 @@ def __init__(self, name: str, path: Path) -> None:
3030

3131
self.path: Path = path
3232
self._template_name: str | None = None
33+
self._template_type: str | None = None
3334
self._template: Template | None = None
3435
self._option: dict[str, Any] = {}
3536

@@ -48,6 +49,10 @@ def system(cls, name: str, path: Path | None = None) -> 'SQLPlate':
4849
def template(self, name: str) -> 'SQLPlate':
4950
"""Create template object attribute on this instance."""
5051
self._template_name: str = name
52+
53+
if '.' in name and name.count('.') == 1:
54+
self._template_type, _ = name.split('.', maxsplit=1)
55+
5156
self._template: Template = (
5257
get_env(self.path).get_template(f'{self.name}/{name}.sql')
5358
)
@@ -83,7 +88,7 @@ def load(self, remove_comment: bool = False, **kwargs) -> str:
8388
self._template.render(
8489
**(
8590
{"_system": self.name, "_template": self._template_name}
86-
| BaseConf.export()
91+
| Config.export(self._template_type)
8792
| self._option
8893
| kwargs
8994
)

templates/databricks/etl.scd1-soft-delete.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ THEN INSERT
6565
{{ all_columns | join(', ') }}
6666
)
6767
VALUES (
68-
{{ data_columns | map_fmt('source.{0}') | join(',\n\t\t') }},
68+
{{ data_columns | map_fmt('source.{0}') | join(',\n ') }},
6969
0,
7070
'{{ load_src }}',
7171
{{ load_id }},

tests/test_databricks.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -231,8 +231,8 @@ def test_sql_scd1_soft_delete(template_path):
231231
)
232232
VALUES (
233233
source.col01,
234-
source.col02,
235-
source.pk_col,
234+
source.col02,
235+
source.pk_col,
236236
0,
237237
'SOURCE_FOO',
238238
1,
@@ -295,8 +295,8 @@ def test_sql_scd1_soft_delete(template_path):
295295
)
296296
VALUES (
297297
source.col01,
298-
source.col02,
299-
source.pk_col,
298+
source.col02,
299+
source.pk_col,
300300
0,
301301
'SOURCE_FOO',
302302
1,

0 commit comments

Comments
 (0)