import { Injectable, Inject, OnModuleInit } from '@nestjs/common'; import { ClientGrpc } from '@nestjs/microservices'; import { CreateApiKeyDto, CreateApiKeyResponseDto, ApiKeyBaseResponseDto } from './dto/api-key.dto'; import { RequestUser } from 'src/decorators/user.decorator'; import { DucClient } from '../duc/client.config'; import { ApiKeyWriteProtoService } from '@dadosfera/protospack-v2/dist/lib/Duc/interfaces/write-service'; import { lastValueFrom } from 'rxjs'; import { ProtoServices } from '@dadosfera/protospack-v2/dist/lib/Duc'; import { PackTheMetadata } from 'src/utils/PackTheMetadata'; @Injectable() export class ApiKeyService implements OnModuleInit { private apiKeyService: ApiKeyWriteProtoService; constructor( @Inject(DucClient.name) private readonly client: ClientGrpc, ) {} onModuleInit() { this.apiKeyService = this.client.getService(ProtoServices.ApiKeyWriteProtoService); } create(createApiKeyDto: CreateApiKeyDto, user: RequestUser): Promise { const metadata = PackTheMetadata(user); return lastValueFrom(this.apiKeyService.CreateApiKey({ permissions: createApiKeyDto.permissions }, metadata)); } async findAll(user: RequestUser): Promise { const metadata = PackTheMetadata(user); console.log(metadata) const data = await lastValueFrom(this.apiKeyService.ListApiKeys({}, metadata)); return data.api_keys; } async remove(id: string, user: RequestUser) { const metadata = PackTheMetadata(user); await lastValueFrom(this.apiKeyService.DeleteApiKey({ id }, metadata)); } async get(key: string) { const metadata = PackTheMetadata({}); return await lastValueFrom(this.apiKeyService.GetApiKey({ key }, metadata)); } }