export const getUserControllerIdentity = async (ctx: MutationCtx | QueryCtx): Promise<Result<UserIdentity>> => {
const userIdentity = await ctx.auth.getUserIdentity();
if (!userIdentity) {
return { success: false, error: "User not logged in" };
}
return { success: true, value: userIdentity };
};
export const getUser = async (ctx: MutationCtx | QueryCtx): Promise<Result<Doc<"users">>> => {
const userIdentityRes = await getUserControllerIdentity(ctx);
if (!userIdentityRes.success) {
return userIdentityRes;
}
try {
const user = await ctx.db
.query("users")
.withIndex("by_clerk_id", (q) => q.eq("clerkUser.id", userIdentityRes.value.subject))
.unique();
if (!user) {
return { success: false, error: "User not found" };
}
return { success: true, value: user };
} catch (error) {
return { success: false, error: "User not found" };
}
};
export const getUserControllerIdentity = async (ctx: MutationCtx | QueryCtx): Promise<Result<UserIdentity>> => {
const userIdentity = await ctx.auth.getUserIdentity();
if (!userIdentity) {
return { success: false, error: "User not logged in" };
}
return { success: true, value: userIdentity };
};
export const getUser = async (ctx: MutationCtx | QueryCtx): Promise<Result<Doc<"users">>> => {
const userIdentityRes = await getUserControllerIdentity(ctx);
if (!userIdentityRes.success) {
return userIdentityRes;
}
try {
const user = await ctx.db
.query("users")
.withIndex("by_clerk_id", (q) => q.eq("clerkUser.id", userIdentityRes.value.subject))
.unique();
if (!user) {
return { success: false, error: "User not found" };
}
return { success: true, value: user };
} catch (error) {
return { success: false, error: "User not found" };
}
};