138 lines
3.3 KiB
JavaScript
138 lines
3.3 KiB
JavaScript
module.exports = function(app) {
|
|
var express = require('express');
|
|
var strainsRouter = express.Router();
|
|
|
|
var STRAINS = [
|
|
{
|
|
id: 1,
|
|
species: 1,
|
|
strainName: "ABC",
|
|
typeStrain: true,
|
|
accessionNumbers: "Test Accession",
|
|
genbank: "Test Genbank",
|
|
wholeGenomeSequence: "Seq123",
|
|
isolatedFrom: "Location 1",
|
|
measurements: [1,2,3,4,5],
|
|
createdAt: "0001-01-01T00:00:00Z",
|
|
updatedAt: "0001-01-01T00:00:00Z",
|
|
deletedAt: null,
|
|
createdBy: 1,
|
|
updatedBy: 1,
|
|
deletedBy: null,
|
|
totalMeasurements: 5,
|
|
notes: "Test notes",
|
|
sortOrder: 1,
|
|
},
|
|
{
|
|
id: 2,
|
|
species: 1,
|
|
strainName: "XYZ",
|
|
typeStrain: false,
|
|
accessionNumbers: "Test Accession",
|
|
genbank: "Test Genbank",
|
|
wholeGenomeSequence: null,
|
|
isolatedFrom: "Location 2",
|
|
measurements: [6,7,8,9,10],
|
|
createdAt: "0001-01-01T00:00:00Z",
|
|
updatedAt: "0001-01-01T00:00:00Z",
|
|
deletedAt: null,
|
|
createdBy: 3,
|
|
updatedBy: 3,
|
|
deletedBy: null,
|
|
totalMeasurements: 5,
|
|
notes: "Test notes",
|
|
sortOrder: 2,
|
|
},
|
|
{
|
|
id: 3,
|
|
species: 2,
|
|
strainName: "QRS",
|
|
typeStrain: true,
|
|
accessionNumbers: "Test Accession",
|
|
genbank: "Test Genbank",
|
|
wholeGenomeSequence: "Seq123",
|
|
isolatedFrom: "Location 1",
|
|
measurements: [],
|
|
createdAt: "0001-01-01T00:00:00Z",
|
|
updatedAt: "0001-01-01T00:00:00Z",
|
|
deletedAt: null,
|
|
createdBy: 1,
|
|
updatedBy: 1,
|
|
deletedBy: null,
|
|
totalMeasurements: 0,
|
|
notes: "Test notes",
|
|
sortOrder: 3,
|
|
},
|
|
{
|
|
id: 4,
|
|
species: 3,
|
|
strainName: "LMN",
|
|
typeStrain: true,
|
|
accessionNumbers: "Test Accession",
|
|
genbank: "Test Genbank",
|
|
wholeGenomeSequence: "Seq123",
|
|
isolatedFrom: "Location 2",
|
|
measurements: [],
|
|
createdAt: "0001-01-01T00:00:00Z",
|
|
updatedAt: "0001-01-01T00:00:00Z",
|
|
deletedAt: null,
|
|
createdBy: 3,
|
|
updatedBy: 3,
|
|
deletedBy: null,
|
|
totalMeasurements: 0,
|
|
notes: "Test notes",
|
|
sortOrder: 4.
|
|
}
|
|
];
|
|
|
|
strainsRouter.get('/', function(req, res) {
|
|
var strains;
|
|
if (req.query.ids) {
|
|
strains = STRAINS.filter(function(s) {
|
|
return req.query.ids.indexOf(s.id.toString()) > -1;
|
|
});
|
|
} else {
|
|
strains = STRAINS;
|
|
}
|
|
res.send({
|
|
'strains': strains
|
|
});
|
|
});
|
|
|
|
strainsRouter.post('/', function(req, res) {
|
|
req.body.strain.id = Math.max.apply(Math, STRAINS.map(function(o){return o.id;})) + 1;
|
|
res.status(201).send(req.body);
|
|
});
|
|
|
|
strainsRouter.get('/:id', function(req, res) {
|
|
var strains = STRAINS.filter(function(s) {
|
|
return s.id == req.params.id;
|
|
});
|
|
res.send({
|
|
'strain': strains[0]
|
|
});
|
|
});
|
|
|
|
strainsRouter.put('/:id', function(req, res) {
|
|
var strains = STRAINS.filter(function(s) {
|
|
return s.id == req.params.id;
|
|
});
|
|
if (strains.length === 0) {
|
|
res.status(422).send({
|
|
'errors':{
|
|
"strainName": ["error1"],
|
|
"typeStrain": ["error2", "error3"],
|
|
"isolatedFrom": ["error4"]
|
|
}
|
|
}).end();
|
|
} else {
|
|
res.status(204).end();
|
|
}
|
|
});
|
|
|
|
strainsRouter.delete('/:id', function(req, res) {
|
|
res.status(204).end();
|
|
});
|
|
|
|
app.use('/api/hymenobacter/strains', strainsRouter);
|
|
};
|