refactor: cleanup imports
[e-mobility-charging-stations-simulator.git] / src / charging-station / IdTagsCache.ts
index fd35fa8baaecca49d58924ef6d970a2da0672558..c0f4d2b9b1e655c80b8280eb60e92b29ffa17688 100644 (file)
@@ -1,13 +1,13 @@
-import fs from 'node:fs';
+import { type FSWatcher, readFileSync } from 'node:fs';
 
 import type { ChargingStation } from './ChargingStation';
 import { ChargingStationUtils } from './ChargingStationUtils';
 import { FileType, IdTagDistribution } from '../types';
-import { ErrorUtils, FileUtils, Utils, logger } from '../utils';
+import { Utils, handleFileException, logger, watchJsonFile } from '../utils';
 
 type IdTagsCacheValueType = {
   idTags: string[];
-  idTagsFileWatcher: fs.FSWatcher | undefined;
+  idTagsFileWatcher: FSWatcher | undefined;
 };
 
 export class IdTagsCache {
@@ -28,7 +28,7 @@ export class IdTagsCache {
   }
 
   /**
-   * Get one idtag from the cache given the distribution
+   * Gets one idtag from the cache given the distribution
    * Must be called after checking the cache is not an empty array
    *
    * @param distribution -
@@ -56,7 +56,7 @@ export class IdTagsCache {
   }
 
   /**
-   * Get all idtags from the cache
+   * Gets all idtags from the cache
    * Must be called after checking the cache is not an empty array
    *
    * @param file -
@@ -70,7 +70,7 @@ export class IdTagsCache {
   }
 
   public deleteIdTags(file: string): boolean {
-    return this.deleteIdTagsCache(file);
+    return this.deleteIdTagsCache(file) && this.deleteIdTagsCacheIndexes(file);
   }
 
   private getRandomIdTag(hashId: string, file: string): string {
@@ -116,7 +116,7 @@ export class IdTagsCache {
   private setIdTagsCache(file: string, idTags: string[]) {
     return this.idTagsCaches.set(file, {
       idTags,
-      idTagsFileWatcher: FileUtils.watchJsonFile(
+      idTagsFileWatcher: watchJsonFile(
         file,
         FileType.Authorization,
         this.logPrefix(file),
@@ -130,7 +130,7 @@ export class IdTagsCache {
               this.deleteIdTagsCache(file);
               this.deleteIdTagsCacheIndexes(file);
             } catch (error) {
-              ErrorUtils.handleFileException(
+              handleFileException(
                 file,
                 FileType.Authorization,
                 error as NodeJS.ErrnoException,
@@ -155,12 +155,14 @@ export class IdTagsCache {
     return this.idTagsCaches.delete(file);
   }
 
-  private deleteIdTagsCacheIndexes(file: string): void {
+  private deleteIdTagsCacheIndexes(file: string): boolean {
+    let deleted: boolean[];
     for (const [key] of this.idTagsCachesAddressableIndexes) {
       if (key.startsWith(file)) {
-        this.idTagsCachesAddressableIndexes.delete(key);
+        deleted.push(this.idTagsCachesAddressableIndexes.delete(key));
       }
     }
+    return !deleted.some((value) => value === false);
   }
 
   private getIdTagsCacheIndexesAddressableKey(prefix: string, uid: string): string {
@@ -170,9 +172,9 @@ export class IdTagsCache {
   private getIdTagsFromFile(file: string): string[] {
     if (Utils.isNotEmptyString(file)) {
       try {
-        return JSON.parse(fs.readFileSync(file, 'utf8')) as string[];
+        return JSON.parse(readFileSync(file, 'utf8')) as string[];
       } catch (error) {
-        ErrorUtils.handleFileException(
+        handleFileException(
           file,
           FileType.Authorization,
           error as NodeJS.ErrnoException,