Skip to main content
Glama

Prisma MCP Server

Official
by prisma
Apache 2.0
4
44,192
  • Linux
  • Apple
tests.ts4.83 kB
import { PrismaBetterSQLite3 } from '@prisma/adapter-better-sqlite3' import { PrismaLibSQL } from '@prisma/adapter-libsql' import { randomUUID } from 'crypto' import { AdapterProviders } from '../_utils/providers' import { DatasourceInfo } from '../_utils/setupTestSuiteEnv' import { NewPrismaClient } from '../_utils/types' // @ts-ignore import testMatrix from './_matrix' import type * as imports from './generated/prisma/client' declare const newPrismaClient: NewPrismaClient<imports.PrismaClient, typeof imports.PrismaClient> testMatrix.setupTestSuite( ({ driverAdapter }, _suiteMeta, _clientMeta, _cliMeta, info) => { test('can retrieve a unixepoch-ms date time with a find unique query', async () => { const prisma = createClient(info, driverAdapter) const created = await prisma.event.create({ data: { name: 'event' } }) expect(created).toMatchObject({ createdAt: expect.any(Date) }) const found = await prisma.event.findUnique({ where: { uuid_createdAt: { uuid: created.uuid, createdAt: created.createdAt, }, }, }) expect(found).toMatchObject(created) }) test('can retrieve a unixepoch-ms date time with a find unique query when it was stored directly as a millis number', async () => { const prisma = createClient(info, driverAdapter) const uuid = randomUUID() const now = new Date() await prisma.$executeRaw`INSERT INTO Event (name, uuid, createdAt) VALUES ('event', ${uuid}, ${now.getTime()})` const found = await prisma.event.findUnique({ where: { uuid_createdAt: { uuid, createdAt: now, }, }, }) expect(found).toMatchObject({ createdAt: now }) }) test('can retrieve a unixepoch-ms date time with a raw query', async () => { const prisma = createClient(info, driverAdapter) const created = await prisma.event.create({ data: { name: 'event' } }) expect(created).toMatchObject({ createdAt: expect.any(Date) }) const [event] = (await prisma.$queryRaw`SELECT * FROM Event WHERE createdAt = ${created.createdAt}`) as unknown[] expect(event).toMatchObject(created) }) test('can retrieve a unixepoch-ms date time with a raw query by a millis number', async () => { const prisma = createClient(info, driverAdapter) const created = await prisma.event.create({ data: { name: 'event' } }) expect(created).toMatchObject({ createdAt: expect.any(Date) }) const [event] = (await prisma.$queryRaw`SELECT * FROM Event WHERE createdAt = ${created.createdAt.getTime()}`) as unknown[] expect(event).toMatchObject(created) }) test('can retrieve a unixepoch-ms date time with a find many query', async () => { const prisma = createClient(info, driverAdapter) const created = await prisma.event.create({ data: { name: 'event' } }) expect(created).toMatchObject({ createdAt: expect.any(Date), }) const found = await prisma.event.findMany({ where: { uuid: created.uuid, createdAt: created.createdAt, }, }) expect(found).toEqual([created]) }) test('can retrieve a unixepoch-ms date time with compactable find unique queries', async () => { const prisma = createClient(info, driverAdapter) const created = await prisma.event.create({ data: { name: 'event' } }) expect(created).toMatchObject({ createdAt: expect.any(Date), }) const find = () => prisma.event.findUnique({ where: { uuid_createdAt: { uuid: created.uuid, createdAt: created.createdAt, }, }, }) // These two queries are going to be compacted together and run as one. await expect(Promise.all([find(), find()])).resolves.toMatchObject([created, created]) }) }, { optOut: { from: ['sqlserver', 'mysql', 'postgresql', 'cockroachdb', 'mongodb'], reason: 'testing sqlite-specific timestamp behavior', }, skipDriverAdapter: { from: ['js_d1'], reason: 'D1 does not need to support the QE unixepoch-ms format', }, skipDefaultClientInstance: true, skip: (skip, options) => skip(options.driverAdapter === undefined, 'testing only driver adapters'), }, ) function createClient(info: DatasourceInfo, driverAdapter?: `${AdapterProviders}`) { const constructor = driverAdapter === AdapterProviders.JS_BETTER_SQLITE3 ? PrismaBetterSQLite3 : PrismaLibSQL return newPrismaClient({ // @ts-test-if: driverAdapter !== undefined adapter: new constructor( { url: info.databaseUrl, }, { timestampFormat: 'unixepoch-ms', }, ), }) }

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