import { OnModuleDestroy, OnModuleInit } from '@nestjs/common'; import { ModuleRef } from '@nestjs/core'; import { ConfigService, EntityRelationPaths, Product, ProductPriceApplicator, ProductVariant, ProductVariantService, RequestContextCacheService, TransactionalConnection } from '@vendure/core'; import { Observable } from 'rxjs'; import { VARIANT_INDEX_NAME } from '../constants'; import { ElasticsearchOptions } from '../options'; import { BulkOperation, BulkOperationDoc, ProductChannelMessageData, ReindexMessageData, UpdateAssetMessageData, UpdateProductMessageData, UpdateVariantMessageData, UpdateVariantsByIdMessageData, VariantChannelMessageData, VariantIndexItem } from '../types'; export declare const defaultProductRelations: Array>; export declare const defaultVariantRelations: Array>; export interface ReindexMessageResponse { total: number; completed: number; duration: number; } type BulkVariantOperation = { index: typeof VARIANT_INDEX_NAME; operation: BulkOperation | BulkOperationDoc; }; export declare class ElasticsearchIndexerController implements OnModuleInit, OnModuleDestroy { private connection; private options; private productPriceApplicator; private configService; private productVariantService; private requestContextCache; private moduleRef; private client; private asyncQueue; private productRelations; private variantRelations; private injector; constructor(connection: TransactionalConnection, options: Required, productPriceApplicator: ProductPriceApplicator, configService: ConfigService, productVariantService: ProductVariantService, requestContextCache: RequestContextCacheService, moduleRef: ModuleRef); onModuleInit(): any; onModuleDestroy(): any; /** * Updates the search index only for the affected product. */ updateProduct({ ctx: rawContext, productId }: UpdateProductMessageData): Promise; /** * Updates the search index only for the affected product. */ deleteProduct({ ctx: rawContext, productId }: UpdateProductMessageData): Promise; /** * Updates the search index only for the affected product. */ assignProductToChannel({ ctx: rawContext, productId, channelId, }: ProductChannelMessageData): Promise; /** * Updates the search index only for the affected product. */ removeProductFromChannel({ ctx: rawContext, productId, channelId, }: ProductChannelMessageData): Promise; assignVariantToChannel({ ctx: rawContext, productVariantId, channelId, }: VariantChannelMessageData): Promise; removeVariantFromChannel({ ctx: rawContext, productVariantId, channelId, }: VariantChannelMessageData): Promise; /** * Updates the search index only for the affected entities. */ updateVariants({ ctx: rawContext, variantIds }: UpdateVariantMessageData): Promise; deleteVariants({ ctx: rawContext, variantIds }: UpdateVariantMessageData): Promise; updateVariantsById({ ctx: rawContext, ids, }: UpdateVariantsByIdMessageData): Observable; reindex({ ctx: rawContext }: ReindexMessageData): Observable; executeBulkOperationsByChunks(chunkSize: number, operations: BulkVariantOperation[], index?: string): Promise; updateAsset(data: UpdateAssetMessageData): Promise; deleteAsset(data: UpdateAssetMessageData): Promise; private updateAssetFocalPointForIndex; private deleteAssetForIndex; private updateAssetForIndex; private updateProductsInternal; private switchAlias; private updateProductsOperationsOnly; private updateProductsOperations; /** * Takes the default relations, and combines them with any extra relations specified in the * `hydrateProductRelations` and `hydrateProductVariantRelations`. This method also ensures * that the relation values are unique and that paths are fully expanded. * * This means that if a `hydrateProductRelations` value of `['assets.asset']` is specified, * this method will also add `['assets']` to the relations array, otherwise TypeORM would * throw an error trying to join a 2nd-level deep relation without the first level also * being joined. */ private getReindexRelations; private deleteProductOperations; private deleteVariantsInternalOperations; private getProductIdsByVariantIds; private executeBulkOperations; private runBulkOperationsOnIndex; private createVariantIndexItem; private getProductInStockValue; /** * If a Product has no variants, we create a synthetic variant for the purposes * of making that product visible via the search query. */ private createSyntheticProductIndexItem; private getTranslation; private getFacetIds; private getFacetValueIds; private static getId; } export {};