strapi-plugin-fuzzy-search-young
Version:
Register a weighted fuzzy search endpoint for Strapi Headless CMS you can add your content types to in no time.
40 lines (39 loc) • 1.68 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const buildResult_1 = __importDefault(require("../utils/buildResult"));
const buildTransliteratedResult_1 = __importDefault(require("../utils/buildTransliteratedResult"));
const validateQuery_1 = __importDefault(require("../utils/validateQuery"));
async function getResult({ contentType, query, filters, populate, locale, }) {
const buildFilteredEntry = async () => {
await (0, validateQuery_1.default)(contentType, locale);
const items = await strapi.entityService.findMany(contentType.model.uid, {
...(filters && { filters }),
...(locale && { locale }),
...(populate && { populate }),
});
return {
uid: contentType.uid,
modelName: contentType.modelName,
schemaInfo: contentType.model.info,
transliterate: contentType.transliterate,
fuzzysortOptions: contentType.fuzzysortOptions,
[contentType.model.info.pluralName]: items,
};
};
const filteredEntry = await buildFilteredEntry();
const keys = filteredEntry.fuzzysortOptions.keys.map((key) => key.name);
let result = (0, buildResult_1.default)({ model: filteredEntry, keys, query });
if (filteredEntry.transliterate) {
result = (0, buildTransliteratedResult_1.default)({
model: filteredEntry,
keys,
query,
result,
});
}
return result;
}
exports.default = getResult;