Skip to main content
Glama

Prisma MCP Server

Official
by prisma
Apache 2.0
4
44,231
  • Linux
  • Apple
tests.ts3.15 kB
import { Providers } from '../../_utils/providers' import { waitFor } from '../../_utils/tests/waitFor' import { NewPrismaClient } from '../../_utils/types' import testMatrix from './_matrix' // @ts-ignore import type { PrismaClient } from './generated/prisma/client' declare const newPrismaClient: NewPrismaClient<PrismaClient, typeof PrismaClient> testMatrix.setupTestSuite( ({ provider, driverAdapter, clientEngineExecutor }) => { const isSqlServer = provider === Providers.SQLSERVER const usesJsDrivers = driverAdapter !== undefined || clientEngineExecutor === 'remote' test('executes batch queries in the right order when using extensions + middleware', async () => { const prisma = newPrismaClient({ log: [{ emit: 'event', level: 'query' }], }) const queries: string[] = [] // @ts-expect-error - client not typed for log opts for cross generator compatibility - can be improved once we drop the prisma-client-js generator prisma.$on('query', ({ query }) => queries.push(query)) const xprisma = prisma.$extends({ query: { async $queryRawUnsafe({ args, query }) { const [, result] = await prisma.$transaction([ prisma.$queryRawUnsafe('SELECT 1'), query(args), prisma.$queryRawUnsafe('SELECT 3'), ]) return result }, }, }) await xprisma.$queryRawUnsafe('SELECT 2') const expectation = ['SELECT 1', 'SELECT 2', 'SELECT 3', expect.stringContaining('COMMIT')] if (!usesJsDrivers) { // Driver adapters do not issue BEGIN through the query engine. expectation.unshift(expect.stringContaining('BEGIN')) } if (isSqlServer && !usesJsDrivers) { expectation.unshift(expect.stringContaining('SET TRANSACTION')) } await waitFor(() => expect(queries).toEqual(expectation)) }) test('executes batch in right order when using delayed middleware', async () => { const prisma = newPrismaClient({ log: [{ emit: 'event', level: 'query' }], }) const queries: string[] = [] // @ts-expect-error - client not typed for log opts for cross generator compatibility - can be improved once we drop the prisma-client-js generator prisma.$on('query', ({ query }) => queries.push(query)) await prisma.$transaction([ prisma.$queryRawUnsafe('SELECT 1'), prisma.$queryRawUnsafe('SELECT 2'), prisma.$queryRawUnsafe('SELECT 3'), ]) const expectation = ['SELECT 1', 'SELECT 2', 'SELECT 3', expect.stringContaining('COMMIT')] if (!usesJsDrivers) { // Driver adapters do not issue BEGIN through the query engine. expectation.unshift(expect.stringContaining('BEGIN')) } if (isSqlServer && !usesJsDrivers) { expectation.unshift(expect.stringContaining('SET TRANSACTION')) } await waitFor(() => expect(queries).toEqual(expectation)) }) }, { skipDefaultClientInstance: true, optOut: { from: [Providers.MONGODB], reason: 'Test uses raw SQL queries', }, }, )

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