Skip to content

Owning the Code

Follow the Prerequisites to set up Prisma in your project.

If you prefer to manually integrate Prisma without an additional library, you can create your own PrismaService.

  1. Create Files

    Create src/prisma/ directory with prisma.module.ts and prisma.service.ts.

    • Directorysrc
      • Directoryprisma
        • prisma.module.ts
        • prisma.service.ts
  2. Prisma Service

    Add the following code to src/prisma/prisma.service.ts:

    src/prisma/prisma.service.ts
    import { Injectable } from '@nestjs/common';
    import { PrismaBetterSqlite3 } from '@prisma/adapter-better-sqlite3';
    import { PrismaClient } from '../generated/prisma/client';
    @Injectable()
    export class PrismaService extends PrismaClient {
    constructor() {
    const adapter = new PrismaBetterSqlite3({
    url: process.env.DATABASE_URL!,
    });
    super({ adapter });
    }
    }
  3. Prisma Module

    Add the following code to src/prisma/prisma.module.ts:

    src/prisma/prisma.module.ts
    import { Global, Module } from '@nestjs/common';
    import { PrismaService } from './prisma.service';
    @Global()
    @Module({
    providers: [PrismaService],
    exports: [PrismaService],
    })
    export class PrismaModule {}

    And import PrismaModule in AppModule.

    src/app.module.ts
    import { Module } from '@nestjs/common';
    import { PrismaModule } from './prisma/prisma.module';
    @Module({
    imports: [PrismaModule],
    })
    export class AppModule {}
  4. Usage

    Inject PrismaService into your controllers or services.

    src/app.service.ts
    @Injectable()
    export class AppService {
    constructor(private prisma: PrismaService) {}
    users() {
    // access prisma.* for your queries
    return this.prisma.user.findMany();
    }
    }