export const ProgressReporterRedisLayer = (exportId: string) =>
Layer.unwrapEffect(
Effect.gen(function* () {
const redis = yield* RedisClient;
return Layer.succeed(ProgressReporter, {
report: (progress) =>
redis
.publish(
`${EXPORT_PROGRESS_CHANNEL_PREFIX}${exportId}`,
progress.toString(),
)
.pipe(
Effect.mapError(
(error) =>
new ProgressReporterError({
message: `[${error.cause}] ${error.message}`,
}),
),
),
});
}),
);
export const ProgressReporterRedisLayer = (exportId: string) =>
Layer.unwrapEffect(
Effect.gen(function* () {
const redis = yield* RedisClient;
return Layer.succeed(ProgressReporter, {
report: (progress) =>
redis
.publish(
`${EXPORT_PROGRESS_CHANNEL_PREFIX}${exportId}`,
progress.toString(),
)
.pipe(
Effect.mapError(
(error) =>
new ProgressReporterError({
message: `[${error.cause}] ${error.message}`,
}),
),
),
});
}),
);