Skip to main content
Glama

Prisma MCP Server

Official
by prisma
Apache 2.0
4
44,213
  • Linux
  • Apple
tests.ts4.08 kB
import { expectTypeOf } from 'expect-type' import testMatrix from './_matrix' // @ts-ignore import type { Prisma as PrismaNamespace, PrismaClient } from './generated/prisma/client' declare let prisma: PrismaClient declare let Prisma: typeof PrismaNamespace testMatrix.setupTestSuite( ({ generatorType }) => { testIf(generatorType === 'prisma-client-js')('validation via non-extended client', () => { const data1 = Prisma.validator<PrismaNamespace.UserSelect>()({ id: true, }) expectTypeOf(data1).toMatchTypeOf<{ id: true }>() expect(data1).toEqual({ id: true }) Prisma.validator<PrismaNamespace.UserSelect>()({ // @ts-expect-error wrong: {}, }) const data2 = Prisma.validator( prisma, 'user', 'findFirst', )({ select: { id: true }, }) expectTypeOf(data2).toEqualTypeOf<{ select: { id: true } }>() expect(data2).toEqual({ select: { id: true } }) Prisma.validator( prisma, 'user', 'findFirst', )({ // @ts-expect-error select: { wrong: {} }, }) const data3 = Prisma.validator( prisma, 'user', 'create', 'data', )({ id: '1', }) expectTypeOf(data3).toEqualTypeOf<{ id: '1' }>() expect(data3).toEqual({ id: '1' }) Prisma.validator( prisma, 'user', 'create', 'data', )({ // @ts-expect-error wrong: {}, }) const data4 = Prisma.validator( prisma, 'user', 'create', 'select', )({ id: true, }) expectTypeOf(data4).toEqualTypeOf<{ id: true }>() expect(data4).toEqual({ id: true }) Prisma.validator( prisma, 'user', 'create', 'select', )({ // @ts-expect-error wrong: {}, }) }) testIf(generatorType === 'prisma-client-js')('validation via extended client', () => { const xprisma = prisma.$extends({ result: { user: { prop: { compute() { return 1 }, needs: { id: true }, }, }, }, }) const data1 = Prisma.validator<PrismaNamespace.UserSelect>()({ id: true, }) expectTypeOf(data1).toMatchTypeOf<{ id: true }>() expect(data1).toEqual({ id: true }) Prisma.validator<PrismaNamespace.UserSelect>()({ // @ts-expect-error wrong: {}, }) const data2 = Prisma.validator( xprisma, 'user', 'findFirst', )({ select: { prop: true }, }) expectTypeOf(data2).toEqualTypeOf<{ select: { prop: true } }>() expect(data2).toEqual({ select: { prop: true } }) Prisma.validator( xprisma, 'user', 'findFirst', )({ // @ts-expect-error select: { wrong: {} }, }) const data3 = Prisma.validator( xprisma, 'user', 'create', 'data', )({ id: '1', }) expectTypeOf(data3).toEqualTypeOf<{ id: '1' }>() expect(data3).toEqual({ id: '1' }) Prisma.validator( xprisma, 'user', 'create', 'data', )({ // @ts-expect-error wrong: {}, }) const data4 = Prisma.validator( xprisma, 'user', 'create', 'select', )({ id: true, prop: true, }) expectTypeOf(data4).toEqualTypeOf<{ id: true; prop: true }>() expect(data4).toEqual({ id: true, prop: true }) Prisma.validator( xprisma, 'user', 'create', 'select', )({ // @ts-expect-error wrong: {}, }) }) }, { optOut: { from: ['sqlite', 'mysql', 'mongodb', 'cockroachdb', 'sqlserver'], reason: 'This is mostly a type-level test, but we want to assert that queries still work with the validator.', }, }, )

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/prisma/prisma'

If you have feedback or need assistance with the MCP directory API, please join our Discord server