add messager presenter
This commit is contained in:
		
							parent
							
								
									1b7c131d1c
								
							
						
					
					
						commit
						067d8a79af
					
				| 
						 | 
				
			
			@ -8,6 +8,10 @@ Each item consists in :
 | 
			
		|||
-   a **key** : the key of the configuration item (a string)
 | 
			
		||||
-   a **value** : the value of the configuration item (always a string, each service must cast the value if needed)
 | 
			
		||||
 | 
			
		||||
This service centralizes the configuration items, but theoratically each service should "push" its items toward the configuration service.
 | 
			
		||||
 | 
			
		||||
Practically, it's the other way round as it's easier to use this configuration service as the single source of truth. This is why configuration items key and domain are immutable : services may use hardcoded domain-key pairs. Therefore, only values can be updated.
 | 
			
		||||
 | 
			
		||||
## Available domains
 | 
			
		||||
 | 
			
		||||
-   **USER** : user related configuration item
 | 
			
		||||
| 
						 | 
				
			
			@ -85,7 +89,7 @@ The app exposes the following [gRPC](https://grpc.io/) services :
 | 
			
		|||
    }
 | 
			
		||||
    ```
 | 
			
		||||
 | 
			
		||||
-   **Update** : update a configuration item
 | 
			
		||||
-   **Update** : update a configuration item value
 | 
			
		||||
 | 
			
		||||
    ```json
 | 
			
		||||
    {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,13 @@
 | 
			
		|||
import { AutoMap } from '@automapper/classes';
 | 
			
		||||
import { Domain } from '../../domain/dtos/domain.enum';
 | 
			
		||||
 | 
			
		||||
export class ConfigurationMessagerPresenter {
 | 
			
		||||
  @AutoMap()
 | 
			
		||||
  domain: Domain;
 | 
			
		||||
 | 
			
		||||
  @AutoMap()
 | 
			
		||||
  key: string;
 | 
			
		||||
 | 
			
		||||
  @AutoMap()
 | 
			
		||||
  value: string;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,6 +1,7 @@
 | 
			
		|||
import { Mapper } from '@automapper/core';
 | 
			
		||||
import { InjectMapper } from '@automapper/nestjs';
 | 
			
		||||
import { CommandHandler } from '@nestjs/cqrs';
 | 
			
		||||
import { ConfigurationMessagerPresenter } from '../../adapters/secondaries/configuration-messager.presenter';
 | 
			
		||||
import { ConfigurationMessager } from '../../adapters/secondaries/configuration.messager';
 | 
			
		||||
import { ConfigurationRepository } from '../../adapters/secondaries/configuration.repository';
 | 
			
		||||
import { LoggingMessager } from '../../adapters/secondaries/logging.messager';
 | 
			
		||||
| 
						 | 
				
			
			@ -28,7 +29,13 @@ export class CreateConfigurationUseCase {
 | 
			
		|||
      const configuration = await this._repository.create(entity);
 | 
			
		||||
      this._configurationMessager.publish(
 | 
			
		||||
        'create',
 | 
			
		||||
        JSON.stringify(configuration),
 | 
			
		||||
        JSON.stringify(
 | 
			
		||||
          this._mapper.map(
 | 
			
		||||
            configuration,
 | 
			
		||||
            Configuration,
 | 
			
		||||
            ConfigurationMessagerPresenter,
 | 
			
		||||
          ),
 | 
			
		||||
        ),
 | 
			
		||||
      );
 | 
			
		||||
      this._loggingMessager.publish(
 | 
			
		||||
        'configuration.create.info',
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,7 @@
 | 
			
		|||
import { Mapper } from '@automapper/core';
 | 
			
		||||
import { InjectMapper } from '@automapper/nestjs';
 | 
			
		||||
import { CommandHandler } from '@nestjs/cqrs';
 | 
			
		||||
import { ConfigurationMessagerPresenter } from '../../adapters/secondaries/configuration-messager.presenter';
 | 
			
		||||
import { ConfigurationMessager } from '../../adapters/secondaries/configuration.messager';
 | 
			
		||||
import { ConfigurationRepository } from '../../adapters/secondaries/configuration.repository';
 | 
			
		||||
import { LoggingMessager } from '../../adapters/secondaries/logging.messager';
 | 
			
		||||
| 
						 | 
				
			
			@ -31,7 +32,13 @@ export class UpdateConfigurationUseCase {
 | 
			
		|||
      );
 | 
			
		||||
      this._configurationMessager.publish(
 | 
			
		||||
        'update',
 | 
			
		||||
        JSON.stringify(command.updateConfigurationRequest),
 | 
			
		||||
        JSON.stringify(
 | 
			
		||||
          this._mapper.map(
 | 
			
		||||
            configuration,
 | 
			
		||||
            Configuration,
 | 
			
		||||
            ConfigurationMessagerPresenter,
 | 
			
		||||
          ),
 | 
			
		||||
        ),
 | 
			
		||||
      );
 | 
			
		||||
      this._loggingMessager.publish(
 | 
			
		||||
        'configuration.update.info',
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,6 +2,7 @@ import { createMap, forMember, ignore, Mapper } from '@automapper/core';
 | 
			
		|||
import { AutomapperProfile, InjectMapper } from '@automapper/nestjs';
 | 
			
		||||
import { Injectable } from '@nestjs/common';
 | 
			
		||||
import { ConfigurationPresenter } from '../adapters/primaries/configuration.presenter';
 | 
			
		||||
import { ConfigurationMessagerPresenter } from '../adapters/secondaries/configuration-messager.presenter';
 | 
			
		||||
import { CreateConfigurationRequest } from '../domain/dtos/create-configuration.request';
 | 
			
		||||
import { UpdateConfigurationRequest } from '../domain/dtos/update-configuration.request';
 | 
			
		||||
import { Configuration } from '../domain/entities/configuration';
 | 
			
		||||
| 
						 | 
				
			
			@ -24,6 +25,8 @@ export class ConfigurationProfile extends AutomapperProfile {
 | 
			
		|||
        Configuration,
 | 
			
		||||
        forMember((dest) => dest.uuid, ignore()),
 | 
			
		||||
      );
 | 
			
		||||
 | 
			
		||||
      createMap(mapper, Configuration, ConfigurationMessagerPresenter);
 | 
			
		||||
    };
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue