Skip to content

Commit

Permalink
improve router_factory redability
Browse files Browse the repository at this point in the history
  • Loading branch information
Linker44 committed Nov 7, 2024
1 parent 1fcaa08 commit 488718b
Showing 1 changed file with 13 additions and 21 deletions.
34 changes: 13 additions & 21 deletions src/fides/api/api/v1/endpoints/router_factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,16 @@ async def validate_data_categories(
)


def validate_masking_strategy(dataset: Dataset) -> None:
try:
validate_masking_strategy_override(dataset)
except ValidationError as e:
raise HTTPException(
status_code=HTTP_422_UNPROCESSABLE_ENTITY,
detail=jsonable_encoder(e.message),
)


def generic_router_factory(fides_model: FidesModelType, model_type: str) -> APIRouter:
"""
Compose all of the individual route factories into a single coherent Router.
Expand Down Expand Up @@ -147,13 +157,7 @@ async def create(
sql_model = sql_model_map[model_type]
if isinstance(resource, Dataset):
await validate_data_categories(resource, db)
try:
validate_masking_strategy_override(resource)
except ValidationError as e:
raise HTTPException(
status_code=HTTP_422_UNPROCESSABLE_ENTITY,
detail=jsonable_encoder(e.message),
)
validate_masking_strategy(resource)
if isinstance(sql_model, ModelWithDefaultField) and resource.is_default:
raise errors.ForbiddenIsDefaultTaxonomyError(
model_type, resource.fides_key, action="create"
Expand Down Expand Up @@ -258,13 +262,7 @@ async def update(
sql_model = sql_model_map[model_type]
if isinstance(resource, Dataset):
await validate_data_categories(resource, db)
try:
validate_masking_strategy_override(resource)
except ValidationError as e:
raise HTTPException(
status_code=HTTP_422_UNPROCESSABLE_ENTITY,
detail=jsonable_encoder(e.message),
)
validate_masking_strategy(resource)
await forbid_if_editing_is_default(sql_model, resource.fides_key, resource, db)
return await update_resource(sql_model, resource.model_dump(mode="json"), db)

Expand Down Expand Up @@ -346,13 +344,7 @@ async def upsert(
for resource in resources:
if isinstance(resource, Dataset):
await validate_data_categories(resource, db)
try:
validate_masking_strategy_override(resource)
except ValidationError as e:
raise HTTPException(
status_code=HTTP_422_UNPROCESSABLE_ENTITY,
detail=jsonable_encoder(e.message),
)
validate_masking_strategy(resource)
await forbid_if_editing_any_is_default(sql_model, resource_dicts, db)
result = await upsert_resources(sql_model, resource_dicts, db)
response.status_code = (
Expand Down

0 comments on commit 488718b

Please sign in to comment.