Skip to content

foreign_key

ForeignKey

Bases: BaseModel

Represents a ForeignKey.

Source code in src/cloe_nessy/models/foreign_key.py
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