deno.land / x / mongoose@6.7.5 / lib / helpers / indexes / getRelatedIndexes.js
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960'use strict';
function getRelatedSchemaIndexes(model, schemaIndexes) { return getRelatedIndexes({ baseModelName: model.baseModelName, discriminatorMapping: model.schema.discriminatorMapping, indexes: schemaIndexes, indexesType: 'schema' });}
function getRelatedDBIndexes(model, dbIndexes) { return getRelatedIndexes({ baseModelName: model.baseModelName, discriminatorMapping: model.schema.discriminatorMapping, indexes: dbIndexes, indexesType: 'db' });}
module.exports = { getRelatedSchemaIndexes, getRelatedDBIndexes};
function getRelatedIndexes({ baseModelName, discriminatorMapping, indexes, indexesType}) { const discriminatorKey = discriminatorMapping && discriminatorMapping.key; const discriminatorValue = discriminatorMapping && discriminatorMapping.value;
if (!discriminatorKey) { return indexes; }
const isChildDiscriminatorModel = Boolean(baseModelName); if (isChildDiscriminatorModel) { return indexes.filter(index => { const partialFilterExpression = getPartialFilterExpression(index, indexesType); return partialFilterExpression && partialFilterExpression[discriminatorKey] === discriminatorValue; }); }
return indexes.filter(index => { const partialFilterExpression = getPartialFilterExpression(index, indexesType); return !partialFilterExpression || !partialFilterExpression[discriminatorKey]; });}
function getPartialFilterExpression(index, indexesType) { if (indexesType === 'schema') { const options = index[1]; return options && options.partialFilterExpression; } return index.partialFilterExpression;}
Version Info