Skip to content

Commit

Permalink
feat(#391): Refactor curation responses
Browse files Browse the repository at this point in the history
  • Loading branch information
tholulomo committed Jun 7, 2023
1 parent 69bff6c commit 7dd6efe
Show file tree
Hide file tree
Showing 5 changed files with 72 additions and 37 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ export default {
await this.createSample()
} catch (error) {
this.$store.commit('setSnackbar', {
message: error?.message ?? error
message: error ?? error
})
}
},
Expand Down Expand Up @@ -182,16 +182,23 @@ export default {
}
})

if (!!response?.ok) {
const result = await response.json()
if (response?.ok) {
this.uploadedFiles = result
this.spreadsheetFiles.forEach((file, index) => this.modStatSpreadsheet(index, 'complete'))
this.suppFiles.forEach((file, index) => this.modStatSupp(index, 'complete'))
this.uploadInProgress = false
this.$router.push({ name: 'DatasetSingleView', params: { id: `${this.datasetId}` } })
return this.$router.push({ name: 'DatasetSingleView', params: { id: `${this.datasetId}` } })
// Todo: @Anya use the response here
return this.toggleDialogBox()
// return this.toggleDialogBox()
}
throw new Error(`Error: ${response?.statusText}` ?? 'An error occurred')

const responseMessage = result.message ?? Object.entries(result?.errors).reduce((str, [key, value], index) => {
return index === 0 ? `${str}${key} ${value}` : `${str}, ${key} ${value}`;
}, '');

const message = responseMessage ?? response?.statusText
throw new Error(message)
},
changeSelectedDataset (selection) {
this.selectedDataset.label = selection.title || `${selection.datasetGroupId} (Untitled)`
Expand Down
14 changes: 10 additions & 4 deletions resfulservice/src/controllers/curationController.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ const util = require('util');
const XlsxFileManager = require('../utils/curation-utility');
const BaseSchemaObject = require('../../config/xlsx.json');
const { errorWriter } = require('../utils/logWriter');
const { BaseObjectSubstitutionMap } = require('../../config/constant');
const { BaseObjectSubstitutionMap, CurationEntityStateDefault } = require('../../config/constant');
const CuratedSamples = require('../models/curatedSamples');
const XlsxCurationList = require('../models/xlsxCurationList');
const XmlData = require('../models/xmlData');
Expand Down Expand Up @@ -51,14 +51,20 @@ exports.curateXlsxSpreadsheet = async (req, res, next) => {
if (curatedAlready) return next(errorWriter(req, 'This had been curated already', 'curateXlsxSpreadsheet', 409));

const newCurationObject = new CuratedSamples({ object: result, user: user?._id, dataset: datasets._id });
const curatedObject = await newCurationObject.save();
const curatedObject = await (await newCurationObject.save()).populate('user', 'displayName');

await datasets.updateOne({ $push: { samples: curatedObject } });

let xml = XlsxFileManager.xmlGenerator(JSON.stringify({ PolymerNanocomposite: curatedObject.object }));
xml = `<?xml version="1.0" encoding="utf-8"?>\n ${xml}`;
res.header('Content-Type', 'application/xml');
return res.status(201).send(xml);

return res.status(201).json({
xml,
user: curatedObject.user,
groupId: curatedObject.dataset,
isApproved: curatedObject.entityState !== CurationEntityStateDefault,
status: curatedObject.curationState
});
} catch (err) {
next(errorWriter(req, err, 'curateXlsxSpreadsheet', 500));
}
Expand Down
4 changes: 3 additions & 1 deletion resfulservice/src/graphql/resolver/dataset/mutation.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,12 @@ const { datasetTransformer, filesetsTransform } = require('../../transformer');
const datasetMutation = {
createDatasetId: async (_, _input, { user, req, isAuthenticated }) => {
req.logger.info('createDatasetId Function Entry');

if (!isAuthenticated) {
req.logger?.error('[createDatasetId]: User unauthorized');
return errorFormater('Unauthorized', 401);
}

try {
const { _id, displayName } = user;
const unusedDatasetId = await DatasetId.findOne({ user: _id, samples: [] });
Expand All @@ -20,7 +22,7 @@ const datasetMutation = {
return errorFormater(err.message, 409);
}

const datasetId = new Dataset({ user: _id });
const datasetId = new DatasetId({ user: _id });
const savedDataset = await datasetId.save();

return datasetTransformer(savedDataset, { _id, displayName });
Expand Down
51 changes: 40 additions & 11 deletions resfulservice/src/graphql/resolver/dataset/type.graphql
Original file line number Diff line number Diff line change
@@ -1,24 +1,53 @@
type Datasets {
"Unique id assigned to a user dataset grouping"
"""
Unique id assigned to a user dataset grouping
"""
datasetGroupId: ID
"Verified user information"
user: VerifiedUser @deprecated(reason: "No longer supported!")
"Dataset workflow status"

"""
Verified user information
"""
user: VerifiedUser

"""
Dataset workflow status
"""
status: STATUS
"Dataset title at curation"

"""
Dataset title at curation
"""
title: String
"Filesets groupings with similar fileset name"
filesetInfo: [Fileset]
"Time dataset was created"

"""
Filesets groupings with similar fileset name
"""
filesetInfo: [Fileset] @deprecated(reason: "No longer supported!")

"""
List of of curations belonging to this dataset grouping
"""
curatedDatasets: [String!]

"""
Time dataset was created
"""
createdAt: String
"Time dataset was last updated"

"""
Time dataset was last updated
"""
updatedAt: String
}

type VerifiedUser {
"User assigned id string e.g. 583dc006e74a1d205f4e1403"
"""
User assigned id string e.g. 583dc006e74a1d205f4e1403
"""
id: String!
"User display name"
"""
User display name
"""
username: String!
}

Expand Down
23 changes: 7 additions & 16 deletions resfulservice/src/graphql/transformer/datasets.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,33 +17,22 @@ exports.filesetsTransform = (filesets) => {
return transformedFilesets;
};

// Todo: (@tholulomo) Remove this lines of code after reliability test
// const filterDataset = (data) => {
// if (!data.filesets.length) {
// return null;
// }
// return [{
// datasetId: data._id ?? null, // Todo: (@tholulomo) deprecate this field
// datasets: this.filesetsTransform(data.filesets)
// }];
// };

exports.transformUser = ({ _id, displayName }) => {
return { id: _id, username: displayName };
};

// Todo: (@tholulomo) Remove third arg and refactor schema output
exports.datasetTransform = async (data, user = {}, userDataset = false) => {
let status;

if (!userDataset) {
data.isPublic ? status = 'APPROVED' : status = 'WORK_IN_PROGRESS';
return {
datasetGroupId: data?._id,
status,
filesetInfo: this.filesetsTransform(data.filesets),
createdAt: new Date(parseInt(data?.dttm_created) * 1000),
updatedAt: new Date(parseInt(data?.dttm_updated) * 1000)
filesetInfo: [],
user: this.transformUser(user),
curatedDatasets: data.samples,
createdAt: data.createdAt,
updatedAt: data.updatedAt
};
}

Expand All @@ -53,6 +42,8 @@ exports.datasetTransform = async (data, user = {}, userDataset = false) => {
title: item.title,
status: item.isPublic ? 'APPROVED' : 'WORK_IN_PROGRESS',
filesetInfo: this.filesetsTransform(item.filesets),
curatedDatasets: [],
user,
createdAt: new Date(parseInt(item?.dttm_created) * 1000),
updatedAt: new Date(parseInt(item?.dttm_updated) * 1000)
};
Expand Down

0 comments on commit 7dd6efe

Please sign in to comment.