contexD / node-dataloader-cache-wrapper

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

node-dataloader-cache-wrapper

Usage

import { dataloaderCache } from "@labdigital/dataloader-cache-wrapper"

export const createProductBySlugLoader = () => {
  return new DataLoader<ProductReference, any>(ProductDataLoader, {
    maxBatchSize: 50,
  });
};

export const ProductDataLoader = async (keys: readonly any[]): Promise<(Product | null)[]> => {
  return dataloaderCache(_uncachedProductDataLoader, keys, {
    client: redisClient,
    ttl: 3600,

    cacheKeysFn: (ref: ProductRef) => {
      const key = `${ref.store}-${ref.locale}-${ref.currency}`;
      return [`some-data:${key}:id:${ref.slug}`];
    },
    lookupFn: (items: Product[], ref: ProductRef) => {
      return items.find((p) => p.slug === ref.slug);
    },
  })
}

About

License:MIT License


Languages

Language:TypeScript 75.7%Language:JavaScript 24.3%