| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- /* eslint-disable @typescript-eslint/no-floating-promises */
- import {
- CollectionEvent,
- CollectionModificationEvent,
- Logger,
- ProductChannelEvent,
- ProductEvent,
- ProductVariantChannelEvent,
- ProductVariantEvent,
- StockMovementEvent,
- TaxRateEvent,
- } from '@vendure/core';
- import { loggerCtx } from './constants';
- import { PurgeRule } from './purge-rule';
- export const purgeProductsOnProductEvent = new PurgeRule({
- eventType: ProductEvent,
- handler: ({ events, stellateService }) => {
- const products = events.map(e => e.product);
- stellateService.purgeProducts(products);
- stellateService.purgeSearchResults(products);
- },
- });
- export const purgeProductVariantsOnProductVariantEvent = new PurgeRule({
- eventType: ProductVariantEvent,
- handler: ({ events, stellateService }) => {
- const variants = events.map(e => e.variants).flat();
- stellateService.purgeProductVariants(variants);
- stellateService.purgeSearchResults(variants);
- },
- });
- export const purgeProductsOnChannelEvent = new PurgeRule({
- eventType: ProductChannelEvent,
- handler: ({ events, stellateService }) => {
- const products = events.map(e => e.product);
- stellateService.purgeProducts(products);
- stellateService.purgeSearchResults(products);
- },
- });
- export const purgeProductVariantsOnChannelEvent = new PurgeRule({
- eventType: ProductVariantChannelEvent,
- handler: ({ events, stellateService }) => {
- const variants = events.map(e => e.productVariant);
- stellateService.purgeProductVariants(variants);
- stellateService.purgeSearchResults(variants);
- },
- });
- export const purgeProductVariantsOnStockMovementEvent = new PurgeRule({
- eventType: StockMovementEvent,
- handler: ({ events, stellateService }) => {
- const variants = events.map(e => e.stockMovements.map(m => m.productVariant)).flat();
- stellateService.purgeProductVariants(variants);
- stellateService.purgeSearchResults(variants);
- },
- });
- export const purgeCollectionsOnCollectionModificationEvent = new PurgeRule({
- eventType: CollectionModificationEvent,
- handler: ({ events, stellateService }) => {
- const collectionsToPurge = events.filter(e => e.productVariantIds.length).map(e => e.collection);
- Logger.debug(
- `purgeCollectionsOnCollectionModificationEvent, collectionsToPurge: ${collectionsToPurge
- .map(c => c.id)
- .join(', ')}`,
- loggerCtx,
- );
- if (collectionsToPurge.length) {
- stellateService.purgeCollections(collectionsToPurge);
- stellateService.purgeSearchResponseCacheIdentifiers(collectionsToPurge);
- }
- },
- });
- export const purgeCollectionsOnCollectionEvent = new PurgeRule({
- eventType: CollectionEvent,
- handler: ({ events, stellateService }) => {
- const collections = events.map(e => e.entity);
- stellateService.purgeCollections(collections);
- },
- });
- export const purgeAllOnTaxRateEvent = new PurgeRule({
- eventType: TaxRateEvent,
- handler: ({ stellateService }) => {
- stellateService.purgeAllOfType('ProductVariant');
- stellateService.purgeAllOfType('Product');
- stellateService.purgeAllOfType('SearchResponse');
- },
- });
- export const defaultPurgeRules = [
- purgeAllOnTaxRateEvent,
- purgeCollectionsOnCollectionEvent,
- purgeCollectionsOnCollectionModificationEvent,
- purgeProductsOnChannelEvent,
- purgeProductsOnProductEvent,
- purgeProductVariantsOnChannelEvent,
- purgeProductVariantsOnProductVariantEvent,
- purgeProductVariantsOnStockMovementEvent,
- ];
|