UNPKG

@typeheim/orm-on-fire

Version:
64 lines 2.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TextIndexGenerator = void 0; class TextIndexGenerator { buildMetadata(config, change) { if (!change.after.exists) { return null; } const document = change.after.data(); const oldDocument = change.before.data(); let indexFields = []; if (config.recalculateOnSave) { indexFields = config.fields; } else { config.fields.forEach(fieldName => { if (!change.before.exists) { indexFields.push(fieldName); } else if (document[fieldName] !== oldDocument[fieldName]) { indexFields.push(fieldName); } }); } if (indexFields.length < 1) { return null; } return this.generateIndex(document, indexFields); } generateIndex(data, fields) { let metadata = {}; fields.forEach(fieldName => { if (data[fieldName] !== undefined) { metadata[`idx__txt__${fieldName}`] = this.createTextIndex(data[fieldName]); metadata[`idx__rtxt__${fieldName}`] = this.createReverseTextIndex(data[fieldName]); } else { metadata[`idx__txt__${fieldName}`] = []; metadata[`idx__rtxt__${fieldName}`] = []; } }); return metadata; } createTextIndex(text) { const arrName = []; let curName = ''; text.split('').forEach(letter => { curName += letter.toLowerCase(); arrName.push(curName); }); return arrName; } createReverseTextIndex(text) { const arrName = []; let curName = ''; text.split('').reverse().forEach(letter => { curName += letter.toLowerCase(); arrName.push(curName); }); return arrName; } } exports.TextIndexGenerator = TextIndexGenerator; //# sourceMappingURL=TextIndexGenerator.js.map