diff --git a/packages/features/auth/lib/next-auth-custom-adapter.ts b/packages/features/auth/lib/next-auth-custom-adapter.ts index a3aff5e12a..bb6b61b497 100644 --- a/packages/features/auth/lib/next-auth-custom-adapter.ts +++ b/packages/features/auth/lib/next-auth-custom-adapter.ts @@ -1,12 +1,33 @@ import type { Account, IdentityProvider, Prisma, User, VerificationToken } from "@prisma/client"; import { PrismaClientKnownRequestError } from "@prisma/client/runtime/library"; +import type { Awaitable } from "next-auth"; import type { PrismaClient } from "@calcom/prisma"; import { identityProviderNameMap } from "./identityProviderNameMap"; +type CalComAdapter = { + createUser: (data: Prisma.UserCreateInput) => Awaitable; + getUser: (id: string | number) => Awaitable; + getUserByEmail: (email: User["email"]) => Awaitable; + getUserByAccount: (provider_providerAccountId: { + providerAccountId: Account["providerAccountId"]; + provider: User["identityProvider"]; + }) => Awaitable; + updateUser: (data: Prisma.UserUncheckedCreateInput) => Awaitable; + deleteUser: (id: User["id"]) => Awaitable; + createVerificationToken: (data: VerificationToken) => Awaitable>; + useVerificationToken: ( + identifier_token: Prisma.VerificationTokenIdentifierTokenCompoundUniqueInput + ) => Awaitable | null>; + linkAccount: (data: Prisma.AccountCreateInput) => Awaitable; + unlinkAccount: ( + provider_providerAccountId: Prisma.AccountProviderProviderAccountIdCompoundUniqueInput + ) => Awaitable; +}; + /** @return { import("next-auth/adapters").Adapter } */ -export default function CalComAdapter(prismaClient: PrismaClient) { +export default function CalComAdapter(prismaClient: PrismaClient): CalComAdapter { return { createUser: (data: Prisma.UserCreateInput) => prismaClient.user.create({ data }), getUser: (id: string | number) =>