Hello here, who has already used middlewares optio...
# random
c
Hello here, who has already used middlewares option in prismaServiceOptions. It doesn’t work for me. I’m wondering if i should add prisma.$use at the end of middleware file before exporting. IN MIDDLEWARE FILE
Copy code
import { Prisma } from "@prisma/client";
import { EntityStatusHistoryService } from "src/modules/task/services/entity-status-history.service";
import { EntityStatusService } from "src/modules/task/services/entity-status.service";
import { SaeiStatusEnum } from "src/utils/enums/saei-status.enum";
import { PrismaService } from "src/utils/prisma/prisma.service";

export function adjournApplicationStatusHistoryMiddleware(): Prisma.Middleware {
    return async function (
        params: Prisma.MiddlewareParams,
        next: (params: Prisma.MiddlewareParams) => Promise<any>,
      ): Promise<Prisma.Middleware> {
        if (params.model == 'Entity' && params.action == 'update') {
          console.log("IN FIRST CONDITION");
          const statusId = (
            await new EntityStatusService(new PrismaService()).getEntityStatus(SaeiStatusEnum.AJOURNEE)
          ).id;
          const lastEntityStatusHistory =
            await new EntityStatusHistoryService(new PrismaService()).getLastEntityStatusHistory(
              params.args.where.id,
            );
          if (
            params.args.data.entityStatusId === statusId &&
            lastEntityStatusHistory.statusId !== statusId
          ) {
            console.log("IN SECOND CONDITION");
            await new EntityStatusHistoryService(new PrismaService()).createEntityStatusHistory(statusId,params.args.where.id);
          }
        }
        return next(params);
      }
} ;
IN APP MODULE
Copy code
import { HttpModule } from '@nestjs/axios';
import { Module } from '@nestjs/common';
import { ScheduleModule } from '@nestjs/schedule';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { TaskHandlerModule } from './modules/task/task.module';
import { PrismaModule } from "nestjs-prisma";
import { adjournApplicationStatusHistoryMiddleware } from './middleware/adjourn-application-status-history.middleware';

@Module({
  imports: [
    ScheduleModule.forRoot(),
    TaskHandlerModule,
    HttpModule,
    PrismaModule.forRoot({
      isGlobal: true,
      prismaServiceOptions: {
        middlewares: [adjournApplicationStatusHistoryMiddleware()],
        prismaOptions: { log: ['info'] }
      },
    }),
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}