diff --git a/backend/dataall/api/Objects/Environment/input_types.py b/backend/dataall/api/Objects/Environment/input_types.py index d615014ba..0b87eec63 100644 --- a/backend/dataall/api/Objects/Environment/input_types.py +++ b/backend/dataall/api/Objects/Environment/input_types.py @@ -98,6 +98,7 @@ class EnvironmentSortField(GraphQLEnumMapper): gql.Argument('term', gql.String), gql.Argument('page', gql.Integer), gql.Argument('pageSize', gql.Integer), + gql.Argument('uniqueDatasets', gql.Boolean) ], ) diff --git a/backend/dataall/db/api/environment.py b/backend/dataall/db/api/environment.py index 927d48e40..e41386024 100644 --- a/backend/dataall/db/api/environment.py +++ b/backend/dataall/db/api/environment.py @@ -940,6 +940,10 @@ def paginated_shared_with_environment_datasets( q = q.filter( or_(*[models.ShareObjectItem.itemType == t for t in itemTypes]) ) + + if data.get("uniqueDatasets", False): + q = q.distinct(models.ShareObject.datasetUri) + if data.get('term'): term = data.get('term') q = q.filter(models.ShareObjectItem.itemName.ilike('%' + term + '%')) diff --git a/frontend/src/views/Worksheets/WorksheetView.js b/frontend/src/views/Worksheets/WorksheetView.js index 7a200b0bb..52f1c6121 100644 --- a/frontend/src/views/Worksheets/WorksheetView.js +++ b/frontend/src/views/Worksheets/WorksheetView.js @@ -161,6 +161,7 @@ const WorksheetView = () => { page: 1, pageSize: 10000, term: '', + uniqueDatasets: true, itemTypes: 'DatasetTable' } })