Source code for datamasque.client.models.ruleset
import enum
from typing import Any, NewType, Optional
from pydantic import BaseModel, ConfigDict, Field
from datamasque.client.models.status import ValidationStatus
RulesetId = NewType("RulesetId", str)
[docs]
def unwrap_ruleset_id(value: Any) -> Any:
"""
Coerce a `Ruleset` to its `id`; pass other values through unchanged.
Used by request-model validators that accept either a `RulesetId`
or a full `Ruleset` for user convenience.
Raises `ValueError` if the ruleset has no `id`
(i.e. the caller hasn't yet created it on the server).
"""
if isinstance(value, Ruleset):
if value.id is None:
raise ValueError("Ruleset has not been created yet (id is None)")
return value.id
return value
[docs]
class RulesetType(enum.Enum):
"""Ruleset type (database masking or file masking)."""
file = "file"
database = "database"
[docs]
class Ruleset(BaseModel):
"""Represents a ruleset."""
model_config = ConfigDict(extra="allow", populate_by_name=True)
name: str
yaml: str = Field(default="", alias="config_yaml")
ruleset_type: RulesetType = Field(default=RulesetType.database, alias="mask_type")
id: Optional[RulesetId] = None
is_valid: Optional[ValidationStatus] = None