diff --git a/packages/client/src/generation/TSClient/Model.ts b/packages/client/src/generation/TSClient/Model.ts index 2afe58f8a475..0ae6aed7bc9b 100644 --- a/packages/client/src/generation/TSClient/Model.ts +++ b/packages/client/src/generation/TSClient/Model.ts @@ -341,7 +341,7 @@ ${ifExtensions(() => { export type ${getSelectName(model.name)}Scalar = { ${indent( outputType.fields - .filter((field) => field.outputType.location === 'scalar') + .filter((field) => field.outputType.location === 'scalar' || field.outputType.location === 'enumTypes') .map((f) => `${f.name}?: boolean`) .join('\n'), TAB_SIZE, diff --git a/packages/client/tests/functional/issues/16535-select-enum/_matrix.ts b/packages/client/tests/functional/issues/16535-select-enum/_matrix.ts new file mode 100644 index 000000000000..38333790840a --- /dev/null +++ b/packages/client/tests/functional/issues/16535-select-enum/_matrix.ts @@ -0,0 +1,15 @@ +import { defineMatrix } from '../../_utils/defineMatrix' + +export default defineMatrix(() => [ + [ + { + provider: 'postgresql', + }, + { + provider: 'mysql', + }, + { + provider: 'cockroachdb', + }, + ], +]) diff --git a/packages/client/tests/functional/issues/16535-select-enum/prisma/_schema.ts b/packages/client/tests/functional/issues/16535-select-enum/prisma/_schema.ts new file mode 100644 index 000000000000..3f042e9730cc --- /dev/null +++ b/packages/client/tests/functional/issues/16535-select-enum/prisma/_schema.ts @@ -0,0 +1,26 @@ +import { idForProvider } from '../../../_utils/idForProvider' +import testMatrix from '../_matrix' + +export default testMatrix.setupSchema(({ provider }) => { + return /* Prisma */ ` + generator client { + provider = "prisma-client-js" + previewFeatures = ["clientExtensions"] + } + + datasource db { + provider = "${provider}" + url = env("DATABASE_URI_${provider}") + } + + model User { + id ${idForProvider(provider)} + role UserRole + } + + enum UserRole { + ADMIN + USER + } + ` +}) diff --git a/packages/client/tests/functional/issues/16535-select-enum/tests.ts b/packages/client/tests/functional/issues/16535-select-enum/tests.ts new file mode 100644 index 000000000000..21f7dca08ff3 --- /dev/null +++ b/packages/client/tests/functional/issues/16535-select-enum/tests.ts @@ -0,0 +1,29 @@ +import testMatrix from './_matrix' +// @ts-ignore +import type { Prisma as PrismaNamespace, PrismaClient } from './node_modules/@prisma/client' + +declare let prisma: PrismaClient +declare let Prisma: typeof PrismaNamespace + +testMatrix.setupTestSuite( + () => { + test('allows to select enum field', async () => { + const user = await prisma.user.create({ + data: { + role: 'ADMIN', + }, + select: { + role: true, + }, + }) + + expect(user).toEqual({ role: 'ADMIN' }) + }) + }, + { + optOut: { + from: ['sqlite', 'mongodb', 'sqlserver'], + reason: 'No support for enums', + }, + }, +)