Skip to content

Commit

Permalink
feat(consumers/validators): Add module entry file
Browse files Browse the repository at this point in the history
  • Loading branch information
shivam-tripathi committed Jul 4, 2018
1 parent 2c99275 commit 68b8a61
Showing 1 changed file with 65 additions and 15 deletions.
80 changes: 65 additions & 15 deletions src/consumer/validators/index.js
Expand Up @@ -17,39 +17,89 @@
*/


import _ from 'lodash';
import {sortName} from '../../helpers/utils';
import {validateCreator} from './creator';
import {validateEdition} from './edition';
import {validatePublication} from './publication';
import {validatePublisher} from './publisher';
import {validateWork} from './work';


function creator(record) {
return true;
function getAliasSection(record) {
const aliasSection = {};
let index = 0;
if (record.alias) {
record.alias.forEach(element => {
if (!element.primary) {
aliasSection[`n${index++}`] = element;
}
});
}

return aliasSection;
}

function edition(record) {
return true;
function getPrimaryAlias(aliasList) {
let primaryAlias = null;
if (aliasList && _.isArray(aliasList)) {
for (let i in aliasList) {
if (aliasList[i].primary) {
primaryAlias = aliasList[i];
break;
}
}
}

return primaryAlias;
}

function publication(record) {
return true;
function getIdentifierSection(record) {
const identifierSection = {};
let index = 0;
if (record.identifiers) {
record.identifiers.forEach(element => {
identifierSection[`n${index++}`] = element;
});
}

return identifierSection;
}

function getNameSection(record) {
const primaryAlias = getPrimaryAlias(record.alias);

const nameSection = {
disambiguation: record.disambiguation,
language: primaryAlias.language,
name: primaryAlias.name,
sortName: sortName(primaryAlias.name)
};

return nameSection;
}

function publisher(record) {
return true;
function getValidationObject(record) {
return {
aliasSection: getAliasSection(record),
identifierSection: getIdentifierSection(record),
nameSection: getNameSection(record)
};
}

function work(record) {
return true;
function validateEntity(validationFunction) {
return function validate(record) {
const validationObject = getValidationObject(record);
return validationFunction(validationObject);
};
}

const validate = {
creator,
edition,
publication,
publisher,
work
creator: validateEntity(validateCreator),
edition: validateEntity(validateEdition),
publication: validateEntity(validatePublication),
publisher: validatePublisher(validatePublisher),
work: validateEntity(validateWork)
};

export default validate;

0 comments on commit 68b8a61

Please sign in to comment.