X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Futils%2FConfiguration.ts;h=8f6e6c844069b6accf5b08a381a9baaff55bf5d6;hb=f0bede86574750d1d894d16a86ef63f83948e7a0;hp=021bce021bfd661becfc99dabc85c0d9b3dbd815;hpb=66a7748ddeda8c94d7562a1ce58d440319654a4c;p=e-mobility-charging-stations-simulator.git diff --git a/src/utils/Configuration.ts b/src/utils/Configuration.ts index 021bce02..8f6e6c84 100644 --- a/src/utils/Configuration.ts +++ b/src/utils/Configuration.ts @@ -15,7 +15,7 @@ import { logPrefix } from './ConfigurationUtils.js' import { Constants } from './Constants.js' -import { hasOwnProp, isCFEnvironment, isUndefined, once } from './Utils.js' +import { hasOwnProp, isCFEnvironment, once } from './Utils.js' import { ApplicationProtocol, type ConfigurationData, @@ -45,7 +45,7 @@ type ConfigurationSectionType = // eslint-disable-next-line @typescript-eslint/no-extraneous-class export class Configuration { - public static configurationChangeCallback: () => Promise + public static configurationChangeCallback?: () => Promise private static readonly configurationFile = join( dirname(fileURLToPath(import.meta.url)), @@ -90,9 +90,8 @@ export class Configuration { public static getSupervisionUrls (): string | string[] | undefined { if ( - !isUndefined( - Configuration.getConfigurationData()?.['supervisionURLs' as keyof ConfigurationData] - ) + Configuration.getConfigurationData()?.['supervisionURLs' as keyof ConfigurationData] !== + undefined ) { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion Configuration.getConfigurationData()!.supervisionUrls = Configuration.getConfigurationData()![ @@ -178,17 +177,31 @@ export class Configuration { } private static buildPerformanceStorageSection (): StorageConfiguration { - let storageConfiguration: StorageConfiguration = { - enabled: false, - type: StorageType.JSON_FILE, - uri: getDefaultPerformanceStorageUri(StorageType.JSON_FILE) + let storageConfiguration: StorageConfiguration + switch (Configuration.getConfigurationData()?.performanceStorage?.type) { + case StorageType.SQLITE: + storageConfiguration = { + enabled: false, + type: StorageType.SQLITE, + uri: getDefaultPerformanceStorageUri(StorageType.SQLITE) + } + break + case StorageType.JSON_FILE: + default: + storageConfiguration = { + enabled: false, + type: StorageType.JSON_FILE, + uri: getDefaultPerformanceStorageUri(StorageType.JSON_FILE) + } + break } if (hasOwnProp(Configuration.getConfigurationData(), ConfigurationSection.performanceStorage)) { storageConfiguration = { ...storageConfiguration, ...Configuration.getConfigurationData()?.performanceStorage, - ...(Configuration.getConfigurationData()?.performanceStorage?.type === - StorageType.JSON_FILE && + ...((Configuration.getConfigurationData()?.performanceStorage?.type === + StorageType.JSON_FILE || + Configuration.getConfigurationData()?.performanceStorage?.type === StorageType.SQLITE) && Configuration.getConfigurationData()?.performanceStorage?.uri != null && { uri: buildPerformanceUriFilePath( // eslint-disable-next-line @typescript-eslint/no-non-null-assertion @@ -318,9 +331,8 @@ export class Configuration { undefined, "Use 'stationTemplateUrls' instead" ) - !isUndefined( - Configuration.getConfigurationData()?.['stationTemplateURLs' as keyof ConfigurationData] - ) && + Configuration.getConfigurationData()?.['stationTemplateURLs' as keyof ConfigurationData] !== + undefined && // eslint-disable-next-line @typescript-eslint/no-non-null-assertion (Configuration.getConfigurationData()!.stationTemplateUrls = // eslint-disable-next-line @typescript-eslint/no-non-null-assertion @@ -329,7 +341,8 @@ export class Configuration { ] as StationTemplateUrl[]) Configuration.getConfigurationData()?.stationTemplateUrls.forEach( (stationTemplateUrl: StationTemplateUrl) => { - if (!isUndefined(stationTemplateUrl?.['numberOfStation' as keyof StationTemplateUrl])) { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (stationTemplateUrl['numberOfStation' as keyof StationTemplateUrl] !== undefined) { console.error( `${chalk.green(logPrefix())} ${chalk.red( `Deprecated configuration key 'numberOfStation' usage for template file '${stationTemplateUrl.file}' in 'stationTemplateUrls'. Use 'numberOfStations' instead` @@ -490,17 +503,14 @@ export class Configuration { ): void { if ( sectionName != null && - !isUndefined( - Configuration.getConfigurationData()?.[sectionName as keyof ConfigurationData] - ) && - !isUndefined( - ( - Configuration.getConfigurationData()?.[sectionName as keyof ConfigurationData] as Record< - string, - unknown - > - )?.[key] - ) + Configuration.getConfigurationData()?.[sectionName as keyof ConfigurationData] !== + undefined && + ( + Configuration.getConfigurationData()?.[sectionName as keyof ConfigurationData] as Record< + string, + unknown + > + )[key] !== undefined ) { console.error( `${chalk.green(logPrefix())} ${chalk.red( @@ -510,7 +520,7 @@ export class Configuration { )}` ) } else if ( - !isUndefined(Configuration.getConfigurationData()?.[key as keyof ConfigurationData]) + Configuration.getConfigurationData()?.[key as keyof ConfigurationData] !== undefined ) { console.error( `${chalk.green(logPrefix())} ${chalk.red( @@ -561,9 +571,9 @@ export class Configuration { ) delete Configuration.configurationData Configuration.configurationSectionCache.clear() - if (!isUndefined(Configuration.configurationChangeCallback)) { + if (Configuration.configurationChangeCallback !== undefined) { Configuration.configurationChangeCallback() - .catch((error) => { + .catch(error => { throw typeof error === 'string' ? new Error(error) : error }) .finally(() => {