Skip to content

Commit

Permalink
Fix nextauthjs#11944 - Removed explicit undefined values before passi…
Browse files Browse the repository at this point in the history
…ng to Prisma
  • Loading branch information
petergoldstein committed Oct 1, 2024
1 parent e2f3d51 commit a84da6c
Showing 1 changed file with 36 additions and 8 deletions.
44 changes: 36 additions & 8 deletions packages/adapter-prisma/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,10 @@ export function PrismaAdapter(
// We need to let Prisma generate the ID because our default UUID is incompatible with MongoDB
// eslint-disable-next-line @typescript-eslint/no-unused-vars
createUser: ({ id, ...data }) => {
return p.user.create({ data })
const filteredData = Object.fromEntries(
Object.entries(data).filter(([_, v]) => v !== undefined)
);
return p.user.create({ data: filteredData });
},
getUser: (id) => p.user.findUnique({ where: { id } }),
getUserByEmail: (email) => p.user.findUnique({ where: { email } }),
Expand All @@ -42,8 +45,14 @@ export function PrismaAdapter(
})
return (account?.user as AdapterUser) ?? null
},
updateUser: ({ id, ...data }) =>
p.user.update({ where: { id }, data }) as Promise<AdapterUser>,
updateUser: ({ id, ...data }) => {
const filteredData = Object.fromEntries(
Object.entries(data).filter(([_, v]) => v !== undefined)
);
return p.user.update({
where: { id }, data: filteredData
}) as Promise<AdapterUser>
},
deleteUser: (id) =>
p.user.delete({ where: { id } }) as Promise<AdapterUser>,
linkAccount: (data) =>
Expand All @@ -61,13 +70,29 @@ export function PrismaAdapter(
const { user, ...session } = userAndSession
return { user, session } as { user: AdapterUser; session: AdapterSession }
},
createSession: (data) => p.session.create({ data }),
updateSession: (data) =>
p.session.update({ where: { sessionToken: data.sessionToken }, data }),
createSession: (data) => {
const filteredData = Object.fromEntries(
Object.entries(data).filter(([_, v]) => v !== undefined)
);
return p.session.create({ data: filteredData })
},
updateSession: (data) => {
const filteredData = Object.fromEntries(
Object.entries(data).filter(([_, v]) => v !== undefined)
);
return p.session.update({
where: { sessionToken: data.sessionToken }, data: filteredData
})
},
deleteSession: (sessionToken) =>
p.session.delete({ where: { sessionToken } }),
async createVerificationToken(data) {
const verificationToken = await p.verificationToken.create({ data })
const filteredData = Object.fromEntries(
Object.entries(data).filter(([_, v]) => v !== undefined)
);
const verificationToken = await p.verificationToken.create({
data: filteredData
})
// @ts-expect-errors // MongoDB needs an ID, but we don't
if (verificationToken.id) delete verificationToken.id
return verificationToken
Expand All @@ -94,8 +119,11 @@ export function PrismaAdapter(
}) as Promise<AdapterAccount | null>
},
async createAuthenticator(authenticator) {
const filteredData = Object.fromEntries(
Object.entries(authenticator).filter(([_, v]) => v !== undefined)
);
return p.authenticator.create({
data: authenticator,
data: filteredData,
})
},
async getAuthenticator(credentialID) {
Expand Down

0 comments on commit a84da6c

Please sign in to comment.