-
Notifications
You must be signed in to change notification settings - Fork 175
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
update to use new framework in dbt-core in alignment with adap-608
- Loading branch information
1 parent
1e534f7
commit 532951b
Showing
20 changed files
with
580 additions
and
746 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
from dataclasses import dataclass, field | ||
from typing import Optional, Type | ||
|
||
from dbt.adapters.base.relation import BaseRelation | ||
from dbt.utils import classproperty | ||
|
||
from dbt.adapters.snowflake.relation.models import ( | ||
SnowflakeIncludePolicy, | ||
SnowflakeQuotePolicy, | ||
SnowflakeRelationType, | ||
) | ||
|
||
|
||
@dataclass(frozen=True, eq=False, repr=False) | ||
class SnowflakeRelation(BaseRelation): | ||
# we need to overwrite the type annotation for `type` so that mashumaro reads the class correctly | ||
type: Optional[SnowflakeRelationType] = None # type: ignore | ||
|
||
include_policy: SnowflakeIncludePolicy = field( | ||
default_factory=lambda: SnowflakeIncludePolicy() | ||
) | ||
quote_policy: SnowflakeQuotePolicy = field(default_factory=lambda: SnowflakeQuotePolicy()) | ||
|
||
@property | ||
def is_dynamic_table(self) -> bool: | ||
return self.type == SnowflakeRelationType.DynamicTable | ||
|
||
@classproperty | ||
def DynamicTable(cls) -> str: | ||
return str(SnowflakeRelationType.DynamicTable) | ||
|
||
@classproperty | ||
def get_relation_type(cls) -> Type[SnowflakeRelationType]: | ||
return SnowflakeRelationType |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
from dbt.adapters.snowflake.relation.models.database import SnowflakeDatabaseRelation | ||
from dbt.adapters.snowflake.relation.models.dynamic_table import ( | ||
SnowflakeDynamicTableRelation, | ||
SnowflakeDynamicTableRelationChangeset, | ||
SnowflakeDynamicTableWarehouseRelationChange, | ||
) | ||
from dbt.adapters.snowflake.relation.models.policy import ( | ||
SnowflakeIncludePolicy, | ||
SnowflakeQuotePolicy, | ||
SnowflakeRelationType, | ||
SnowflakeRenderPolicy, | ||
) | ||
from dbt.adapters.snowflake.relation.models.schema import SnowflakeSchemaRelation | ||
from dbt.adapters.snowflake.relation.models.target_lag import ( | ||
SnowflakeDynamicTableTargetLagRelation, | ||
SnowflakeDynamicTableTargetLagRelationChange, | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
from dataclasses import dataclass | ||
from typing import Set | ||
|
||
from dbt.adapters.relation.models import DatabaseRelation | ||
from dbt.adapters.validation import ValidationMixin, ValidationRule | ||
from dbt.exceptions import DbtRuntimeError | ||
|
||
from dbt.adapters.snowflake.relation.models.policy import SnowflakeRenderPolicy | ||
|
||
|
||
@dataclass(frozen=True, eq=True, unsafe_hash=True) | ||
class SnowflakeDatabaseRelation(DatabaseRelation, ValidationMixin): | ||
""" | ||
This config follow the specs found here: | ||
https://docs.snowflake.com/en/sql-reference/sql/create-database | ||
The following parameters are configurable by dbt: | ||
- name: name of the database | ||
""" | ||
|
||
# attribution | ||
name: str | ||
|
||
# configuration | ||
render = SnowflakeRenderPolicy | ||
|
||
@property | ||
def fully_qualified_path(self) -> str: | ||
return self.name | ||
|
||
@property | ||
def validation_rules(self) -> Set[ValidationRule]: | ||
return { | ||
ValidationRule( | ||
validation_check=len(self.name or "") > 0, | ||
validation_error=DbtRuntimeError( | ||
f"dbt-snowflake requires a name for a database, received: {self.name}" | ||
), | ||
) | ||
} | ||
|
||
@classmethod | ||
def from_dict(cls, config_dict) -> "SnowflakeDatabaseRelation": | ||
database = super().from_dict(config_dict) | ||
assert isinstance(database, SnowflakeDatabaseRelation) | ||
return database |
Oops, something went wrong.