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:getProductsFromActivityconst 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)))
);