From 0d3221dfd24c42cac21b3186ebf200dca8938756 Mon Sep 17 00:00:00 2001 From: Romain Mercier Date: Wed, 29 Jan 2025 12:47:56 +0100 Subject: [PATCH] feat(api): #3121 scdl integration script - refacto: change parseParams type, object instead of array --- packages/api/src/@types/ScdlDataIntegration.ts | 17 ++++++++++++++--- .../scripts/ScdlDataIntegration.node.test.ts | 16 ++++++++-------- .../scripts/ScdlDataIntegration.node.ts | 14 +++++++++----- 3 files changed, 31 insertions(+), 16 deletions(-) diff --git a/packages/api/src/@types/ScdlDataIntegration.ts b/packages/api/src/@types/ScdlDataIntegration.ts index 96bc7c108..64a1839bb 100644 --- a/packages/api/src/@types/ScdlDataIntegration.ts +++ b/packages/api/src/@types/ScdlDataIntegration.ts @@ -1,6 +1,17 @@ -type BaseScdlParseArgs = [producerSlug: string, exportDate: string]; -export type ScdlParseArgs = BaseScdlParseArgs & [delimiter?: string, quote?: string]; -export type ScdlParseXlsArgs = BaseScdlParseArgs & [pageName?: string, rowOffset?: number | string]; +export interface BaseScdlParseArgs { + producerSlug: string; + exportDate: string; +} + +export interface ScdlParseArgs extends BaseScdlParseArgs { + delimiter?: string; + quote?: string; +} + +export interface ScdlParseXlsArgs extends BaseScdlParseArgs { + pageName?: string; + rowOffset?: number | string; +} export interface ScdlFileProcessingConfig { name: string; diff --git a/packages/api/src/interfaces/scripts/ScdlDataIntegration.node.test.ts b/packages/api/src/interfaces/scripts/ScdlDataIntegration.node.test.ts index f10fe3ede..7d67e0eb9 100644 --- a/packages/api/src/interfaces/scripts/ScdlDataIntegration.node.test.ts +++ b/packages/api/src/interfaces/scripts/ScdlDataIntegration.node.test.ts @@ -19,21 +19,21 @@ const validConfigData: ScdlFileProcessingConfigList = { files: [ { name: "donnees-a-integrer1.csv", - parseParams: ["producerSlug1", "2025-01-13"], + parseParams: { producerSlug: "producerSlug1", exportDate: "2025-01-13" }, addProducer: true, producerName: "Test Producer 1", producerSiret: "12345678901", }, { name: "donnees-a-integrer2.csv", - parseParams: ["producerSlug2", "2025-01-14"], + parseParams: { producerSlug: "producerSlug2", exportDate: "2025-01-14" }, addProducer: true, producerName: "Test Producer 2", producerSiret: "12345678902", }, { name: "donnees-a-integrer3.csv", - parseParams: ["producerSlug2", "2025-01-15"], + parseParams: { producerSlug: "producerSlug2", exportDate: "2025-01-15" }, addProducer: false, }, ], @@ -102,7 +102,7 @@ describe("scdl data integration script", () => { describe("Test for processFile method", () => { const fileConfig = { name: "donnees-a-integrer1.csv", - parseParams: ["producerSlug1", "2025-01-13"] as ScdlParseArgs, + parseParams: { producerSlug: "producerSlug1", exportDate: "2025-01-13" } as ScdlParseArgs, addProducer: true, producerName: "Test Producer 1", producerSiret: "12345678901", @@ -110,7 +110,7 @@ describe("scdl data integration script", () => { const fileConfigWrongType = { name: "donnees-a-integrer1.doc", - parseParams: ["producerSlug1", "2025-01-13"] as ScdlParseXlsArgs, + parseParams: { producerSlug: "producerSlug1", exportDate: "2025-01-13" } as ScdlParseXlsArgs, addProducer: true, producerName: "Test Producer 1", producerSiret: "12345678901", @@ -256,21 +256,21 @@ describe("scdl data integration script", () => { files: [ { name: "donnees-a-integrer1.xlsx", - parseParams: ["producerSlug1", "2025-01-13"] as ScdlParseXlsArgs, + parseParams: { producerSlug: "producerSlug1", exportDate: "2025-01-13" } as ScdlParseXlsArgs, addProducer: true, producerName: "Test Producer 1", producerSiret: "12345678901", }, { name: "donnees-a-integrer2.csv", - parseParams: ["producerSlug2", "2025-01-14"] as ScdlParseArgs, + parseParams: { producerSlug: "producerSlug2", exportDate: "2025-01-14" } as ScdlParseArgs, addProducer: true, producerName: "Test Producer 2", producerSiret: "12345678902", }, { name: "donnees-a-integrer3.csv", - parseParams: ["producerSlug3", "2025-01-15"] as ScdlParseArgs, + parseParams: { producerSlug: "producerSlug3", exportDate: "2025-01-15" } as ScdlParseArgs, addProducer: true, producerName: "Test Producer 3", producerSiret: "12345678903", diff --git a/packages/api/src/interfaces/scripts/ScdlDataIntegration.node.ts b/packages/api/src/interfaces/scripts/ScdlDataIntegration.node.ts index d1e703f24..4e0fe507c 100644 --- a/packages/api/src/interfaces/scripts/ScdlDataIntegration.node.ts +++ b/packages/api/src/interfaces/scripts/ScdlDataIntegration.node.ts @@ -6,7 +6,12 @@ import { SCDL_FILE_PROCESSING_PATH, } from "../../configurations/scdlIntegration.conf"; import { FileExtensionEnum } from "../../@enums/FileExtensionEnum"; -import { ScdlFileProcessingConfig, ScdlFileProcessingConfigList } from "../../@types/ScdlDataIntegration"; +import { + ScdlFileProcessingConfig, + ScdlFileProcessingConfigList, + ScdlParseArgs, + ScdlParseXlsArgs, +} from "../../@types/ScdlDataIntegration"; const scdlCli = new ScdlCli(); const successList: string[] = []; @@ -33,7 +38,7 @@ export const loadConfig = (): ScdlFileProcessingConfigList => { export const processFile = async (fileInfo: ScdlFileProcessingConfig) => { const { name, parseParams, addProducer, producerName, producerSiret } = fileInfo; const dirPath = path.resolve(SCDL_FILE_PROCESSING_PATH); - const [producerSlug, exportDate, ...optionalParams] = parseParams; + const { producerSlug, exportDate, ...optionalParams } = parseParams; try { if (addProducer && producerName && producerSiret) { @@ -53,11 +58,10 @@ export const processFile = async (fileInfo: ScdlFileProcessingConfig) => { const fileType = path.extname(name).slice(1).toLowerCase(); const filePath = path.join(dirPath, name); if (fileType === FileExtensionEnum.CSV) { - const delimiter = optionalParams[0]; - const quote = typeof optionalParams[1] === "string" ? optionalParams[1] : undefined; + const { delimiter, quote } = optionalParams as ScdlParseArgs; await scdlCli.parse(filePath, producerSlug, exportDate, delimiter, quote); } else if (fileType === FileExtensionEnum.XLS || fileType === FileExtensionEnum.XLSX) { - const [pageName = undefined, rowOffset = undefined] = optionalParams; + const { pageName, rowOffset } = optionalParams as ScdlParseXlsArgs; await scdlCli.parseXls(filePath, producerSlug, exportDate, pageName, rowOffset); } else { console.error(`❌ Unsupported file type : ${name} (type: ${fileType})`);