X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fcharging-station%2Fbroadcast-channel%2FChargingStationWorkerBroadcastChannel.ts;h=b5fc1cef13cc76b3f8e5250227485594c55e4210;hb=a575d48dc3c981068af8111ac4604cc6e29b6d6b;hp=c464f9ca11d33222925f2ee0bf52c19fa37f8948;hpb=4b9332afad3ebdd1c7b7e3e98dc1a9fcefebc04f;p=e-mobility-charging-stations-simulator.git diff --git a/src/charging-station/broadcast-channel/ChargingStationWorkerBroadcastChannel.ts b/src/charging-station/broadcast-channel/ChargingStationWorkerBroadcastChannel.ts index c464f9ca..b5fc1cef 100644 --- a/src/charging-station/broadcast-channel/ChargingStationWorkerBroadcastChannel.ts +++ b/src/charging-station/broadcast-channel/ChargingStationWorkerBroadcastChannel.ts @@ -1,6 +1,6 @@ import { secondsToMilliseconds } from 'date-fns' +import { isEmpty } from 'rambda' -import { WorkerBroadcastChannel } from './WorkerBroadcastChannel.js' import { BaseError, type OCPPError } from '../../exception/index.js' import { AuthorizationStatus, @@ -37,16 +37,11 @@ import { type StopTransactionRequest, type StopTransactionResponse } from '../../types/index.js' -import { - Constants, - convertToInt, - isAsyncFunction, - isEmptyObject, - logger -} from '../../utils/index.js' +import { Constants, convertToInt, isAsyncFunction, logger } from '../../utils/index.js' import type { ChargingStation } from '../ChargingStation.js' import { getConfigurationKey } from '../ConfigurationKeyUtils.js' import { buildMeterValue } from '../ocpp/index.js' +import { WorkerBroadcastChannel } from './WorkerBroadcastChannel.js' const moduleName = 'ChargingStationWorkerBroadcastChannel' @@ -86,6 +81,12 @@ export class ChargingStationWorkerBroadcastChannel extends WorkerBroadcastChanne await this.chargingStation.stop() } ], + [ + BroadcastChannelProcedureName.DELETE_CHARGING_STATIONS, + async (requestPayload?: BroadcastChannelRequestPayload) => { + await this.chargingStation.delete(requestPayload?.deleteConfiguration as boolean) + } + ], [ BroadcastChannelProcedureName.OPEN_CONNECTION, () => { @@ -285,11 +286,9 @@ export class ChargingStationWorkerBroadcastChannel extends WorkerBroadcastChanne return } let responsePayload: BroadcastChannelResponsePayload | undefined - // eslint-disable-next-line @typescript-eslint/no-invalid-void-type - let commandResponse: CommandResponse | void this.commandHandler(command, requestPayload) .then(commandResponse => { - if (commandResponse == null || isEmptyObject(commandResponse)) { + if (commandResponse == null || isEmpty(commandResponse)) { responsePayload = { hashId: this.chargingStation.stationInfo?.hashId, status: ResponseStatus.SUCCESS @@ -302,7 +301,7 @@ export class ChargingStationWorkerBroadcastChannel extends WorkerBroadcastChanne ) } }) - .catch(error => { + .catch((error: unknown) => { logger.error( `${this.chargingStation.logPrefix()} ${moduleName}.requestHandler: Handle request error:`, error @@ -312,12 +311,10 @@ export class ChargingStationWorkerBroadcastChannel extends WorkerBroadcastChanne status: ResponseStatus.FAILURE, command, requestPayload, - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - commandResponse: commandResponse!, errorMessage: (error as OCPPError).message, errorStack: (error as OCPPError).stack, errorDetails: (error as OCPPError).details - } + } satisfies BroadcastChannelResponsePayload }) .finally(() => { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion @@ -345,7 +342,10 @@ export class ChargingStationWorkerBroadcastChannel extends WorkerBroadcastChanne return await commandHandler(requestPayload) } return ( - commandHandler as (requestPayload?: BroadcastChannelRequestPayload) => CommandResponse + commandHandler as ( + requestPayload?: BroadcastChannelRequestPayload + // eslint-disable-next-line @typescript-eslint/no-invalid-void-type + ) => CommandResponse | void )(requestPayload) } throw new BaseError(`Unknown worker broadcast channel command: '${command}'`) @@ -415,7 +415,7 @@ export class ChargingStationWorkerBroadcastChannel extends WorkerBroadcastChanne return ResponseStatus.FAILURE case BroadcastChannelProcedureName.STATUS_NOTIFICATION: case BroadcastChannelProcedureName.METER_VALUES: - if (isEmptyObject(commandResponse)) { + if (isEmpty(commandResponse)) { return ResponseStatus.SUCCESS } return ResponseStatus.FAILURE