refactor: refine error type in helper
[e-mobility-charging-stations-simulator.git] / src / utils / ChargingStationConfigurationUtils.ts
CommitLineData
179ed367
JB
1import { Utils } from './Utils';
2import type { ChargingStation } from '../charging-station';
3import type {
4 ChargingStationAutomaticTransactionGeneratorConfiguration,
5 ConnectorStatus,
6 EvseStatusConfiguration,
09989bb8 7 EvseStatusWorkerType,
179ed367
JB
8} from '../types';
9
10export const buildChargingStationAutomaticTransactionGeneratorConfiguration = (
11 chargingStation: ChargingStation
12): ChargingStationAutomaticTransactionGeneratorConfiguration => {
13 return {
14 automaticTransactionGenerator: chargingStation.getAutomaticTransactionGeneratorConfiguration(),
15 ...(!Utils.isNullOrUndefined(
16 chargingStation.automaticTransactionGenerator?.connectorsStatus
17 ) && {
18 automaticTransactionGeneratorStatuses: [
19 ...chargingStation.automaticTransactionGenerator.connectorsStatus.values(),
20 ],
21 }),
22 };
23};
24
25export const buildConnectorsStatus = (chargingStation: ChargingStation): ConnectorStatus[] => {
26 return [...chargingStation.connectors.values()].map(
27 // eslint-disable-next-line @typescript-eslint/no-unused-vars
28 ({ transactionSetInterval, ...connectorStatusRest }) => connectorStatusRest
29 );
30};
31
32export const enum OutputFormat {
33 configuration = 'configuration',
09989bb8 34 worker = 'worker',
179ed367
JB
35}
36
37export const buildEvsesStatus = (
38 chargingStation: ChargingStation,
39 outputFormat: OutputFormat = OutputFormat.configuration
09989bb8 40): (EvseStatusWorkerType | EvseStatusConfiguration)[] => {
179ed367
JB
41 return [...chargingStation.evses.values()].map((evseStatus) => {
42 const connectorsStatus = [...evseStatus.connectors.values()].map(
43 // eslint-disable-next-line @typescript-eslint/no-unused-vars
44 ({ transactionSetInterval, ...connectorStatusRest }) => connectorStatusRest
45 );
09989bb8
JB
46 let status: EvseStatusConfiguration;
47 switch (outputFormat) {
48 case OutputFormat.worker:
49 return {
50 ...evseStatus,
51 connectors: connectorsStatus,
52 };
53 case OutputFormat.configuration:
54 status = {
55 ...evseStatus,
56 connectorsStatus,
57 };
58 delete (status as EvseStatusWorkerType).connectors;
59 return status;
179ed367
JB
60 }
61 });
62};