Skip to content

Commit

Permalink
Splitting out dataset functionality from dataset config functionality
Browse files Browse the repository at this point in the history
  • Loading branch information
galvana committed Feb 8, 2025
1 parent 49d3053 commit e930fb8
Show file tree
Hide file tree
Showing 15 changed files with 593 additions and 407 deletions.
5 changes: 5 additions & 0 deletions src/fides/api/api/deps.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
from fides.config import CONFIG, FidesConfig
from fides.config import get_config as get_app_config
from fides.config.config_proxy import ConfigProxy
from fides.service.dataset.dataset_config_service import DatasetConfigService
from fides.service.dataset.dataset_service import DatasetService
from fides.service.messaging.messaging_service import MessagingService
from fides.service.privacy_request.privacy_request_service import PrivacyRequestService
Expand Down Expand Up @@ -89,3 +90,7 @@ def get_privacy_request_service(

def get_dataset_service(db: Session = Depends(get_db)) -> DatasetService:
return DatasetService(db)


def get_dataset_config_service(db: Session = Depends(get_db)) -> DatasetConfigService:
return DatasetConfigService(db)
4 changes: 2 additions & 2 deletions src/fides/api/api/v1/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
connection_endpoints,
connection_type_endpoints,
consent_request_endpoints,
dataset_endpoints,
dataset_config_endpoints,
drp_endpoints,
encryption_endpoints,
identity_verification_endpoints,
Expand All @@ -28,7 +28,7 @@
api_router.include_router(connection_type_endpoints.router)
api_router.include_router(connection_endpoints.router)
api_router.include_router(consent_request_endpoints.router)
api_router.include_router(dataset_endpoints.router)
api_router.include_router(dataset_config_endpoints.router)
api_router.include_router(drp_endpoints.router)
api_router.include_router(encryption_endpoints.router)
api_router.include_router(masking_endpoints.router)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
from fastapi import Depends, HTTPException, Request
from fastapi.encoders import jsonable_encoder
from fastapi.params import Security
from fastapi.responses import JSONResponse
from fastapi_pagination import Page, Params
from fastapi_pagination.bases import AbstractPage
from fastapi_pagination.ext.sqlalchemy import paginate
Expand Down Expand Up @@ -55,17 +54,16 @@
DATASET_REACHABILITY,
DATASET_VALIDATE,
DATASETS,
DATASETS_CLEAN,
TEST_DATASET,
V1_URL_PREFIX,
YAML_DATASETS,
)
from fides.config import CONFIG
from fides.service.dataset.dataset_service import (
DatasetNotFoundException,
DatasetService,
from fides.service.dataset.dataset_config_service import (
DatasetConfigService,
get_identities_and_references,
)
from fides.service.dataset.dataset_service import DatasetNotFoundException

from fides.api.models.sql_models import ( # type: ignore[attr-defined] # isort: skip
Dataset as CtlDataset,
Expand Down Expand Up @@ -98,7 +96,9 @@ def _get_connection_config(
)
def validate_dataset(
dataset: FideslangDataset,
dataset_service: DatasetService = Depends(deps.get_dataset_service),
dataset_config_service: DatasetConfigService = Depends(
deps.get_dataset_config_service
),
connection_config: ConnectionConfig = Depends(_get_connection_config),
) -> ValidateDatasetResponse:
"""
Expand All @@ -118,7 +118,9 @@ def validate_dataset(
"""

try:
return dataset_service.validate_dataset(connection_config, dataset)
return dataset_config_service.validate_dataset_config(
connection_config, dataset
)
except PydanticValidationError as e:
raise HTTPException(
status_code=HTTP_422_UNPROCESSABLE_ENTITY,
Expand All @@ -135,7 +137,9 @@ def validate_dataset(
def put_dataset_configs(
dataset_pairs: Annotated[List[DatasetConfigCtlDataset], Field(max_length=50)], # type: ignore
db: Session = Depends(deps.get_db),
dataset_service: DatasetService = Depends(deps.get_dataset_service),
dataset_config_service: DatasetConfigService = Depends(
deps.get_dataset_config_service
),
connection_config: ConnectionConfig = Depends(_get_connection_config),
) -> BulkPutDataset:
"""
Expand Down Expand Up @@ -171,7 +175,9 @@ def put_dataset_configs(
db.commit()

# reuse the existing patch logic once we've removed the unused dataset configs
return patch_dataset_configs(dataset_pairs, dataset_service, connection_config)
return patch_dataset_configs(
dataset_pairs, dataset_config_service, connection_config
)


@router.patch(
Expand All @@ -182,7 +188,9 @@ def put_dataset_configs(
)
def patch_dataset_configs(
dataset_pairs: Annotated[List[DatasetConfigCtlDataset], Field(max_length=50)], # type: ignore
dataset_service: DatasetService = Depends(deps.get_dataset_service),
dataset_config_service: DatasetConfigService = Depends(
deps.get_dataset_config_service
),
connection_config: ConnectionConfig = Depends(_get_connection_config),
) -> BulkPutDataset:
"""
Expand All @@ -194,7 +202,7 @@ def patch_dataset_configs(
to the DatasetConfig.
"""
try:
return dataset_service.bulk_create_or_update_datasets(
return dataset_config_service.bulk_create_or_update_dataset_configs(
connection_config,
dataset_pairs,
)
Expand All @@ -218,7 +226,9 @@ def patch_dataset_configs(
)
def patch_datasets(
datasets: Annotated[List[FideslangDataset], Field(max_length=50)], # type: ignore
dataset_service: DatasetService = Depends(deps.get_dataset_service),
dataset_config_service: DatasetConfigService = Depends(
deps.get_dataset_config_service
),
connection_config: ConnectionConfig = Depends(_get_connection_config),
) -> BulkPutDataset:
"""
Expand All @@ -232,7 +242,7 @@ def patch_datasets(
"""

try:
return dataset_service.bulk_create_or_update_datasets(
return dataset_config_service.bulk_create_or_update_dataset_configs(
connection_config, datasets
)
except PydanticValidationError as e:
Expand All @@ -250,7 +260,9 @@ def patch_datasets(
)
async def patch_yaml_datasets(
request: Request,
dataset_service: DatasetService = Depends(deps.get_dataset_service),
dataset_config_service: DatasetConfigService = Depends(
deps.get_dataset_config_service
),
connection_config: ConnectionConfig = Depends(_get_connection_config),
) -> BulkPutDataset:
"""
Expand All @@ -274,7 +286,7 @@ async def patch_yaml_datasets(
for dataset_dict in yaml_request_body["dataset"]
]

return dataset_service.bulk_create_or_update_datasets(
return dataset_config_service.bulk_create_or_update_dataset_configs(
connection_config, datasets
)

Expand Down Expand Up @@ -497,29 +509,6 @@ def get_ctl_datasets(
return datasets


@router.get(
DATASETS_CLEAN,
dependencies=[Security(verify_oauth_client, scopes=[DATASET_READ])],
response_model=List[FideslangDataset],
deprecated=True,
)
def clean_datasets(
dataset_service: DatasetService = Depends(deps.get_dataset_service),
) -> JSONResponse:
"""
Clean up names of datasets and upsert them.
"""

succeeded, failed = dataset_service.clean_datasets()
return JSONResponse(
status_code=HTTP_200_OK,
content={
"succeeded": succeeded,
"failed": failed,
},
)


@router.get(
DATASET_INPUTS,
dependencies=[Security(verify_oauth_client, scopes=[DATASET_READ])],
Expand Down Expand Up @@ -561,7 +550,9 @@ def dataset_reachability(
*,
db: Session = Depends(deps.get_db),
connection_config: ConnectionConfig = Depends(_get_connection_config),
dataset_service: DatasetService = Depends(deps.get_dataset_service),
dataset_config_service: DatasetConfigService = Depends(
deps.get_dataset_config_service
),
dataset_key: FidesKey,
policy_key: Optional[FidesKey] = None,
) -> Dict[str, Any]:
Expand Down Expand Up @@ -592,7 +583,7 @@ def dataset_reachability(
detail=f'Policy with key "{policy_key}" not found',
)

reachable, details = dataset_service.get_dataset_reachability(
reachable, details = dataset_config_service.get_dataset_reachability(
dataset_config, access_policy
)
return {"reachable": reachable, "details": details}
Expand All @@ -607,7 +598,9 @@ def dataset_reachability(
def test_connection_datasets(
*,
db: Session = Depends(deps.get_db),
dataset_service: DatasetService = Depends(deps.get_dataset_service),
dataset_config_service: DatasetConfigService = Depends(
deps.get_dataset_config_service
),
connection_config: ConnectionConfig = Depends(_get_connection_config),
dataset_key: FidesKey,
test_request: DatasetTestRequest,
Expand Down Expand Up @@ -639,7 +632,7 @@ def test_connection_datasets(
detail=f'Policy with key "{test_request.policy_key}" not found',
)

privacy_request = dataset_service.run_test_access_request(
privacy_request = dataset_config_service.run_test_access_request(
access_policy,
dataset_config,
input_data=test_request.identities.data,
Expand Down
Loading

0 comments on commit e930fb8

Please sign in to comment.