@natlibfi/melinda-record-match-validator
Version:
Validates if two records matched by melinda-record-matching can be merged and sets merge priority
32 lines (31 loc) • 2.04 kB
JavaScript
import createDebugLogger from "debug";
import { isValidValue } from "./validateUtils.js";
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];
}
//# sourceMappingURL=validatePriority.js.map