class ForeignKey(BaseModel):
"""Represents a ForeignKey."""
foreign_key_columns: list[str]
parent_table: str
parent_columns: list[str]
foreign_key_option: list[str] | None = None
@field_validator("foreign_key_columns", mode="before")
def _validate_foreign_key_columns(cls, v):
return _process_column_input(v)
@field_validator("parent_columns", mode="before")
def _validate_parent_columns(cls, v):
return _process_column_input(v)
@field_validator("parent_table", mode="before")
def _validate_identifier(cls, v):
if len(v.split(".")) != 3:
raise ValueError("The 'parent_table' must be in the format 'catalog.schema.table'")
if "<env>" in v:
v = v.replace("<env>", os.environ["PROJECT_ENVIRONMENT"])
return v