From 4fd083324c3edc688356ea8f2701cd0a08389a1e Mon Sep 17 00:00:00 2001 From: Fidel Elie <38261325+FidelElie@users.noreply.github.com> Date: Mon, 28 Apr 2025 11:09:01 +0100 Subject: [PATCH] Add trim to query normalisation and clearer regex --- src/utils.spec.ts | 15 +++++++++++++++ src/utils.ts | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/utils.spec.ts b/src/utils.spec.ts index 7bb9afc0..052b4ac7 100644 --- a/src/utils.spec.ts +++ b/src/utils.spec.ts @@ -47,6 +47,21 @@ describe("normaliseQuery", () => { "SELECT campaign.name FROM campaign LIMIT 10" ); }); + + it("will properly handle multiline query statements", () => { + const query = ` + SELECT + asset_group.id, + metrics.conversions_value, + metrics.conversions + FROM asset_group_asset + WHERE campaign.advertising_channel_type = 'PERFORMANCE_MAX'; + `; + + expect(normaliseQuery(query)).toEqual( + "SELECT asset_group.id, metrics.conversions_value, metrics.conversions FROM asset_group_asset WHERE campaign.advertising_channel_type = 'PERFORMANCE_MAX';" + ); + }); }); describe("capitaliseFirstLetter", () => { diff --git a/src/utils.ts b/src/utils.ts index 61830494..db1df5d4 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -31,7 +31,7 @@ export function toMicros(value: number): number { * const normalisedQuery = normaliseQuery(gaqlQuery) // "SELECT campaign.name FROM campaign LIMIT 10" */ export function normaliseQuery(query: string): string { - return `${query.replace(/\s{2,}/g, " ")}`; + return query.replace(/\s+/g, " ").trim(); } /**