diff --git a/src/components/ServiceContent.js b/src/components/ServiceContent.js
index 1a31300d8..de339778f 100644
--- a/src/components/ServiceContent.js
+++ b/src/components/ServiceContent.js
@@ -35,10 +35,7 @@ const ServiceContent = () => {
- p.datasets_v2).length}
- />
+ p.datasets).length} />
diff --git a/src/components/explorer/ExplorerSearchContent.js b/src/components/explorer/ExplorerSearchContent.js
index 89a534284..df76fb073 100644
--- a/src/components/explorer/ExplorerSearchContent.js
+++ b/src/components/explorer/ExplorerSearchContent.js
@@ -21,7 +21,7 @@ const ExplorerSearchContent = () => {
// url: `/data/explorer/projects/${project.identifier}`,
key: project.identifier,
text: project.title,
- children: project.datasets_v2.map((dataset) => ({
+ children: project.datasets.map((dataset) => ({
url: `/data/explorer/search/${dataset.identifier}`,
text: dataset.title,
})),
diff --git a/src/components/manager/DatasetTreeSelect.js b/src/components/manager/DatasetTreeSelect.js
index 179f15c43..4b61476e9 100644
--- a/src/components/manager/DatasetTreeSelect.js
+++ b/src/components/manager/DatasetTreeSelect.js
@@ -35,7 +35,7 @@ const DatasetTreeSelect = forwardRef(({ value, onChange, style, idFormat }, ref)
selectable: false,
key: p.identifier,
value: p.identifier,
- children: p.datasets_v2.map((d) => {
+ children: p.datasets.map((d) => {
const key = idFormat === ID_FORMAT_PROJECT_DATASET ? `${p.identifier}:${d.identifier}` : d.identifier;
return {
title: d.title,
diff --git a/src/components/manager/access/GrantForm.tsx b/src/components/manager/access/GrantForm.tsx
index 5574f9c7f..881d8b954 100644
--- a/src/components/manager/access/GrantForm.tsx
+++ b/src/components/manager/access/GrantForm.tsx
@@ -315,7 +315,7 @@ const ResourceInput = ({ value, onChange }: ResourceInputProps) => {
if (selectedProject) {
options.push(
- ...(selectedProject.datasets_v2 ?? []).map((d) => ({
+ ...(selectedProject.datasets ?? []).map((d) => ({
value: d.identifier,
label: d.title,
})),
diff --git a/src/components/manager/projects/Project.js b/src/components/manager/projects/Project.js
index 3ae645d77..37822163a 100644
--- a/src/components/manager/projects/Project.js
+++ b/src/components/manager/projects/Project.js
@@ -69,7 +69,7 @@ const Project = ({
(onCancelEdit || nop)();
}, [editingForm, onCancelEdit]);
- const datasets = value.datasets_v2 ?? [];
+ const datasets = value.datasets ?? [];
return (
<>
diff --git a/src/components/manager/projects/RoutedProject.js b/src/components/manager/projects/RoutedProject.js
index 0d2f83ff2..6fee9d971 100644
--- a/src/components/manager/projects/RoutedProject.js
+++ b/src/components/manager/projects/RoutedProject.js
@@ -40,7 +40,7 @@ const RoutedProject = () => {
// Derive from live Redux state so the form reflects post-save data
const datasetForEdit = selectedDataset
- ? (project?.datasets_v2?.find((d) => d.identifier === selectedDataset.identifier) ?? selectedDataset)
+ ? (project?.datasets?.find((d) => d.identifier === selectedDataset.identifier) ?? selectedDataset)
: selectedDataset;
useEffect(() => {
diff --git a/src/modules/datasets/actions.js b/src/modules/datasets/actions.js
index 9001ee383..c8c585a5b 100644
--- a/src/modules/datasets/actions.js
+++ b/src/modules/datasets/actions.js
@@ -10,16 +10,20 @@ export const INVALIDATE_DATASET_SUMMARIES = "INVALIDATE_DATASET_SUMMARIES";
export const FETCH_DATASET_RESOURCES = createNetworkActionTypes("FETCH_DATASET_RESOURCES");
-const fetchDatasetDataTypesSummary = networkAction((serviceInfo, datasetID) => ({
+const fetchDatasetDataTypesSummary = networkAction((serviceInfo, datasetID, datasetsPath) => ({
types: FETCH_DATASET_DATA_TYPES,
params: { serviceInfo, datasetID },
- url: `${serviceInfo.url}/datasets/${datasetID}/data-types`,
+ url: `${serviceInfo.url}/${datasetsPath}/${datasetID}/data-types`,
}));
export const fetchDatasetDataTypesIfPossible = (datasetID) => async (dispatch, getState) => {
if (getState().datasetDataTypes.itemsByID?.[datasetID]?.isFetching) return;
+ const metadataUrl = getState().services.metadataService?.url;
await Promise.all(
- getDataServices(getState()).map((serviceInfo) => dispatch(fetchDatasetDataTypesSummary(serviceInfo, datasetID))),
+ getDataServices(getState()).map((serviceInfo) => {
+ const datasetsPath = serviceInfo.url === metadataUrl ? "api/datasets" : "datasets";
+ return dispatch(fetchDatasetDataTypesSummary(serviceInfo, datasetID, datasetsPath));
+ }),
);
};
@@ -33,18 +37,22 @@ export const fetchDatasetsDataTypes = () => async (dispatch, getState) => {
dispatch(endFlow(FETCHING_DATASETS_DATA_TYPES));
};
-const fetchServiceDatasetSummary = networkAction((serviceInfo, datasetID) => ({
+const fetchServiceDatasetSummary = networkAction((serviceInfo, datasetID, datasetsPath) => ({
types: FETCH_SERVICE_DATASET_SUMMARY,
params: { serviceInfo, datasetID },
- url: `${serviceInfo.url}/datasets/${datasetID}/summary`,
+ url: `${serviceInfo.url}/${datasetsPath}/${datasetID}/summary`,
}));
export const fetchDatasetSummariesIfNeeded = (datasetID) => async (dispatch, getState) => {
const existingSummaryState = getState().datasetSummaries.itemsByID[datasetID] ?? {};
if (existingSummaryState.isFetching || (!existingSummaryState.isInvalid && existingSummaryState.hasAttempted)) return;
+ const metadataUrl = getState().services.metadataService?.url;
dispatch(beginFlow(FETCHING_DATASET_SUMMARIES, { datasetID }));
await Promise.all(
- getDataServices(getState()).map((serviceInfo) => dispatch(fetchServiceDatasetSummary(serviceInfo, datasetID))),
+ getDataServices(getState()).map((serviceInfo) => {
+ const datasetsPath = serviceInfo.url === metadataUrl ? "api/datasets" : "datasets";
+ return dispatch(fetchServiceDatasetSummary(serviceInfo, datasetID, datasetsPath));
+ }),
);
dispatch(endFlow(FETCHING_DATASET_SUMMARIES, { datasetID }));
};
@@ -54,7 +62,7 @@ export const invalidateDatasetSummaries = (datasetID) => ({ type: INVALIDATE_DAT
const fetchDatasetResources = networkAction((datasetID) => (_dispatch, getState) => ({
types: FETCH_DATASET_RESOURCES,
params: { datasetID },
- url: `${getState().services.metadataService.url}/datasets_v2/${datasetID}/resources`,
+ url: `${getState().services.metadataService.url}/api/datasets/${datasetID}/resources`,
err: "Error fetching dataset resources",
}));
export const fetchDatasetResourcesIfNecessary = (datasetID) => (dispatch, getState) => {
diff --git a/src/modules/metadata/actions.js b/src/modules/metadata/actions.js
index ec9788f63..07edc1b41 100644
--- a/src/modules/metadata/actions.js
+++ b/src/modules/metadata/actions.js
@@ -46,12 +46,12 @@ export const fetchDiscoverySchema = () => (dispatch, getState) => {
export const clearDatasetDataType = networkAction((datasetId, dataTypeID) => (_dispatch, getState) => {
const { service_base_url: serviceBaseUrl } = getState().serviceDataTypes.itemsByID[dataTypeID];
const metadataServiceUrl = getState().services.metadataService?.url ?? "";
- const datasetsSegment =
- metadataServiceUrl && serviceBaseUrl.startsWith(metadataServiceUrl) ? "datasets_v2" : "datasets";
+ const datasetsPath =
+ metadataServiceUrl && serviceBaseUrl.startsWith(metadataServiceUrl) ? "api/datasets" : "datasets";
// noinspection JSUnusedGlobalSymbols
return {
types: DELETE_DATASET_DATA_TYPE,
- url: `${serviceBaseUrl}${datasetsSegment}/${datasetId}/data-types/${dataTypeID}`,
+ url: `${serviceBaseUrl}${datasetsPath}/${datasetId}/data-types/${dataTypeID}`,
req: {
method: "DELETE",
},
@@ -149,7 +149,7 @@ export const deleteProjectIfPossible = (project) => async (dispatch, getState) =
// Remove data without destroying project/datasets first
try {
- await Promise.all(project.datasets_v2.map((ds) => dispatch(clearDatasetDataTypes(ds.identifier))));
+ await Promise.all(project.datasets.map((ds) => dispatch(clearDatasetDataTypes(ds.identifier))));
await dispatch(deleteProject(project));
} catch (err) {
console.error(err);
@@ -180,7 +180,7 @@ export const saveProjectIfPossible = networkAction((project) => (dispatch, getSt
export const addProjectDataset = networkAction((project, dataset, onSuccess = nop) => (_dispatch, getState) => ({
types: ADD_PROJECT_DATASET,
- url: `${getState().services.metadataService.url}/api/datasets_v2`,
+ url: `${getState().services.metadataService.url}/api/datasets`,
req: jsonRequest({ ...dataset, project: project.identifier }, "POST"),
err: `Error adding dataset to project '${project.title}'`, // TODO: More user-friendly error
// TODO: END ACTION?
@@ -192,7 +192,7 @@ export const addProjectDataset = networkAction((project, dataset, onSuccess = no
export const saveProjectDataset = networkAction((dataset, onSuccess = nop) => (_dispatch, getState) => ({
types: SAVE_PROJECT_DATASET,
- url: `${getState().services.metadataService.url}/api/datasets_v2/${dataset.identifier}`,
+ url: `${getState().services.metadataService.url}/api/datasets/${dataset.identifier}`,
// Filter out read-only props
// TODO: PATCH
req: jsonRequest(objectWithoutProps(dataset, ["identifier", "created", "updated"]), "PUT"),
@@ -206,7 +206,7 @@ export const saveProjectDataset = networkAction((dataset, onSuccess = nop) => (_
export const deleteProjectDataset = networkAction((project, dataset) => (_dispatch, getState) => ({
types: DELETE_PROJECT_DATASET,
params: { project, dataset },
- url: `${getState().services.metadataService.url}/api/datasets_v2/${dataset.identifier}`,
+ url: `${getState().services.metadataService.url}/api/datasets/${dataset.identifier}`,
req: { method: "DELETE" },
err: `Error deleting dataset '${dataset.title}'`,
}));
@@ -229,7 +229,7 @@ export const deleteProjectDatasetIfPossible = (project, dataset) => async (dispa
const addDatasetLinkedFieldSet = networkAction((dataset, linkedFieldSet, onSuccess) => (_dispatch, getState) => ({
types: ADD_DATASET_LINKED_FIELD_SET,
- url: `${getState().services.metadataService.url}/api/datasets_v2/${dataset.identifier}`,
+ url: `${getState().services.metadataService.url}/api/datasets/${dataset.identifier}`,
req: jsonRequest({ linked_field_sets: [...(dataset.linked_field_sets ?? []), linkedFieldSet] }, "PATCH"),
err: `Error adding linked field set '${linkedFieldSet.name}' to dataset '${dataset.title}'`,
onSuccess: async () => {
@@ -253,7 +253,7 @@ export const addDatasetLinkedFieldSetIfPossible =
const saveDatasetLinkedFieldSet = networkAction(
(dataset, index, linkedFieldSet, onSuccess) => (_dispatch, getState) => ({
types: SAVE_DATASET_LINKED_FIELD_SET,
- url: `${getState().services.metadataService.url}/api/datasets_v2/${dataset.identifier}`,
+ url: `${getState().services.metadataService.url}/api/datasets/${dataset.identifier}`,
req: jsonRequest(
{
linked_field_sets: dataset.linked_field_sets.map((l, i) => (i === index ? linkedFieldSet : l)),
@@ -284,7 +284,7 @@ export const saveDatasetLinkedFieldSetIfPossible =
const deleteDatasetLinkedFieldSet = networkAction(
(dataset, linkedFieldSet, linkedFieldSetIndex) => (_dispatch, getState) => ({
types: DELETE_DATASET_LINKED_FIELD_SET,
- url: `${getState().services.metadataService.url}/api/datasets_v2/${dataset.identifier}`,
+ url: `${getState().services.metadataService.url}/api/datasets/${dataset.identifier}`,
req: jsonRequest(
{
linked_field_sets: dataset.linked_field_sets.filter((_, i) => i !== linkedFieldSetIndex),
diff --git a/src/modules/metadata/reducers.ts b/src/modules/metadata/reducers.ts
index ac45e2ce7..2e94ba3b0 100644
--- a/src/modules/metadata/reducers.ts
+++ b/src/modules/metadata/reducers.ts
@@ -81,7 +81,7 @@ export const projects: Reducer = (
case FETCH_PROJECTS.RECEIVE: {
const projects = [...(action.data as Project[])].sort(projectSort);
const datasets: ProjectScopedDatasetModel[] = projects.flatMap((p: Project) =>
- (p.datasets_v2 ?? []).map((d: DatasetModel) => ({ ...d, project: p.identifier })),
+ (p.datasets ?? []).map((d: DatasetModel) => ({ ...d, project: p.identifier })),
);
return {
...state,
@@ -164,13 +164,13 @@ export const projects: Reducer = (
...state,
isAddingDataset: false,
items: state.items.map((p) =>
- p.identifier === projectID ? { ...p, datasets_v2: [...(p.datasets_v2 ?? []), newDataset] } : p,
+ p.identifier === projectID ? { ...p, datasets: [...(p.datasets ?? []), newDataset] } : p,
),
itemsByID: {
...state.itemsByID,
[projectID]: {
...(state.itemsByID[projectID] || {}),
- datasets_v2: [...(state.itemsByID[projectID]?.datasets_v2 ?? []), newDataset],
+ datasets: [...(state.itemsByID[projectID]?.datasets ?? []), newDataset],
},
},
datasets: [...state.datasets, newDataset],
@@ -195,15 +195,13 @@ export const projects: Reducer = (
return {
...state,
items: state.items.map((p) =>
- p.identifier === deletedProject.identifier
- ? { ...p, datasets_v2: (p.datasets_v2 ?? []).filter(deleteDataset) }
- : p,
+ p.identifier === deletedProject.identifier ? { ...p, datasets: (p.datasets ?? []).filter(deleteDataset) } : p,
),
itemsByID: {
...state.itemsByID,
[deletedProject.identifier]: {
...(state.itemsByID[deletedProject.identifier] || {}),
- datasets_v2: ((state.itemsByID[deletedProject.identifier] || {}).datasets_v2 ?? []).filter(deleteDataset),
+ datasets: ((state.itemsByID[deletedProject.identifier] || {}).datasets ?? []).filter(deleteDataset),
},
},
datasets: state.datasets.filter((d) => d.identifier !== deletedDataset.identifier),
@@ -232,15 +230,13 @@ export const projects: Reducer = (
return {
...state,
items: state.items.map((p) =>
- p.identifier === updatedDataset.project
- ? { ...p, datasets_v2: (p.datasets_v2 ?? []).map(replaceDataset) }
- : p,
+ p.identifier === updatedDataset.project ? { ...p, datasets: (p.datasets ?? []).map(replaceDataset) } : p,
),
itemsByID: {
...state.itemsByID,
[updatedDataset.project]: {
...(state.itemsByID[updatedDataset.project] || {}),
- datasets_v2: ((state.itemsByID[updatedDataset.project] || {}).datasets_v2 ?? []).map(replaceDataset),
+ datasets: ((state.itemsByID[updatedDataset.project] || {}).datasets ?? []).map(replaceDataset),
},
},
};
diff --git a/src/modules/metadata/types.ts b/src/modules/metadata/types.ts
index 4ebb024df..1e22710eb 100644
--- a/src/modules/metadata/types.ts
+++ b/src/modules/metadata/types.ts
@@ -18,7 +18,7 @@ export type Project = {
description: string;
project_schemas?: ProjectJSONSchema[];
- datasets_v2: DatasetModel[];
+ datasets: DatasetModel[];
created: string; // ISO timestamp string
updated: string; // ISO timestamp string