Prisma

You can use Transactional with Prisma client to run your queries in a transaction, this requires interactive transactions to be supported by the client.

Install

npm install @transactional/core @transactional/prisma

Usage

import { prismaTransactional } from "@transactional/prisma";

const prisma = new PrismaClient().$extends(extension);

Prisma transactional extensions run queries using the unextended client, so make sure to use the transactional extension after other extensions, like logging extensions or extensions that add methods to the client.

Using @Transactional Decorator

import { Transactional } from "@transactional/core"

class Service {
    
    @Transactional()
    findCats() {
        // now all your prisma queries are run inside the same transaction.
        await prisma.cat.findMany({});
        await prisma.cat.findFirst({});
        ...
    }
}

Using transactional Method

import { transactional } from "@transactional/core"

const findCats = transactional(() => {
    // now all your prisma queries are run inside the same transaction.
    return prisma.cat.findMany({});
})

await findCats();

Last updated