@typeheim/orm-on-fire
Version:
Firestore ORM
64 lines • 2.16 kB
JavaScript
;
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