Skip to content

Commit d7c4ab7

Browse files
authored
Merge branch 'main' into migrate-cedar-policy-groups-to-signals
2 parents 2e79f6e + 1c989d8 commit d7c4ab7

36 files changed

Lines changed: 769 additions & 190 deletions

.github/workflows/code-quality.yml

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
name: Code quality
22

33
on:
4-
push:
54
pull_request:
65

76
jobs:
@@ -14,6 +13,7 @@ jobs:
1413
uses: actions/checkout@v5
1514
with:
1615
persist-credentials: false
16+
fetch-depth: 0
1717
- name: Setup Node.js
1818
uses: actions/setup-node@v4
1919
with:
@@ -25,5 +25,16 @@ jobs:
2525
uses: biomejs/setup-biome@v2
2626
with:
2727
version: 2.4.0
28+
- name: Get changed backend files
29+
id: changed
30+
run: |
31+
files=$(git diff --name-only --diff-filter=ACMR \
32+
"${{ github.event.pull_request.base.sha }}...${{ github.event.pull_request.head.sha }}" \
33+
-- 'backend/' \
34+
| grep -E '\.(ts|tsx|js|jsx|json)$' \
35+
| tr '\n' ' ' || true)
36+
echo "files=$files" >> "$GITHUB_OUTPUT"
37+
echo "Changed backend files: $files"
2838
- name: Run Biome
29-
run: biome ci --formatter-enabled=false --assist-enabled=false .
39+
if: steps.changed.outputs.files != ''
40+
run: biome ci --formatter-enabled=false --assist-enabled=false ${{ steps.changed.outputs.files }}

backend/src/entities/table/application/data-structures/found-table-rows.ds.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ export class FilteringFieldsDs {
127127
field: string;
128128

129129
@ApiProperty()
130-
value: string;
130+
value: unknown;
131131
}
132132

133133
export class AutocompleteFieldsDs {

backend/src/entities/table/table-datastructures.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export class FilteringFieldsDs {
1313
criteria: FilterCriteriaEnum;
1414

1515
@ApiProperty()
16-
value: string;
16+
value: unknown;
1717
}
1818

1919
export class ForeignKeyDSInfo {

backend/src/entities/table/table.controller.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import {
33
Controller,
44
Delete,
55
Get,
6+
HttpCode,
67
HttpException,
78
HttpStatus,
89
Inject,
@@ -248,6 +249,7 @@ export class TableController {
248249
@ApiQuery({ name: 'search', required: false })
249250
@UseGuards(TableReadGuard)
250251
@Timeout(TimeoutDefaults.EXTENDED)
252+
@HttpCode(HttpStatus.OK)
251253
@Post('/table/rows/find/:connectionId')
252254
async findAllRowsWithBodyFilter(
253255
@QueryTableName() tableName: string,

backend/src/entities/table/utils/find-filtering-fields.util.ts

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,32 @@ export function findFilteringFieldsUtil(
8787
value: filters[`f_${fieldname}__empty`],
8888
});
8989
}
90+
91+
if (isObjectPropertyExists(filters, `f_${fieldname}__in`)) {
92+
const rawValue = filters[`f_${fieldname}__in`];
93+
filteringItems.push({
94+
field: fieldname,
95+
criteria: FilterCriteriaEnum.in,
96+
value: Array.isArray(rawValue)
97+
? rawValue
98+
: String(rawValue)
99+
.split(',')
100+
.map((v) => v.trim()),
101+
});
102+
}
103+
104+
if (isObjectPropertyExists(filters, `f_${fieldname}__between`)) {
105+
const rawValue = filters[`f_${fieldname}__between`];
106+
filteringItems.push({
107+
field: fieldname,
108+
criteria: FilterCriteriaEnum.between,
109+
value: Array.isArray(rawValue)
110+
? rawValue
111+
: String(rawValue)
112+
.split(',')
113+
.map((v) => v.trim()),
114+
});
115+
}
90116
}
91117
return filteringItems;
92118
}
@@ -99,7 +125,7 @@ export function parseFilteringFieldsFromBodyData(
99125
const rowNames = tableStructure.map((el) => el.column_name);
100126
rowNames.forEach((rowName) => {
101127
if (isObjectPropertyExists(filtersDataFromBody, rowName)) {
102-
const filterData = filtersDataFromBody[rowName] as Record<string, string>;
128+
const filterData = filtersDataFromBody[rowName] as Record<string, unknown>;
103129
for (const key in filterData) {
104130
if (!validateStringWithEnum(key, FilterCriteriaEnum)) {
105131
throw new Error(`Invalid filter criteria: "${key}".`);

backend/src/enums/filter-criteria.enum.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,6 @@ export enum FilterCriteriaEnum {
99
icontains = 'icontains',
1010
eq = 'eq',
1111
empty = 'empty',
12+
in = 'in',
13+
between = 'between',
1214
}

backend/test/ava-tests/complex-table-tests/complex-ibmdb2-table-e2e.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -844,7 +844,7 @@ test.serial(`POST /table/rows/find/:connectionId - Should return filtered rows f
844844
.set('Content-Type', 'application/json')
845845
.set('Accept', 'application/json');
846846

847-
t.is(findRowsResponse.status, 201);
847+
t.is(findRowsResponse.status, 200);
848848
const findRowsRO = JSON.parse(findRowsResponse.text);
849849
t.truthy(findRowsRO.rows);
850850
t.is(findRowsRO.rows.length, 1);
@@ -886,7 +886,7 @@ test.serial(
886886
.set('Content-Type', 'application/json')
887887
.set('Accept', 'application/json');
888888

889-
t.is(findRowsResponse.status, 201);
889+
t.is(findRowsResponse.status, 200);
890890
const findRowsRO = JSON.parse(findRowsResponse.text);
891891
t.truthy(findRowsRO.rows);
892892
for (const row of findRowsRO.rows) {

backend/test/ava-tests/complex-table-tests/complex-mssql-table-e2e.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -844,7 +844,7 @@ test.serial(`POST /table/rows/find/:connectionId - Should return filtered rows f
844844
.set('Content-Type', 'application/json')
845845
.set('Accept', 'application/json');
846846

847-
t.is(findRowsResponse.status, 201);
847+
t.is(findRowsResponse.status, 200);
848848
const findRowsRO = JSON.parse(findRowsResponse.text);
849849
t.truthy(findRowsRO.rows);
850850
t.is(findRowsRO.rows.length, 1);
@@ -886,7 +886,7 @@ test.serial(
886886
.set('Content-Type', 'application/json')
887887
.set('Accept', 'application/json');
888888

889-
t.is(findRowsResponse.status, 201);
889+
t.is(findRowsResponse.status, 200);
890890
const findRowsRO = JSON.parse(findRowsResponse.text);
891891
t.truthy(findRowsRO.rows);
892892
for (const row of findRowsRO.rows) {

backend/test/ava-tests/complex-table-tests/complex-mysql-table-e2e.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -844,7 +844,7 @@ test.serial(`POST /table/rows/find/:connectionId - Should return filtered rows f
844844
.set('Content-Type', 'application/json')
845845
.set('Accept', 'application/json');
846846

847-
t.is(findRowsResponse.status, 201);
847+
t.is(findRowsResponse.status, 200);
848848
const findRowsRO = JSON.parse(findRowsResponse.text);
849849
t.truthy(findRowsRO.rows);
850850
t.is(findRowsRO.rows.length, 1);
@@ -886,7 +886,7 @@ test.serial(
886886
.set('Content-Type', 'application/json')
887887
.set('Accept', 'application/json');
888888

889-
t.is(findRowsResponse.status, 201);
889+
t.is(findRowsResponse.status, 200);
890890
const findRowsRO = JSON.parse(findRowsResponse.text);
891891
t.truthy(findRowsRO.rows);
892892
for (const row of findRowsRO.rows) {

backend/test/ava-tests/complex-table-tests/complex-oracle-table-e2e.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -844,7 +844,7 @@ test.serial(`POST /table/rows/find/:connectionId - Should return filtered rows f
844844
.set('Content-Type', 'application/json')
845845
.set('Accept', 'application/json');
846846

847-
t.is(findRowsResponse.status, 201);
847+
t.is(findRowsResponse.status, 200);
848848
const findRowsRO = JSON.parse(findRowsResponse.text);
849849
t.truthy(findRowsRO.rows);
850850
t.is(findRowsRO.rows.length, 1);
@@ -886,7 +886,7 @@ test.serial(
886886
.set('Content-Type', 'application/json')
887887
.set('Accept', 'application/json');
888888

889-
t.is(findRowsResponse.status, 201);
889+
t.is(findRowsResponse.status, 200);
890890
const findRowsRO = JSON.parse(findRowsResponse.text);
891891
t.truthy(findRowsRO.rows);
892892
for (const row of findRowsRO.rows) {

0 commit comments

Comments
 (0)