mirror of
https://github.com/dadosfera/maestro.git
synced 2026-11-10 23:59:09 +00:00
FEAT: create new route to open data iniciative
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
import { ApiProperty } from "@nestjs/swagger";
|
||||
|
||||
export class CreateUserOpenDataDTO {
|
||||
@ApiProperty()
|
||||
firstName: string;
|
||||
@ApiProperty()
|
||||
lastName: string;
|
||||
@ApiProperty()
|
||||
email: string;
|
||||
@ApiProperty()
|
||||
organization: string;
|
||||
@ApiProperty()
|
||||
enquiryType: string;
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
import { Test, TestingModule } from '@nestjs/testing';
|
||||
import { OpenDataController } from './open-data.controller';
|
||||
|
||||
describe('OpenDataController', () => {
|
||||
let controller: OpenDataController;
|
||||
|
||||
beforeEach(async () => {
|
||||
const module: TestingModule = await Test.createTestingModule({
|
||||
controllers: [OpenDataController],
|
||||
}).compile();
|
||||
|
||||
controller = module.get<OpenDataController>(OpenDataController);
|
||||
});
|
||||
|
||||
it('should be defined', () => {
|
||||
expect(controller).toBeDefined();
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,47 @@
|
||||
import DadosferaLogger from '@dadosfera/dadosfera-logs';
|
||||
import { Body, Controller, Inject, Post, UseFilters } from '@nestjs/common';
|
||||
import { ApiCreatedResponse, ApiHeaders, ApiTags } from '@nestjs/swagger';
|
||||
import { ApiInternalOnlyController } from 'src/decorators/swagger.decorator';
|
||||
import { GrpcToHttpExceptionFilter } from 'src/error/grpc-to-http-exception.filter';
|
||||
import { LanguageEnum } from 'src/utils/languages.enum';
|
||||
import { UsersService } from '../users/users.service';
|
||||
import { Language } from 'src/decorators/language.decorator';
|
||||
import { CreateUserOpenDataDTO } from './dto/create-user';
|
||||
import { OpenDataService } from './open-data.service';
|
||||
|
||||
@Controller('open-data')
|
||||
@ApiInternalOnlyController()
|
||||
@ApiTags('OpenData')
|
||||
@ApiHeaders([{ name: 'dadosfera-lang', enum: LanguageEnum, required: false }])
|
||||
@UseFilters(GrpcToHttpExceptionFilter)
|
||||
export class OpenDataController {
|
||||
logger: DadosferaLogger;
|
||||
|
||||
constructor(
|
||||
@Inject(DadosferaLogger)
|
||||
dadosferaLogger: DadosferaLogger,
|
||||
private openDataService: OpenDataService,
|
||||
) {
|
||||
this.logger = dadosferaLogger.logger;
|
||||
}
|
||||
|
||||
@Post("/sharing-ocean-data")
|
||||
@ApiCreatedResponse()
|
||||
async createUser(
|
||||
@Body() body: CreateUserOpenDataDTO
|
||||
) {
|
||||
const OPENDATA_PUBLIC_USERS_GROUP_ID = "401573bb-334f-44b2-b30e-88d4cea31ae9";
|
||||
const OPENDATA_CUSTOMER_ID = "f239718a-a271-4ef9-ae7e-02a2f0f3aa6e";
|
||||
const roles = [OPENDATA_PUBLIC_USERS_GROUP_ID];
|
||||
|
||||
this.logger.info('createUser for open data' + JSON.stringify({ body }));
|
||||
try {
|
||||
await this.openDataService.createUser(OPENDATA_CUSTOMER_ID, body, roles);
|
||||
return "success"
|
||||
} catch (e) {
|
||||
return e;
|
||||
}
|
||||
// return ;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
import { Module } from '@nestjs/common';
|
||||
import { OpenDataController } from './open-data.controller';
|
||||
import { UsersService } from '../users/users.service';
|
||||
import { ClientsModule } from '@nestjs/microservices'
|
||||
import { DucClient } from '../duc/client.config';
|
||||
import DadosferaLogger from '@dadosfera/dadosfera-logs';
|
||||
import { RolesModule } from '../roles/roles.module';
|
||||
import { PermissionsModule } from '../permissions/permissions.module';
|
||||
import { OpenDataService } from './open-data.service';
|
||||
|
||||
const client = new DucClient();
|
||||
|
||||
@Module({
|
||||
controllers: [OpenDataController],
|
||||
imports: [
|
||||
ClientsModule.register([client.providerOptions]),
|
||||
RolesModule,
|
||||
// PermissionsModule,
|
||||
],
|
||||
providers: [DadosferaLogger, UsersService, OpenDataService]
|
||||
})
|
||||
export class OpenDataModule {}
|
||||
@@ -0,0 +1,18 @@
|
||||
import { Test, TestingModule } from '@nestjs/testing';
|
||||
import { OpenDataService } from './open-data.service';
|
||||
|
||||
describe('OpenDataService', () => {
|
||||
let service: OpenDataService;
|
||||
|
||||
beforeEach(async () => {
|
||||
const module: TestingModule = await Test.createTestingModule({
|
||||
providers: [OpenDataService],
|
||||
}).compile();
|
||||
|
||||
service = module.get<OpenDataService>(OpenDataService);
|
||||
});
|
||||
|
||||
it('should be defined', () => {
|
||||
expect(service).toBeDefined();
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,50 @@
|
||||
import { Inject, Injectable, OnModuleInit } from '@nestjs/common';
|
||||
import { lastValueFrom } from 'rxjs';
|
||||
import { CreateUserOpenDataDTO } from './dto/create-user';
|
||||
import DadosferaLogger from '@dadosfera/dadosfera-logs';
|
||||
import { UsersProtoService } from '@dadosfera/protospack-v2/dist/lib/Duc/interfaces/write-service';
|
||||
import { DucClient } from '../duc/client.config';
|
||||
import { ClientGrpc } from '@nestjs/microservices';
|
||||
import { ProtoServices } from '@dadosfera/protospack-v2/dist/lib/Duc';
|
||||
|
||||
@Injectable()
|
||||
export class OpenDataService implements OnModuleInit {
|
||||
logger: DadosferaLogger;
|
||||
|
||||
private usersClientService: UsersProtoService;
|
||||
constructor(
|
||||
@Inject(DadosferaLogger)
|
||||
private dadosferaLogger: DadosferaLogger,
|
||||
@Inject(DucClient.name)
|
||||
private readonly grpcClient: ClientGrpc,
|
||||
) {
|
||||
this.logger = dadosferaLogger.logger;
|
||||
}
|
||||
|
||||
onModuleInit() {
|
||||
this.usersClientService = this.grpcClient.getService(
|
||||
ProtoServices.UsersProtoService,
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
async createUser(customerId: string, data: CreateUserOpenDataDTO, roleIds: string[]) {
|
||||
const body = {
|
||||
email: data.email,
|
||||
name: data.firstName + " " + data.lastName,
|
||||
department: data.organization,
|
||||
jobTitle: data.enquiryType,
|
||||
customerId: customerId,
|
||||
roleIds: roleIds
|
||||
}
|
||||
|
||||
try {
|
||||
await lastValueFrom(
|
||||
this.usersClientService.SimpleUserCreate(body),
|
||||
);
|
||||
return "User created";
|
||||
} catch(err) {
|
||||
return err;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user