Skip to content

Instantly share code, notes, and snippets.

View keizie's full-sized avatar

Jeong-Hee Kang keizie

  • Asia/Seoul
  • 18:57 (UTC +09:00)
View GitHub Profile
@keizie
keizie / DatabaseService.ts
Created February 12, 2025 12:03
nest.js service from prisma $extends (type 2)
import { Injectable, OnModuleDestroy, OnModuleInit } from '@nestjs/common'
import { PrismaClient } from '@prisma/client'
import { faker } from '@faker-js/faker'
@Injectable()
export class DatabaseService
extends PrismaClient
implements OnModuleInit, OnModuleDestroy
{
constructor() {
@keizie
keizie / DatabaseService.ts
Created February 12, 2025 12:04
nest.js service from prisma $extends (type 2) variant
constructor() {
super()
const ext = Prisma.defineExtension((client) =>
client.$extends({
name: 'webinarAfterCreate',
query: {
webinar: {
async create({ args, query }) {
console.log('webinarAfterCreate', args)
@keizie
keizie / DatabaseService.ts
Created February 13, 2025 12:46
nest.js service from prisma $extends (type 3)
import { Injectable, OnModuleDestroy, OnModuleInit, Type } from '@nestjs/common';
import { PrismaClient, Prisma } from '@prisma/client';
const existsExtension = Prisma.defineExtension({
name: 'exists-extension',
model: {
$allModels: {
async exists<T>(this: T, where: Prisma.Args<T, 'findFirst'>['where']): Promise<boolean> {
const context = Prisma.getExtensionContext(this);
const result = await (context as any).findFirst({ where });