Merge branch 'fixEnums' into 'main'
fix enum values See merge request v3/services/configuration!1
This commit is contained in:
commit
85a03f23d8
|
@ -1,9 +1,9 @@
|
|||
# SERVICE
|
||||
SERVICE_URL=0.0.0.0
|
||||
SERVICE_PORT=5001
|
||||
SERVICE_PORT=5003
|
||||
|
||||
# PRISMA
|
||||
DATABASE_URL="postgresql://user:user@db:5432/user?schema=public"
|
||||
DATABASE_URL="postgresql://configuration:configuration@db:5432/configuration?schema=public"
|
||||
|
||||
# RABBIT MQ
|
||||
RMQ_URI=amqp://broker:5672
|
||||
|
|
|
@ -37,6 +37,7 @@
|
|||
"@types/supertest": "^2.0.11",
|
||||
"@typescript-eslint/eslint-plugin": "^5.0.0",
|
||||
"@typescript-eslint/parser": "^5.0.0",
|
||||
"dotenv-cli": "^7.0.0",
|
||||
"eslint": "^8.0.1",
|
||||
"eslint-config-prettier": "^8.3.0",
|
||||
"eslint-plugin-prettier": "^4.0.0",
|
||||
|
@ -3744,6 +3745,30 @@
|
|||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/dotenv-cli": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/dotenv-cli/-/dotenv-cli-7.0.0.tgz",
|
||||
"integrity": "sha512-XfMzVdpdDTRnlcgvFLg3lSyiLXqFxS4tH7RbK5IxkC4XIUuxPyrGoDufkfLjy/dA28EILzEu+mros6h8aQmyGg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"cross-spawn": "^7.0.3",
|
||||
"dotenv": "^16.0.0",
|
||||
"dotenv-expand": "^10.0.0",
|
||||
"minimist": "^1.2.6"
|
||||
},
|
||||
"bin": {
|
||||
"dotenv": "cli.js"
|
||||
}
|
||||
},
|
||||
"node_modules/dotenv-cli/node_modules/dotenv-expand": {
|
||||
"version": "10.0.0",
|
||||
"resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz",
|
||||
"integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/dotenv-expand": {
|
||||
"version": "8.0.3",
|
||||
"resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-8.0.3.tgz",
|
||||
|
@ -11492,6 +11517,26 @@
|
|||
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.1.tgz",
|
||||
"integrity": "sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ=="
|
||||
},
|
||||
"dotenv-cli": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/dotenv-cli/-/dotenv-cli-7.0.0.tgz",
|
||||
"integrity": "sha512-XfMzVdpdDTRnlcgvFLg3lSyiLXqFxS4tH7RbK5IxkC4XIUuxPyrGoDufkfLjy/dA28EILzEu+mros6h8aQmyGg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"cross-spawn": "^7.0.3",
|
||||
"dotenv": "^16.0.0",
|
||||
"dotenv-expand": "^10.0.0",
|
||||
"minimist": "^1.2.6"
|
||||
},
|
||||
"dependencies": {
|
||||
"dotenv-expand": {
|
||||
"version": "10.0.0",
|
||||
"resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz",
|
||||
"integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"dotenv-expand": {
|
||||
"version": "8.0.3",
|
||||
"resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-8.0.3.tgz",
|
||||
|
|
|
@ -55,6 +55,7 @@
|
|||
"@types/supertest": "^2.0.11",
|
||||
"@typescript-eslint/eslint-plugin": "^5.0.0",
|
||||
"@typescript-eslint/parser": "^5.0.0",
|
||||
"dotenv-cli": "^7.0.0",
|
||||
"eslint": "^8.0.1",
|
||||
"eslint-config-prettier": "^8.3.0",
|
||||
"eslint-plugin-prettier": "^4.0.0",
|
||||
|
|
|
@ -1,6 +1,16 @@
|
|||
import { AutoMap } from '@automapper/classes';
|
||||
import { Domain } from '../../domain/dtos/domain.enum';
|
||||
|
||||
export class ConfigurationPresenter {
|
||||
@AutoMap()
|
||||
uuid: string;
|
||||
|
||||
@AutoMap()
|
||||
domain: Domain;
|
||||
|
||||
@AutoMap()
|
||||
key: string;
|
||||
|
||||
@AutoMap()
|
||||
value: string;
|
||||
}
|
||||
|
|
|
@ -16,15 +16,11 @@ message ConfigurationByUuid {
|
|||
|
||||
message Configuration {
|
||||
string uuid = 1;
|
||||
Domain domain = 2;
|
||||
string domain = 2;
|
||||
string key = 3;
|
||||
string value = 4;
|
||||
}
|
||||
|
||||
enum Domain {
|
||||
user = 0;
|
||||
}
|
||||
|
||||
message ConfigurationFilter {
|
||||
optional int32 page = 1;
|
||||
optional int32 perPage = 2;
|
||||
|
|
|
@ -1,14 +1,27 @@
|
|||
import { Module } from '@nestjs/common';
|
||||
import { CqrsModule } from '@nestjs/cqrs';
|
||||
import { DatabaseModule } from '../database/database.module';
|
||||
import { ConfigRepository } from '../database/src/domain/configuration.repository';
|
||||
import { ConfigurationController } from './adapters/primaries/configuration.controller';
|
||||
import { ConfigurationRepository } from './adapters/secondaries/configuration.repository';
|
||||
import { CreateConfigurationUseCase } from './domain/usecases/create-configuration.usecase';
|
||||
import { DeleteConfigurationUseCase } from './domain/usecases/delete-configuration.usecase';
|
||||
import { FindAllConfigurationsUseCase } from './domain/usecases/find-all-configurations.usecase';
|
||||
import { FindConfigurationByUuidUseCase } from './domain/usecases/find-configuration-by-uuid.usecase';
|
||||
import { UpdateConfigurationUseCase } from './domain/usecases/update-configuration.usecase';
|
||||
import { ConfigurationProfile } from './mappers/configuration.profile';
|
||||
|
||||
@Module({
|
||||
imports: [DatabaseModule, CqrsModule],
|
||||
exports: [],
|
||||
controllers: [ConfigurationController],
|
||||
providers: [ConfigurationProfile, ConfigRepository],
|
||||
providers: [
|
||||
ConfigurationProfile,
|
||||
ConfigurationRepository,
|
||||
FindAllConfigurationsUseCase,
|
||||
FindConfigurationByUuidUseCase,
|
||||
CreateConfigurationUseCase,
|
||||
UpdateConfigurationUseCase,
|
||||
DeleteConfigurationUseCase,
|
||||
],
|
||||
})
|
||||
export class ConfigurationModule {}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { AutoMap } from '@automapper/classes';
|
||||
import { IsEmail, IsNotEmpty, IsOptional, IsString } from 'class-validator';
|
||||
import { IsEnum, IsNotEmpty, IsOptional, IsString } from 'class-validator';
|
||||
import { Domain } from './domain.enum';
|
||||
|
||||
export class CreateConfigurationRequest {
|
||||
|
@ -8,7 +8,7 @@ export class CreateConfigurationRequest {
|
|||
@AutoMap()
|
||||
uuid?: string;
|
||||
|
||||
@IsString()
|
||||
@IsEnum(Domain)
|
||||
@IsNotEmpty()
|
||||
@AutoMap()
|
||||
domain: Domain;
|
||||
|
@ -18,7 +18,7 @@ export class CreateConfigurationRequest {
|
|||
@AutoMap()
|
||||
key: string;
|
||||
|
||||
@IsEmail()
|
||||
@IsString()
|
||||
@IsNotEmpty()
|
||||
@AutoMap()
|
||||
value: string;
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
export enum Domain {
|
||||
user = 'USER',
|
||||
USER = 'USER',
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { AutoMap } from '@automapper/classes';
|
||||
import { IsNotEmpty, IsOptional, IsString } from 'class-validator';
|
||||
import { IsEnum, IsNotEmpty, IsOptional, IsString } from 'class-validator';
|
||||
import { Domain } from './domain.enum';
|
||||
|
||||
export class UpdateConfigurationRequest {
|
||||
|
@ -8,7 +8,7 @@ export class UpdateConfigurationRequest {
|
|||
@AutoMap()
|
||||
uuid: string;
|
||||
|
||||
@IsString()
|
||||
@IsEnum(Domain)
|
||||
@IsOptional()
|
||||
@AutoMap()
|
||||
domain?: Domain;
|
||||
|
|
|
@ -14,7 +14,7 @@ describe('ConfigurationRepository', () => {
|
|||
for (let i = 0; i < nbToCreate; i++) {
|
||||
await prismaService.configuration.create({
|
||||
data: {
|
||||
domain: Domain.user,
|
||||
domain: Domain.USER,
|
||||
key: `key-${i}`,
|
||||
value: `key-${i}`,
|
||||
},
|
||||
|
@ -70,7 +70,7 @@ describe('ConfigurationRepository', () => {
|
|||
it('should return a configuration', async () => {
|
||||
const configurationToFind = await prismaService.configuration.create({
|
||||
data: {
|
||||
domain: Domain.user,
|
||||
domain: Domain.USER,
|
||||
key: 'key1',
|
||||
value: 'value1',
|
||||
},
|
||||
|
@ -94,14 +94,14 @@ describe('ConfigurationRepository', () => {
|
|||
it('should return a configuration according to its domain and key', async () => {
|
||||
const configurationToFind = await prismaService.configuration.create({
|
||||
data: {
|
||||
domain: Domain.user,
|
||||
domain: Domain.USER,
|
||||
key: 'key1',
|
||||
value: 'value1',
|
||||
},
|
||||
});
|
||||
|
||||
const configuration = await configurationRepository.findOne({
|
||||
domain: Domain.user,
|
||||
domain: Domain.USER,
|
||||
key: 'key1',
|
||||
});
|
||||
|
||||
|
@ -110,7 +110,7 @@ describe('ConfigurationRepository', () => {
|
|||
|
||||
it('should return null with unknown domain and key', async () => {
|
||||
const configuration = await configurationRepository.findOne({
|
||||
domain: Domain.user,
|
||||
domain: Domain.USER,
|
||||
key: 'key1',
|
||||
});
|
||||
expect(configuration).toBeNull();
|
||||
|
@ -122,7 +122,7 @@ describe('ConfigurationRepository', () => {
|
|||
const beforeCount = await prismaService.configuration.count();
|
||||
|
||||
const configurationToCreate: Configuration = new Configuration();
|
||||
configurationToCreate.domain = Domain.user;
|
||||
configurationToCreate.domain = Domain.USER;
|
||||
configurationToCreate.key = 'key1';
|
||||
configurationToCreate.value = 'value1';
|
||||
const configuration = await configurationRepository.create(
|
||||
|
@ -140,7 +140,7 @@ describe('ConfigurationRepository', () => {
|
|||
it('should update configuration key', async () => {
|
||||
const configurationToUpdate = await prismaService.configuration.create({
|
||||
data: {
|
||||
domain: Domain.user,
|
||||
domain: Domain.USER,
|
||||
key: 'key1',
|
||||
value: 'value1',
|
||||
},
|
||||
|
@ -174,7 +174,7 @@ describe('ConfigurationRepository', () => {
|
|||
it('should delete a configuration', async () => {
|
||||
const configurationToRemove = await prismaService.configuration.create({
|
||||
data: {
|
||||
domain: Domain.user,
|
||||
domain: Domain.USER,
|
||||
key: 'key1',
|
||||
value: 'value1',
|
||||
},
|
||||
|
|
|
@ -10,7 +10,7 @@ import { CreateConfigurationUseCase } from '../../domain/usecases/create-configu
|
|||
import { ConfigurationProfile } from '../../mappers/configuration.profile';
|
||||
|
||||
const newConfigurationRequest: CreateConfigurationRequest = {
|
||||
domain: Domain.user,
|
||||
domain: Domain.USER,
|
||||
key: 'minAge',
|
||||
value: '16',
|
||||
};
|
||||
|
|
|
@ -7,19 +7,19 @@ import { DeleteConfigurationUseCase } from '../../domain/usecases/delete-configu
|
|||
const mockConfigurations = [
|
||||
{
|
||||
uuid: 'bb281075-1b98-4456-89d6-c643d3044a91',
|
||||
domain: Domain.user,
|
||||
domain: Domain.USER,
|
||||
key: 'key1',
|
||||
value: 'value1',
|
||||
},
|
||||
{
|
||||
uuid: 'bb281075-1b98-4456-89d6-c643d3044a92',
|
||||
domain: Domain.user,
|
||||
domain: Domain.USER,
|
||||
key: 'key2',
|
||||
value: 'value2',
|
||||
},
|
||||
{
|
||||
uuid: 'bb281075-1b98-4456-89d6-c643d3044a93',
|
||||
domain: Domain.user,
|
||||
domain: Domain.USER,
|
||||
key: 'key3',
|
||||
value: 'value3',
|
||||
},
|
||||
|
|
|
@ -16,19 +16,19 @@ const findAllConfigurationsQuery: FindAllConfigurationsQuery =
|
|||
const mockConfigurations = [
|
||||
{
|
||||
uuid: 'bb281075-1b98-4456-89d6-c643d3044a91',
|
||||
domain: Domain.user,
|
||||
domain: Domain.USER,
|
||||
key: 'key1',
|
||||
value: 'value1',
|
||||
},
|
||||
{
|
||||
uuid: 'bb281075-1b98-4456-89d6-c643d3044a92',
|
||||
domain: Domain.user,
|
||||
domain: Domain.USER,
|
||||
key: 'key2',
|
||||
value: 'value2',
|
||||
},
|
||||
{
|
||||
uuid: 'bb281075-1b98-4456-89d6-c643d3044a93',
|
||||
domain: Domain.user,
|
||||
domain: Domain.USER,
|
||||
key: 'key3',
|
||||
value: 'value3',
|
||||
},
|
||||
|
|
|
@ -8,7 +8,7 @@ import { FindConfigurationByUuidQuery } from '../../queries/find-configuration-b
|
|||
|
||||
const mockConfiguration = {
|
||||
uuid: 'bb281075-1b98-4456-89d6-c643d3044a91',
|
||||
domain: Domain.user,
|
||||
domain: Domain.USER,
|
||||
key: 'key1',
|
||||
value: 'value1',
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue