From 608a38489fdc90b91507621f7a986978cef39793 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 25 Apr 2023 12:34:50 +0100 Subject: [PATCH] Export undefineds as empty values in csv, instead of empty strings --- packages/server/src/api/controllers/row/internal.ts | 5 ++++- packages/server/src/api/controllers/row/utils.ts | 4 ++-- packages/server/src/api/controllers/view/exporters.ts | 4 +++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/packages/server/src/api/controllers/row/internal.ts b/packages/server/src/api/controllers/row/internal.ts index a0bebc2490..cc1450060c 100644 --- a/packages/server/src/api/controllers/row/internal.ts +++ b/packages/server/src/api/controllers/row/internal.ts @@ -37,7 +37,7 @@ import { Table, } from "@budibase/types" -const { cleanExportRows } = require("./utils") +import { cleanExportRows } from "./utils" const CALCULATION_TYPES = { SUM: "sum", @@ -391,6 +391,9 @@ export async function exportRows(ctx: UserCtx) { const table = await db.get(ctx.params.tableId) const rowIds = ctx.request.body.rows let format = ctx.query.format + if (typeof format !== "string") { + ctx.throw(400, "Format parameter is not valid") + } const { columns, query } = ctx.request.body let result diff --git a/packages/server/src/api/controllers/row/utils.ts b/packages/server/src/api/controllers/row/utils.ts index e96a4fe6ee..a7c467ea61 100644 --- a/packages/server/src/api/controllers/row/utils.ts +++ b/packages/server/src/api/controllers/row/utils.ts @@ -137,8 +137,8 @@ export function cleanExportRows( delete schema[column] }) - // Intended to avoid 'undefined' in export if (format === Format.CSV) { + // Intended to append empty values in export const schemaKeys = Object.keys(schema) for (let key of schemaKeys) { if (columns?.length && columns.indexOf(key) > 0) { @@ -146,7 +146,7 @@ export function cleanExportRows( } for (let row of cleanRows) { if (row[key] == null) { - row[key] = "" + row[key] = undefined } } } diff --git a/packages/server/src/api/controllers/view/exporters.ts b/packages/server/src/api/controllers/view/exporters.ts index 4d927bca27..ec0aca95a9 100644 --- a/packages/server/src/api/controllers/view/exporters.ts +++ b/packages/server/src/api/controllers/view/exporters.ts @@ -10,7 +10,9 @@ export function csv(headers: string[], rows: Row[]) { val = typeof val === "object" && !(val instanceof Date) ? `"${JSON.stringify(val).replace(/"/g, "'")}"` - : `"${val}"` + : val !== undefined + ? `"${val}"` + : "" return val.trim() }) .join(",")}`