open-index/open-npm huggingface dataset:
npm package: @nsix/nestjs-rmq-queue
Description: NestJS-style BullMQ-like queue abstraction over RabbitMQ (amqplib).
Latest version: 0.1.5

# nest-rmq-queue

Простий NestJS-пакет, який дає Bull/BullMQ-подібний API поверх RabbitMQ (`amqplib`):
- `RmqQueue` – аналог `Queue`
- `@RmqProcessor()` + `@RmqProcess()` – аналог `@Processor()` / `@Process()` із `@nestjs/bull`
- Повний набір подій черги через декоратори:
  - `@OnQueueCompleted()` / `@OnGlobalQueueCompleted()`
  - `@OnQueueFailed()` / `@OnGlobalQueueFailed()`
  - та інші (`error`, `waiting`, `active`, `stalled`, `progress`, `paused`, `resumed`, `cleaned`, `drained`, `removed`)

## Встановлення

```bash
npm i nest-rmq-queue amqplib
npm install ../libs/nest-rmq-queue
```

## Приклад використання

```ts
// app.module.ts
import { Module } from '@nestjs/common';
import { RmqQueueModule } from 'nest-rmq-queue';
import { EmailModule } from './email/email.module';

@Module({
  imports: [
    RmqQueueModule.forRoot({
      connection: {
        host: 'localhost',
        port: 5672,
        username: 'guest',
        password: 'guest',
        vhost: '/',
      },
      queues: [{ name: 'email-queue' }],
      prefetch: 5,
    }),
    EmailModule,
  ],
})
export class AppModule {}
```

```ts
// email-producer.service.ts
import { Injectable } from '@nestjs/common';
import { InjectRmqQueue, RmqQueue } from 'nest-rmq-queue';

@Injectable()
export class EmailProducerService {
  constructor(
    @InjectRmqQueue('email-queue')
    private readonly emailQueue: RmqQueue<{ to: string; subject: string }>,
  ) {}

  async sendWelcomeEmail(to: string) {
    await this.emailQueue.add('welcome', {
      to,
      subject: 'Welcome!',
    });
  }
}
```

```ts
// email.processor.ts
import { Injectable } from '@nestjs/common';
import {
  RmqProcessor,
  RmqProcess,
  OnQueueActive,
  OnQueueCompleted,
  OnQueueFailed,
  RmqJob,
} from 'nest-rmq-queue';

@Injectable()
@RmqProcessor('email-queue')
export class EmailProcessor {
  @RmqProcess('welcome')
  async handleWelcome(job: RmqJob<{ to: string; subject: string }>) {
    // ... відправка листа
    return { ok: true };
  }

  @OnQueueActive()
  onActive(job: RmqJob<any>) {
    console.log('email-queue ACTIVE', job.id, job.name);
  }

  @OnQueueCompleted()
  onCompleted(job: RmqJob<any>, result: any) {
    console.log('email-queue COMPLETED', job.id, result);
  }

  @OnQueueFailed()
  onFailed(job: RmqJob<any>, err: Error) {
    console.error('email-queue FAILED', job.id, err.message);
  }
}
```
npm package: @nsix/nsix-prisma-types
Description: Пакет для спільного використання типів Prisma між мікросервісами NestJS.
Latest version: 1.0.2

# @nsix/nsix-prisma-types

Пакет для спільного використання типів Prisma між мікросервісами NestJS.

## Як використовувати

```bash
import { Inject, Injectable, InternalServerErrorException, Logger } from '@nestjs/common';
import { ClientProxy } from '@nestjs/microservices';
import { firstValueFrom } from 'rxjs';
import { PrismaClientSvcMongo } from '@nsix/nsix-prisma-types';

@Injectable()
export class ProductMicroservice {
  //
  constructor(@Inject('CLIENT_SERVICE') private readonly clientService: ClientProxy) {
  }

  //
  private readonly log = new Logger();

  async find(options?: PrismaClientSvcMongo.Prisma.ClientProductFindManyArgs): Promise<PrismaClientSvcMongo.ClientProduct[]> {
    try {
      return await firstValueFrom<PrismaClientSvcMongo.ClientProduct[]>(
        this.clientService.send('client.product.find', options),
      );
    } catch (e) {
      this.log.error(e);
      throw new InternalServerErrorException(e);
    }
  }
  
  // Використання в любому сервіс коді
  async exampleUse() {
    const example = await this.find({
      where: {
        id: '0000000',
      },
    });
    
    return example.map(value => {
      return value.product.name_translate
    })
  }
}
```