53 lines
1.2 KiB
JavaScript
53 lines
1.2 KiB
JavaScript
|
const {
|
||
|
datacenter,
|
||
|
portal,
|
||
|
deploymentGroups,
|
||
|
services,
|
||
|
instances
|
||
|
} = require('./data.json');
|
||
|
|
||
|
const find = (query = {}) => item =>
|
||
|
Object.keys(query).every(key => item[key] === query[key]);
|
||
|
|
||
|
const cleanQuery = (q = {}) => JSON.parse(JSON.stringify(q));
|
||
|
|
||
|
const getServiceInstances = s =>
|
||
|
Object.assign({}, s, {
|
||
|
instances: instances.filter(find({ service: s.uuid })).map(s =>
|
||
|
Object.assign({}, s, {
|
||
|
slug: s.name
|
||
|
})
|
||
|
)
|
||
|
});
|
||
|
|
||
|
const getDeploymentGroupServices = dg =>
|
||
|
Object.assign({}, dg, {
|
||
|
services: services
|
||
|
.filter(find({ deploymentGroup: dg.uuid }))
|
||
|
.map(getServiceInstances)
|
||
|
});
|
||
|
|
||
|
const getDeploymentGroups = query =>
|
||
|
deploymentGroups
|
||
|
.filter(find(cleanQuery(query)))
|
||
|
.map(getDeploymentGroupServices);
|
||
|
|
||
|
const getPortal = () =>
|
||
|
Object.assign({}, portal, {
|
||
|
datacenter,
|
||
|
deploymentGroups: getDeploymentGroups()
|
||
|
});
|
||
|
|
||
|
const getServices = query =>
|
||
|
services.filter(find(query)).map(getDeploymentGroupServices);
|
||
|
|
||
|
module.exports = {
|
||
|
Query: {
|
||
|
portal: getPortal,
|
||
|
deploymentGroups: getDeploymentGroups,
|
||
|
deploymentGroup: query => getDeploymentGroups(query).shift(),
|
||
|
services: getServices,
|
||
|
service: query => getServices(query).shift()
|
||
|
}
|
||
|
};
|