@opra/elastic 1.9.1 → 1.9.2

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.
@@ -201,13 +201,10 @@ class ElasticEntityService extends elastic_service_js_1.ElasticService {
201
201
  ? { ids: { values: [command.documentId] } }
202
202
  : undefined,
203
203
  options?.filter,
204
- options?.request?.query,
204
+ // options?.request?.query,
205
205
  ]);
206
- let query = {
207
- ...options?.request?.query,
208
- ...filterQuery,
209
- };
210
- if (!Object.keys(query).length)
206
+ let query = this._mergeQueries(options?.request?.query, filterQuery);
207
+ if (!(query && Object.keys(query).length))
211
208
  query = { match_all: {} };
212
209
  const request = {
213
210
  from: options?.skip,
@@ -417,6 +414,46 @@ class ElasticEntityService extends elastic_service_js_1.ElasticService {
417
414
  throw e;
418
415
  }
419
416
  }
417
+ _mergeQueries(requestQuery, filterQuery) {
418
+ if (requestQuery) {
419
+ let subQuery = false;
420
+ if (requestQuery.function_score) {
421
+ subQuery = true;
422
+ if (Array.isArray(requestQuery.function_score)) {
423
+ requestQuery.function_score.forEach(item => {
424
+ item.filter = this._mergeQueries(item.filter, filterQuery);
425
+ });
426
+ }
427
+ else {
428
+ requestQuery.function_score.query = this._mergeQueries(requestQuery.function_score.query, filterQuery);
429
+ }
430
+ }
431
+ if (requestQuery.dis_max) {
432
+ subQuery = true;
433
+ requestQuery.dis_max.queries?.map(q => this._mergeQueries(q, filterQuery));
434
+ }
435
+ if (requestQuery.constant_score) {
436
+ subQuery = true;
437
+ requestQuery.constant_score.filter = this._mergeQueries(requestQuery.constant_score.filter, filterQuery);
438
+ }
439
+ if (requestQuery.has_child) {
440
+ subQuery = true;
441
+ requestQuery.has_child.query = this._mergeQueries(requestQuery.has_child.query, filterQuery);
442
+ }
443
+ if (requestQuery.has_parent) {
444
+ subQuery = true;
445
+ requestQuery.has_parent.query = this._mergeQueries(requestQuery.has_parent.query, filterQuery);
446
+ }
447
+ if (requestQuery.script_score) {
448
+ subQuery = true;
449
+ requestQuery.script_score.query = this._mergeQueries(requestQuery.script_score.query, filterQuery);
450
+ }
451
+ return subQuery
452
+ ? requestQuery
453
+ : elastic_adapter_js_1.ElasticAdapter.prepareFilter([requestQuery, filterQuery]);
454
+ }
455
+ return filterQuery;
456
+ }
420
457
  async _beforeCreate(
421
458
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
422
459
  command) {
@@ -198,13 +198,10 @@ export class ElasticEntityService extends ElasticService {
198
198
  ? { ids: { values: [command.documentId] } }
199
199
  : undefined,
200
200
  options?.filter,
201
- options?.request?.query,
201
+ // options?.request?.query,
202
202
  ]);
203
- let query = {
204
- ...options?.request?.query,
205
- ...filterQuery,
206
- };
207
- if (!Object.keys(query).length)
203
+ let query = this._mergeQueries(options?.request?.query, filterQuery);
204
+ if (!(query && Object.keys(query).length))
208
205
  query = { match_all: {} };
209
206
  const request = {
210
207
  from: options?.skip,
@@ -414,6 +411,46 @@ export class ElasticEntityService extends ElasticService {
414
411
  throw e;
415
412
  }
416
413
  }
414
+ _mergeQueries(requestQuery, filterQuery) {
415
+ if (requestQuery) {
416
+ let subQuery = false;
417
+ if (requestQuery.function_score) {
418
+ subQuery = true;
419
+ if (Array.isArray(requestQuery.function_score)) {
420
+ requestQuery.function_score.forEach(item => {
421
+ item.filter = this._mergeQueries(item.filter, filterQuery);
422
+ });
423
+ }
424
+ else {
425
+ requestQuery.function_score.query = this._mergeQueries(requestQuery.function_score.query, filterQuery);
426
+ }
427
+ }
428
+ if (requestQuery.dis_max) {
429
+ subQuery = true;
430
+ requestQuery.dis_max.queries?.map(q => this._mergeQueries(q, filterQuery));
431
+ }
432
+ if (requestQuery.constant_score) {
433
+ subQuery = true;
434
+ requestQuery.constant_score.filter = this._mergeQueries(requestQuery.constant_score.filter, filterQuery);
435
+ }
436
+ if (requestQuery.has_child) {
437
+ subQuery = true;
438
+ requestQuery.has_child.query = this._mergeQueries(requestQuery.has_child.query, filterQuery);
439
+ }
440
+ if (requestQuery.has_parent) {
441
+ subQuery = true;
442
+ requestQuery.has_parent.query = this._mergeQueries(requestQuery.has_parent.query, filterQuery);
443
+ }
444
+ if (requestQuery.script_score) {
445
+ subQuery = true;
446
+ requestQuery.script_score.query = this._mergeQueries(requestQuery.script_score.query, filterQuery);
447
+ }
448
+ return subQuery
449
+ ? requestQuery
450
+ : ElasticAdapter.prepareFilter([requestQuery, filterQuery]);
451
+ }
452
+ return filterQuery;
453
+ }
417
454
  async _beforeCreate(
418
455
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
419
456
  command) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opra/elastic",
3
- "version": "1.9.1",
3
+ "version": "1.9.2",
4
4
  "description": "Opra Elastic Search adapter package",
5
5
  "author": "Panates",
6
6
  "license": "MIT",
@@ -11,8 +11,8 @@
11
11
  },
12
12
  "peerDependencies": {
13
13
  "@elastic/elasticsearch": ">=8.7.0 <9",
14
- "@opra/common": "^1.9.1",
15
- "@opra/core": "^1.9.1"
14
+ "@opra/common": "^1.9.2",
15
+ "@opra/core": "^1.9.2"
16
16
  },
17
17
  "type": "module",
18
18
  "exports": {
@@ -278,6 +278,7 @@ export declare class ElasticEntityService<T extends object = any> extends Elasti
278
278
  */
279
279
  getOutputCodec(operation: string): IsObject.Validator<T>;
280
280
  protected _executeCommand(command: ElasticEntityService.CommandInfo, commandFn: () => any): Promise<any>;
281
+ protected _mergeQueries(requestQuery?: estypes.QueryDslQueryContainer, filterQuery?: estypes.QueryDslQueryContainer): estypes.QueryDslQueryContainer | undefined;
281
282
  protected _beforeCreate(command: ElasticEntityService.CreateCommand): Promise<void>;
282
283
  protected _beforeUpdate(command: ElasticEntityService.UpdateCommand<T>): Promise<void>;
283
284
  protected _beforeUpdateMany(command: ElasticEntityService.UpdateCommand<T>): Promise<void>;