placementt-core 1.400.1205 → 1.400.1207

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -128,11 +128,11 @@ exports.GLOBAL_SEARCH_INDEXES = [
128
128
  // oIds are Firestore ids, so they go into the attribute path unquoted — the
129
129
  // same shape algoliaProviderContactSearch already uses. Own records come
130
130
  // through at any status; a linked trust's or hub's only once approved.
131
- filters: (user, institute) => `(${(0, exports.employerSearchScopes)(user, institute)
132
- .map(({ oId, linked }) => (linked ?
133
- `(savedBy.${oId}.exists:true AND savedBy.${oId}.status:approved)` :
134
- `savedBy.${oId}.exists:true`))
135
- .join(" OR ")})`,
131
+ // A flat OR on purpose: Algolia refuses `X OR (Y AND Z)`, and a status of
132
+ // approved already implies the record is saved to that database.
133
+ filters: (user, institute) => (0, exports.employerSearchScopes)(user, institute)
134
+ .map(({ oId, linked }) => (linked ? `savedBy.${oId}.status:approved` : `savedBy.${oId}.exists:true`))
135
+ .join(" OR "),
136
136
  toHit: (hit) => ({
137
137
  id: hit.objectID,
138
138
  title: hit.name || fullName(hit.contactForename, hit.contactSurname) || "Unnamed employer",
@@ -201,16 +201,23 @@ const globalSearch = async (params) => {
201
201
  if (!indexes.length)
202
202
  return {};
203
203
  const algoliaIndexes = indexes.filter(isAlgoliaBacked);
204
- const algoliaResults = algoliaIndexes.length && user.algoliaKey ?
205
- (await (0, algoliasearch_1.default)(algoliaConfig_1.ALGOLIA_APP_ID, user.algoliaKey).multipleQueries(algoliaIndexes.map((index) => ({
206
- indexName: index.indexName,
207
- query: trimmed,
208
- params: {
209
- filters: index.filters(user, institute),
210
- hitsPerPage,
211
- page,
212
- },
213
- })))).results :
204
+ // One request per index rather than one multipleQueries batch: Algolia
205
+ // rejects a batch outright if any one query in it is refused, so a filter
206
+ // one index can't take would empty every section. Each query is billed the
207
+ // same either way. A refused index logs and comes back empty.
208
+ const client = algoliaIndexes.length && user.algoliaKey ? (0, algoliasearch_1.default)(algoliaConfig_1.ALGOLIA_APP_ID, user.algoliaKey) : undefined;
209
+ const algoliaResults = client ?
210
+ (await Promise.allSettled(algoliaIndexes.map((index) => client.initIndex(index.indexName).search(trimmed, {
211
+ filters: index.filters(user, institute),
212
+ hitsPerPage,
213
+ page,
214
+ })))).map((outcome, i) => {
215
+ if (outcome.status === "fulfilled")
216
+ return outcome.value;
217
+ const e = outcome.reason;
218
+ console.error(`Global search failed on ${algoliaIndexes[i].indexName}`, e?.status, e?.message, e);
219
+ return undefined;
220
+ }) :
214
221
  [];
215
222
  const section = (index, hits, nbHits, nbPages, at) => ({
216
223
  id: index.id,
@@ -1 +1 @@
1
- {"version":3,"file":"globalSearch.js","sourceRoot":"","sources":["../../../src/features/search/globalSearch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"globalSearch.js","sourceRoot":"","sources":["../../../src/features/search/globalSearch.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "private": false,
3
3
  "name": "placementt-core",
4
4
  "author": "Placementt",
5
- "version": "1.400.1205",
5
+ "version": "1.400.1207",
6
6
  "main": "lib/index.js",
7
7
  "types": "lib/index.d.ts",
8
8
  "scripts": {
@@ -204,11 +204,11 @@ export const GLOBAL_SEARCH_INDEXES: GlobalSearchIndexDefinition[] = [
204
204
  // oIds are Firestore ids, so they go into the attribute path unquoted — the
205
205
  // same shape algoliaProviderContactSearch already uses. Own records come
206
206
  // through at any status; a linked trust's or hub's only once approved.
207
- filters: (user, institute) => `(${employerSearchScopes(user, institute)
208
- .map(({oId, linked}) => (linked ?
209
- `(savedBy.${oId}.exists:true AND savedBy.${oId}.status:approved)` :
210
- `savedBy.${oId}.exists:true`))
211
- .join(" OR ")})`,
207
+ // A flat OR on purpose: Algolia refuses `X OR (Y AND Z)`, and a status of
208
+ // approved already implies the record is saved to that database.
209
+ filters: (user, institute) => employerSearchScopes(user, institute)
210
+ .map(({oId, linked}) => (linked ? `savedBy.${oId}.status:approved` : `savedBy.${oId}.exists:true`))
211
+ .join(" OR "),
212
212
  toHit: (hit) => ({
213
213
  id: hit.objectID,
214
214
  title: hit.name || fullName(hit.contactForename, hit.contactSurname) || "Unnamed employer",
@@ -303,16 +303,23 @@ export const globalSearch = async (params: GlobalSearchParams): Promise<GlobalSe
303
303
  if (!indexes.length) return {};
304
304
 
305
305
  const algoliaIndexes = indexes.filter(isAlgoliaBacked);
306
- const algoliaResults = algoliaIndexes.length && user.algoliaKey ?
307
- (await algoliasearch(ALGOLIA_APP_ID, user.algoliaKey).multipleQueries(algoliaIndexes.map((index) => ({
308
- indexName: index.indexName,
309
- query: trimmed,
310
- params: {
311
- filters: index.filters(user, institute),
312
- hitsPerPage,
313
- page,
314
- },
315
- })))).results :
306
+
307
+ // One request per index rather than one multipleQueries batch: Algolia
308
+ // rejects a batch outright if any one query in it is refused, so a filter
309
+ // one index can't take would empty every section. Each query is billed the
310
+ // same either way. A refused index logs and comes back empty.
311
+ const client = algoliaIndexes.length && user.algoliaKey ? algoliasearch(ALGOLIA_APP_ID, user.algoliaKey) : undefined;
312
+ const algoliaResults = client ?
313
+ (await Promise.allSettled(algoliaIndexes.map((index) => client.initIndex(index.indexName).search(trimmed, {
314
+ filters: index.filters(user, institute),
315
+ hitsPerPage,
316
+ page,
317
+ })))).map((outcome, i) => {
318
+ if (outcome.status === "fulfilled") return outcome.value;
319
+ const e = outcome.reason;
320
+ console.error(`Global search failed on ${algoliaIndexes[i].indexName}`, e?.status, e?.message, e);
321
+ return undefined;
322
+ }) :
316
323
  [];
317
324
 
318
325
  const section = (index: GlobalSearchIndexDefinition, hits: GlobalSearchHit[], nbHits: number, nbPages: number, at: number): GlobalSearchIndexResults => ({