Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

## Fixes
- Column `description` fields are now correctly escaped in `generate_model_yaml` ([#142](https://github.com/dbt-labs/dbt-codegen/issues/142))
- Fix `generate_source` behavior of applying a lowercase function to all object names ([#112](https://github.com/dbt-labs/dbt-codegen/issues/112))

# dbt-codegen v0.11.0

Expand Down
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,15 @@ which you can then paste into a schema file.
the database to your source definition
- `include_schema` (optional, default=False): Whether you want to add
the schema to your source definition
- `case_sensitive_databases` (optional, default=False): Whether you want database names to be
in lowercase, or to match the case in the source table
- `case_sensitive_schemas` (optional, default=False): Whether you want schema names to be
in lowercase, or to match the case in the source table
- `case_sensitive_tables` (optional, default=False): Whether you want table names to be
in lowercase, or to match the case in the source table
- `case_sensitive_cols` (optional, default=False): Whether you want column names to be
in lowercase, or to match the case in the source table


### Outputting to a file

Expand Down
5 changes: 4 additions & 1 deletion integration_tests/dbt_project.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,10 @@ clean-targets:
seeds:
+schema: raw_data
+quote_columns: false

codegen_integration_tests:
data__Case_Sensitive:
+schema: Raw_Data_Case_Sensitive
quote_columns: true
vars:
my_table_reference: table_c

Expand Down
3 changes: 3 additions & 0 deletions integration_tests/seeds/data__Case_Sensitive.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Col_A,Col_B
1,a
2,b
6 changes: 5 additions & 1 deletion integration_tests/tests/test_generate_source_all_args.sql
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,11 @@
name=raw_schema,
table_names=None,
include_database=True,
include_schema=True
include_schema=True,
case_sensitive_databases=False,
case_sensitive_schemas=False,
case_sensitive_tables=False,
case_sensitive_cols=False
) %}


Expand Down
35 changes: 35 additions & 0 deletions integration_tests/tests/test_generate_source_case_sensitive.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@

{% set raw_schema = generate_schema_name('Raw_Data_Case_Sensitive') %}

-- test default args
{% set actual_source_yaml = codegen.generate_source(
schema_name=raw_schema,
database_name=target.database,
generate_columns=True,
name=raw_schema,
include_database=True,
include_schema=True,
case_sensitive_databases=True,
case_sensitive_schemas=True,
case_sensitive_tables=True,
case_sensitive_cols=True
) %}

{% set expected_source_yaml %}
version: 2

sources:
- name: codegen_integration_tests_postgres_raw_data_case_sensitive
database: circle_test
schema: codegen_integration_tests_postgres_Raw_Data_Case_Sensitive
tables:
- name: data__Case_Sensitive
columns:
- name: Col_A
data_type: integer
- name: Col_B
data_type: text
{% endset %}


{{ assert_equal (actual_source_yaml | trim, expected_source_yaml | trim) }}
14 changes: 7 additions & 7 deletions macros/generate_source.sql
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@

{% endmacro %}

{% macro generate_source(schema_name, database_name=target.database, generate_columns=False, include_descriptions=False, include_data_types=True, table_pattern='%', exclude='', name=schema_name, table_names=None, include_database=False, include_schema=False) %}
{{ return(adapter.dispatch('generate_source', 'codegen')(schema_name, database_name, generate_columns, include_descriptions, include_data_types, table_pattern, exclude, name, table_names, include_database, include_schema)) }}
{% macro generate_source(schema_name, database_name=target.database, generate_columns=False, include_descriptions=False, include_data_types=True, table_pattern='%', exclude='', name=schema_name, table_names=None, include_database=False, include_schema=False, case_sensitive_databases=False, case_sensitive_schemas=False, case_sensitive_tables=False, case_sensitive_cols=False) %}
{{ return(adapter.dispatch('generate_source', 'codegen')(schema_name, database_name, generate_columns, include_descriptions, include_data_types, table_pattern, exclude, name, table_names, include_database, include_schema, case_sensitive_databases, case_sensitive_schemas, case_sensitive_tables, case_sensitive_cols)) }}
{% endmacro %}

{% macro default__generate_source(schema_name, database_name, generate_columns, include_descriptions, include_data_types, table_pattern, exclude, name, table_names, include_database, include_schema) %}
{% macro default__generate_source(schema_name, database_name, generate_columns, include_descriptions, include_data_types, table_pattern, exclude, name, table_names, include_database, include_schema, case_sensitive_databases, case_sensitive_schemas, case_sensitive_tables, case_sensitive_cols) %}

{% set sources_yaml=[] %}
{% do sources_yaml.append('version: 2') %}
Expand All @@ -30,11 +30,11 @@
{% endif %}

{% if database_name != target.database or include_database %}
{% do sources_yaml.append(' database: ' ~ database_name | lower) %}
{% do sources_yaml.append(' database: ' ~ (database_name if case_sensitive_databases else database_name | lower)) %}
{% endif %}

{% if schema_name != name or include_schema %}
{% do sources_yaml.append(' schema: ' ~ schema_name | lower) %}
{% do sources_yaml.append(' schema: ' ~ (schema_name if case_sensitive_schemas else schema_name | lower)) %}
{% endif %}

{% do sources_yaml.append(' tables:') %}
Expand All @@ -46,7 +46,7 @@
{% endif %}

{% for table in tables %}
{% do sources_yaml.append(' - name: ' ~ table | lower ) %}
{% do sources_yaml.append(' - name: ' ~ (table if case_sensitive_tables else table | lower) ) %}
{% if include_descriptions %}
{% do sources_yaml.append(' description: ""' ) %}
{% endif %}
Expand All @@ -62,7 +62,7 @@
{% set columns=adapter.get_columns_in_relation(table_relation) %}

{% for column in columns %}
{% do sources_yaml.append(' - name: ' ~ column.name | lower ) %}
{% do sources_yaml.append(' - name: ' ~ (column.name if case_sensitive_cols else column.name | lower)) %}
{% if include_data_types %}
{% do sources_yaml.append(' data_type: ' ~ codegen.data_type_format_source(column)) %}
{% endif %}
Expand Down