UNPKG

@natlibfi/melinda-record-match-validator

Version:

Validates if two records matched by melinda-record-matching can be merged and sets merge priority

37 lines (30 loc) 1.96 kB
import createDebugLogger from 'debug'; import {isValidValue} from './validateUtils'; const debug = createDebugLogger('@natlibfi/melinda-record-match-validator:validateRecordCompareResults:validatePriority'); export function validatePriority(comparedRecordValues) { const wantedValues = ['A', 'B']; const prioOrder = [ {name: 'recordCompletionLevel', value: isValidValue(comparedRecordValues['000'].recordCompletionLevel, wantedValues)}, {name: 'isMelindaId', value: isValidValue(comparedRecordValues['001'].isMelindaId, wantedValues)}, {name: 'isViolaOrFikka', value: isValidValue(comparedRecordValues['042'], wantedValues)}, {name: 'commonIdentifiers', value: isValidValue(comparedRecordValues.commonIdentifiers.standardIdentifiers, wantedValues)}, {name: 'LOW', value: isValidValue(comparedRecordValues.LOW, wantedValues)}, {name: 'SID', value: isValidValue(comparedRecordValues.SID, wantedValues)}, {name: 'CAT', value: isValidValue(comparedRecordValues.CAT, wantedValues)}, {name: 'recordControlNumbers', value: isValidValue(comparedRecordValues['773'].recordControlNumbers, wantedValues)}, {name: 'contentTypes', value: isValidValue(comparedRecordValues['336'], wantedValues)}, {name: 'mediaTypes', value: isValidValue(comparedRecordValues['337'], wantedValues)}, {name: 'carrierTypes', value: isValidValue(comparedRecordValues['338'], wantedValues)}, {name: 'enumerationAndFirstPage', value: isValidValue(comparedRecordValues['773'].enumerationAndFirstPage, wantedValues)}, {name: 'relatedParts', value: isValidValue(comparedRecordValues['773'].relatedParts, wantedValues)}, {name: 'recentlyModified', value: isValidValue(comparedRecordValues['005'], wantedValues)}, {name: 'default', value: true} ].filter((field) => { if (field.value) { debug('Prio value: %o, index: %o', field.value, field.name); return true; } return false; }); return prioOrder[0]; }