def render()

in backfill/2023-09-26-initialize-clients_first_seen_v2/bigquery_etl_cli_query.py [0:0]


def render(name, sql_dir, output_dir):
    """Render a query Jinja template."""
    if name is None:
        name = "*.*"

    query_files = paths_matching_name_pattern(name, sql_dir, project_id=None)
    resolved_sql_dir = Path(sql_dir).resolve()
    for query_file in query_files:
        table_name = query_file.parent.name
        dataset_id = query_file.parent.parent.name
        project_id = query_file.parent.parent.parent.name

        jinja_params = {
            **{
                "project_id": project_id,
                "dataset_id": dataset_id,
                "table_name": table_name,
            },
        }

        rendered_sql = (
            render_template(
                query_file.name,
                template_folder=query_file.parent,
                templates_dir="",
                format=False,
                **jinja_params,
            )
            + "\n"
        )

        if not any(s in str(query_file) for s in skip_format()):
            rendered_sql = reformat(rendered_sql, trailing_newline=True)

        if output_dir:
            output_file = output_dir / query_file.resolve().relative_to(
                resolved_sql_dir
            )
            output_file.parent.mkdir(parents=True, exist_ok=True)
            output_file.write_text(rendered_sql)
        else:
            click.echo(query_file)
            click.echo(rendered_sql)