export function getUserRole(email: string) {
return Effect.gen(function* () {
const result = yield* Effect.tryPromise({
try: async () => {
const result = await db
.select({ role: usersTable.role })
.from(usersTable)
.where(eq(usersTable.email, email))
.limit(1);
return result;
},
catch: (error) =>
new DatabaseError({
operation: "getUserRole",
cause: error,
}),
});
if (result.length === 0) {
yield* Effect.fail(new UserNotFoundError({ operation: "getUserRole" }));
}
return result[0].role;
}).pipe(
Effect.tapErrorTag("DatabaseError", (error) => Effect.logError(error)),
Effect.tapErrorTag("UserNotFoundError", (error) => Effect.logError(error))
);
}
export function getUserRole(email: string) {
return Effect.gen(function* () {
const result = yield* Effect.tryPromise({
try: async () => {
const result = await db
.select({ role: usersTable.role })
.from(usersTable)
.where(eq(usersTable.email, email))
.limit(1);
return result;
},
catch: (error) =>
new DatabaseError({
operation: "getUserRole",
cause: error,
}),
});
if (result.length === 0) {
yield* Effect.fail(new UserNotFoundError({ operation: "getUserRole" }));
}
return result[0].role;
}).pipe(
Effect.tapErrorTag("DatabaseError", (error) => Effect.logError(error)),
Effect.tapErrorTag("UserNotFoundError", (error) => Effect.logError(error))
);
}