Skip to content

Commit 4fdfd97

Browse files
authored
Adjust sdk for using POST request (#56)
* chore: adjust sdk for using POST request Use "orderBy" instead of "sort" for POST query requests * chore: adjust sdk for using POST request Adapt new assembleOrderBy
1 parent 31f86f6 commit 4fdfd97

File tree

3 files changed

+53
-20
lines changed

3 files changed

+53
-20
lines changed

src/generator/01-base/static/queriesWithFilter.ts.txt

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -169,12 +169,20 @@ const _some = (
169169
const usePost = cfg?.usePost ?? globalConfig?.usePost
170170
const payload = {
171171
serializeNulls: query?.serializeNulls,
172-
additionalProperties: query?.properties?.join(','),
173-
properties: query?.select ? flattenSelect(query.select).join(',') : undefined,
174-
includeReferencedEntities: query?.include ? Object.keys(query.include).join(',') : undefined,
172+
additionalProperties: usePost ? query?.properties : query?.properties?.join(','),
173+
properties: query?.select
174+
? usePost
175+
? flattenSelect(query.select)
176+
: flattenSelect(query.select).join(',')
177+
: undefined,
178+
includeReferencedEntities: query?.include
179+
? usePost
180+
? Object.keys(query.include)
181+
: Object.keys(query.include).join(',')
182+
: undefined,
175183
...flattenOrFilter(query?.or),
176184
...flattenFilter(query?.filter),
177-
...flattenSort(query?.sort),
185+
...flattenSort(query?.sort, usePost),
178186
...query?.params,
179187
...query?.pagination
180188
}

src/generator/01-base/static/queriesWithQueryLanguage.ts.txt

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const flattenOrderBy = (orderBy: OrderBy<any>[] = []): string => {
1+
const flattenOrderBy = (orderBy: OrderBy<any>[] = []): string[] => {
22

33
const applyModifiers = (property: string, modifier: { TRIM?: boolean; LOWER?: boolean; LENGTH?: boolean }) => {
44
let result = property;
@@ -48,7 +48,7 @@ const flattenOrderBy = (orderBy: OrderBy<any>[] = []): string => {
4848
return `${property} ${sort}`;
4949
};
5050

51-
return orderBy.map(flattenSingle).join(', ');
51+
return orderBy.map(flattenSingle);
5252
}
5353

5454
export type ComparisonOperator =
@@ -345,12 +345,22 @@ const evaluateCaseExpression = <FilterProps, PropType>(
345345
: evaluateCaseExpression((exp.ELSE as CaseNode<FilterProps, PropType>).CASE, setModifiers, nestedPaths)
346346
})`;
347347

348-
const assembleOrderBy = (orderBy: OrderBy<any>[] = []): Record<string, string> => {
348+
const assembleOrderBy = (orderBy: OrderBy<any>[] = [], usePost?: boolean): Record<string, string | string[]> => {
349349
if(!orderBy.length) {
350350
return {}
351351
}
352-
const flattedOrderBy = flattenOrderBy(orderBy);
353-
return flattedOrderBy.length ? { orderBy: flattedOrderBy } : {};
352+
const flattedOrderByList = flattenOrderBy(orderBy);
353+
354+
if(!flattedOrderByList.length) {
355+
return {};
356+
}
357+
358+
if(usePost) {
359+
return { orderBy: flattedOrderByList };
360+
}
361+
362+
const flattedOrderBy = flattedOrderByList.join(',');
363+
return { orderBy: flattedOrderBy };
354364
}
355365

356366
const assembleFilterParam = (
@@ -404,16 +414,20 @@ const _some = (
404414
const usePost = cfg?.usePost ?? globalConfig?.usePost;
405415
const payload = {
406416
serializeNulls: query?.serializeNulls,
407-
additionalProperties: query?.properties?.join(','),
408-
properties: query?.select
409-
? flattenSelect(query.select).join(',')
417+
additionalProperties: usePost ? query?.properties : query?.properties?.join(','),
418+
properties: query?.select
419+
? usePost
420+
? flattenSelect(query.select)
421+
: flattenSelect(query.select).join(',')
410422
: undefined,
411423
includeReferencedEntities: query?.include
412-
? Object.keys(query.include).join(',')
413-
: undefined,
424+
? usePost
425+
? Object.keys(query.include)
426+
: Object.keys(query.include).join(',')
427+
: undefined,
414428
...assembleFilterParam(query?.where),
415-
...flattenSort(query?.sort),
416-
...assembleOrderBy(query?.orderBy),
429+
...flattenSort(query?.sort, usePost),
430+
...assembleOrderBy(query?.orderBy, usePost),
417431
...query?.params,
418432
...query?.pagination
419433
};

src/generator/01-base/static/utils.ts.txt

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ const flattenSelect = (obj: Select<any, any> = {}): string[] => {
1212
return entries;
1313
};
1414

15-
export const flattenSort = (obj: Sort<any>[] = []): { sort?: string } => {
15+
export const flattenSort = (obj: Sort<any>[] = [], usePost?: boolean):
16+
{ sort?: string } | { orderBy?: string[] } | Record<string, never> => {
1617
const flatten = (obj: Sort<any>, base = ''): string | undefined => {
1718
const [key, value] = Object.entries(obj ?? {})[0] ?? [];
1819

@@ -22,13 +23,23 @@ export const flattenSort = (obj: Sort<any>[] = []): { sort?: string } => {
2223
if (typeof value === 'object') {
2324
return flatten(value, path ? `${path}.` : '');
2425
} else if (['asc', 'desc'].includes(value)) {
25-
return `${value === 'desc' ? '-' : ''}${path}`;
26+
return `${!usePost && value === 'desc' ? '-' : ''}${path}${usePost && value === 'desc' ? ' desc' : ''}`;
2627
}
2728
}
2829

2930
return undefined;
3031
};
3132

32-
const sorts = obj.map((v) => flatten(v)).filter(Boolean);
33-
return sorts.length ? { sort: sorts.join(',') } : {};
33+
34+
const sorts = obj.map((v) => flatten(v)).filter((x): x is string => typeof x === 'string');
35+
36+
if (!sorts.length) {
37+
return {};
38+
}
39+
40+
if (usePost) {
41+
return { orderBy: sorts };
42+
} else {
43+
return { sort: sorts.join(',') };
44+
}
3445
};

0 commit comments

Comments
 (0)