Skip to content

Commit f87166b

Browse files
query building write functionality pt 2 (#259)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent 2c434d3 commit f87166b

19 files changed

+663
-861
lines changed

query-connector/src/app/backend/query-building.ts

+7-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
"use server";
22

33
import { getDbClient } from "./dbClient";
4-
import { NestedQuery, QueryDetailsResult } from "../queryBuilding/utils";
4+
import {
5+
NestedQuery,
6+
QueryDetailsResult,
7+
QueryUpdateResult,
8+
} from "../queryBuilding/utils";
59
import { DibbsValueSet } from "../constants";
610
import { DEFAULT_TIME_WINDOW } from "../utils";
711
import { randomUUID } from "crypto";
@@ -56,7 +60,7 @@ export async function saveCustomQuery(
5660
query_data = EXCLUDED.query_data,
5761
author = EXCLUDED.author,
5862
date_last_modified = EXCLUDED.date_last_modified
59-
RETURNING id, query_name;
63+
RETURNING id, query_name, CASE WHEN xmax = 0 THEN 'INSERT' ELSE 'UPDATE' END AS operation;
6064
`;
6165
const { queryDataInsert, conditionInsert } =
6266
formatQueryDataForDatabase(queryInput);
@@ -76,7 +80,7 @@ export async function saveCustomQuery(
7680
];
7781
const result = await dbClient.query(queryString, dataToWrite);
7882
if (result.rows.length > 0) {
79-
return result.rows as unknown as QueryDetailsResult[];
83+
return result.rows as QueryUpdateResult[];
8084
}
8185
console.error("Query save failed:", dataToWrite);
8286
return [];

query-connector/src/app/database-service.ts

+11-12
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ import {
1414
CustomUserQuery,
1515
} from "./query-building";
1616
import {
17-
CategoryToConditionToNameMap,
18-
ConditionIdToNameMap,
17+
CategoryToConditionArrayMap,
18+
ConditionsMap,
1919
} from "./queryBuilding/utils";
2020
import {
2121
CategoryStruct,
@@ -489,25 +489,24 @@ export async function getConditionsData() {
489489
const rows = result.rows;
490490

491491
// 1. Grouped by category with id:name pairs
492-
const categoryToConditionArrayMap: CategoryToConditionToNameMap = rows.reduce(
493-
(acc, row) => {
492+
const categoryToConditionNameArrayMap: CategoryToConditionArrayMap =
493+
rows.reduce((acc, row) => {
494494
const { category, id, name } = row;
495495
if (!acc[category]) {
496496
acc[category] = [];
497497
}
498-
acc[category].push({ [id]: name });
498+
acc[category].push({ id: id, name: name });
499499
return acc;
500-
},
501-
{} as CategoryToConditionToNameMap,
502-
);
500+
}, {} as CategoryToConditionArrayMap);
503501

504502
// 2. ID-Name mapping
505-
const conditionIdToNameMap: ConditionIdToNameMap = rows.reduce((acc, row) => {
506-
acc[row.id] = row.name;
503+
const conditionIdToNameMap: ConditionsMap = rows.reduce((acc, row) => {
504+
acc[row.id] = { name: row.name, category: row.category };
507505
return acc;
508-
}, {} as ConditionIdToNameMap);
506+
}, {} as ConditionsMap);
507+
509508
return {
510-
categoryToConditionArrayMap,
509+
categoryToConditionNameArrayMap,
511510
conditionIdToNameMap,
512511
} as const;
513512
}

query-connector/src/app/query/designSystem/drawer/Drawer.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ type DrawerProps = {
1212
onSave: () => void;
1313
onClose: () => void;
1414
onSearch?: () => void;
15-
hasChanges: boolean;
1615
};
1716

1817
/**

0 commit comments

Comments
 (0)