export const upsert = mutation({
args: {
discordMember,
},
handler: async (ctx, { discordMember }): Promise<Id<"users">> => {
const existingUserId = await ctx.runQuery(api.discord.user.get, {
discordUserId: discordMember.user.id,
});
if (existingUserId) return existingUserId;
// Create new user
const profile = (await DiscordProvider.profile!(
discordMember.user as DiscordProfile,
undefined as unknown as TokenSet, // TokenSet isn't used by this function
)) as Partial<Doc<"users">>; // slight type mismatch: name can be null
const userId = await ctx.db.insert("users", profile);
// Create auth account
await ctx.db.insert("authAccounts", {
userId,
provider: "discord",
providerAccountId: discordMember.user.id,
});
return userId;
},
});
export const upsert = mutation({
args: {
discordMember,
},
handler: async (ctx, { discordMember }): Promise<Id<"users">> => {
const existingUserId = await ctx.runQuery(api.discord.user.get, {
discordUserId: discordMember.user.id,
});
if (existingUserId) return existingUserId;
// Create new user
const profile = (await DiscordProvider.profile!(
discordMember.user as DiscordProfile,
undefined as unknown as TokenSet, // TokenSet isn't used by this function
)) as Partial<Doc<"users">>; // slight type mismatch: name can be null
const userId = await ctx.db.insert("users", profile);
// Create auth account
await ctx.db.insert("authAccounts", {
userId,
provider: "discord",
providerAccountId: discordMember.user.id,
});
return userId;
},
});