Effect CommunityEC
Effect Community3y ago
3 replies
iamK

Caching in Effect for getProductsFromActivity responses

How do you do caching in Effect ? Lets say that I want to cache getProductsFromActivity responses in following code:

const analyzeUserActivity = pipe(
  getUserActivities,
  Effect.map(filterRelevantActivities),
  Effect.flatMap(Effect.forEachPar(getProductsForActivity)),
  Effect.map(calculateStatistics),
  Effect.delay(2000),
  Effect.provideSomeContext(this.context)
);

export const getProductsForActivity = (activity: UserActivity) =>
  pipe(
    getProductsByCategory(activity.categoryId),
    Effect.map((products) => [activity, products] as const)
  );

const getProductsByCategory = (categoryId: string) =>
  pipe(
    ProductDAOTag,
    Effect.flatMap((dao) => Effect.tryPromise(async () => dao.getAll(categoryId)))
  );
Was this page helpful?