export const getScanSchedule = createServerFn({ method: "GET" }).handler(
async () => {
// this part feels dirty
const program = getScanScheduleEffect.pipe(Effect.either);
const either = await Effect.runPromise(program);
const schedule = Either.match(either, {
onRight: (schedule) => schedule,
onLeft: handleError,
});
return schedule;
},
);
function handleError(
error: NotAuthenticatedError | UserNotFoundError | DatabaseError,
): never {
switch (error._tag) {
case "DatabaseError":
throw Schema.encodeSync(DatabaseError)(error);
case "NotAuthenticatedError":
case "UserNotFoundError":
throw redirect({ to: "/auth" });
}
}
export const getScanSchedule = createServerFn({ method: "GET" }).handler(
async () => {
// this part feels dirty
const program = getScanScheduleEffect.pipe(Effect.either);
const either = await Effect.runPromise(program);
const schedule = Either.match(either, {
onRight: (schedule) => schedule,
onLeft: handleError,
});
return schedule;
},
);
function handleError(
error: NotAuthenticatedError | UserNotFoundError | DatabaseError,
): never {
switch (error._tag) {
case "DatabaseError":
throw Schema.encodeSync(DatabaseError)(error);
case "NotAuthenticatedError":
case "UserNotFoundError":
throw redirect({ to: "/auth" });
}
}