Skip to content

Commit

Permalink
feat(api): #3121 scdl integration script
Browse files Browse the repository at this point in the history
- refacto: change parseParams type, object instead of array
  • Loading branch information
461OceanBd committed Jan 29, 2025
1 parent 4ffaf5a commit 0d3221d
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 16 deletions.
17 changes: 14 additions & 3 deletions packages/api/src/@types/ScdlDataIntegration.ts
Original file line number Diff line number Diff line change
@@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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,
},
],
Expand Down Expand Up @@ -102,15 +102,15 @@ 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",
};

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",
Expand Down Expand Up @@ -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",
Expand Down
14 changes: 9 additions & 5 deletions packages/api/src/interfaces/scripts/ScdlDataIntegration.node.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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[] = [];
Expand All @@ -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) {
Expand All @@ -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})`);
Expand Down

0 comments on commit 0d3221d

Please sign in to comment.