Как создать пользовательскую проверку работоспособности Prisma с помощью @nestjs/terminus?

#nestjs #prisma #health-check

Вопрос:

Поскольку @nestjs/terminus не предоставляет проверку работоспособности Prisma, я пытаюсь создать ее на основе проверки здоровья Мангуста.

Когда я пытаюсь:

 import * as Prisma from 'prisma';
...
...
  private getContextConnection(): any | null {
    const {
      getConnectionToken,
      // eslint-disable-next-line @typescript-eslint/no-var-requires
    } = require('prisma') as typeof Prisma;

    try {
      return this.moduleRef.get(getConnectionToken('DatabaseConnection') as string, {
        strict: false,
      });
    } catch (err) {
      return null;
    }
  }
...
...
    const connection = options.connection || this.getContextConnection();

    if (!connection) {
      throw new ConnectionNotFoundError(
        this.getStatus(key, isHealthy, {
          message: 'Connection provider not found in application context',
        }),
      );
    }
 

Мне всегда кажется, что я получаю: «сообщение»: «Поставщик подключения не найден в контексте приложения».
Есть проблема с подключением, или я не совсем понимаю, как на самом деле работает проверка работоспособности

Комментарии:

1. Поскольку пакета NestJS Prisma нет, и, следовательно, никто не регистрирует DatabaseConnection токен, это, вероятно, имеет больше смысла делать PrismaClient.$connect() при проверке работоспособности.

Ответ №1:

Наивная копия реализации мангуста не будет работать, потому что существуют различия между NestJSMongoose типом/модулем и Prisma . В частности, getConnectionToken не существует внутри Prisma упаковки.

Я не могу прокомментировать, как лучше всего было бы расширить терминус для поддержки prisma. Для этого вам, возможно, придется немного покопаться в terminus интерфейсе. Однако простой способ получить проверку работоспособности/проверку в Prisma-использовать следующий запрос:

     prisma.$queryRaw`SELECT 1`