mirror of
https://github.com/dadosfera/maestro.git
synced 2026-09-13 09:44:47 +00:00
51 lines
1.8 KiB
TypeScript
51 lines
1.8 KiB
TypeScript
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<ApiKeyWriteProtoService>(ProtoServices.ApiKeyWriteProtoService);
|
|
}
|
|
|
|
create(createApiKeyDto: CreateApiKeyDto, user: RequestUser): Promise<CreateApiKeyResponseDto> {
|
|
const metadata = PackTheMetadata(user);
|
|
|
|
return lastValueFrom(this.apiKeyService.CreateApiKey({
|
|
permissions: createApiKeyDto.permissions
|
|
}, metadata));
|
|
}
|
|
|
|
async findAll(user: RequestUser): Promise<ApiKeyBaseResponseDto[]> {
|
|
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));
|
|
}
|
|
}
|