Jelajahi Sumber

feat(elasticsearch-plugin): Provide the ctx for custom mappings (#2547)

Fred Cox 2 tahun lalu
induk
melakukan
c5d0ea20d4

+ 3 - 3
packages/elasticsearch-plugin/src/indexing/indexer.controller.ts

@@ -892,12 +892,12 @@ export class ElasticsearchIndexerController implements OnModuleInit, OnModuleDes
             };
             const variantCustomMappings = Object.entries(this.options.customProductVariantMappings);
             for (const [name, def] of variantCustomMappings) {
-                item[`variant-${name}`] = await def.valueFn(v, languageCode, this.injector);
+                item[`variant-${name}`] = await def.valueFn(v, languageCode, this.injector, ctx);
             }
 
             const productCustomMappings = Object.entries(this.options.customProductMappings);
             for (const [name, def] of productCustomMappings) {
-                item[`product-${name}`] = await def.valueFn(v.product, variants, languageCode, this.injector);
+                item[`product-${name}`] = await def.valueFn(v.product, variants, languageCode, this.injector, ctx);
             }
             return item;
         } catch (err: any) {
@@ -971,7 +971,7 @@ export class ElasticsearchIndexerController implements OnModuleInit, OnModuleDes
         };
         const productCustomMappings = Object.entries(this.options.customProductMappings);
         for (const [name, def] of productCustomMappings) {
-            item[`product-${name}`] = await def.valueFn(product, [], languageCode, this.injector);
+            item[`product-${name}`] = await def.valueFn(product, [], languageCode, this.injector, ctx);
         }
         return item;
     }

+ 3 - 2
packages/elasticsearch-plugin/src/options.ts

@@ -7,6 +7,7 @@ import {
     LanguageCode,
     Product,
     ProductVariant,
+    RequestContext
 } from '@vendure/core';
 import deepmerge from 'deepmerge';
 
@@ -230,7 +231,7 @@ export interface ElasticsearchOptions {
      * ```
      */
     customProductMappings?: {
-        [fieldName: string]: CustomMapping<[Product, ProductVariant[], LanguageCode, Injector]>;
+        [fieldName: string]: CustomMapping<[Product, ProductVariant[], LanguageCode, Injector, RequestContext]>;
     };
     /**
      * @description
@@ -260,7 +261,7 @@ export interface ElasticsearchOptions {
      * ```
      */
     customProductVariantMappings?: {
-        [fieldName: string]: CustomMapping<[ProductVariant, LanguageCode, Injector]>;
+        [fieldName: string]: CustomMapping<[ProductVariant, LanguageCode, Injector, RequestContext]>;
     };
     /**
      * @description