Fixed sort for Currency type (#6333)
Fixes : #6056 - Refactored the logic to get order by query variables for field types - Added a case for Currency field type
This commit is contained in:
@ -2,20 +2,23 @@ import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
||||
import { OrderBy } from '@/object-metadata/types/OrderBy';
|
||||
import { hasPositionField } from '@/object-metadata/utils/hasPositionField';
|
||||
import { RecordGqlOperationOrderBy } from '@/object-record/graphql/types/RecordGqlOperationOrderBy';
|
||||
import { Field, FieldMetadataType } from '~/generated/graphql';
|
||||
import { mapArrayToObject } from '~/utils/array/mapArrayToObject';
|
||||
import { isDefined } from '~/utils/isDefined';
|
||||
import { isUndefinedOrNull } from '~/utils/isUndefinedOrNull';
|
||||
|
||||
import { FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem';
|
||||
import { getOrderByForFieldMetadataType } from '@/object-metadata/utils/getOrderByForFieldMetadataType';
|
||||
import { Sort } from '../types/Sort';
|
||||
|
||||
export const turnSortsIntoOrderBy = (
|
||||
objectMetadataItem: ObjectMetadataItem,
|
||||
sorts: Sort[],
|
||||
): RecordGqlOperationOrderBy => {
|
||||
const fields: Pick<Field, 'id' | 'name' | 'type'>[] =
|
||||
const fields: Pick<FieldMetadataItem, 'id' | 'name' | 'type'>[] =
|
||||
objectMetadataItem?.fields ?? [];
|
||||
|
||||
const fieldsById = mapArrayToObject(fields, ({ id }) => id);
|
||||
|
||||
const sortsOrderBy = sorts
|
||||
.map((sort) => {
|
||||
const correspondingField = fieldsById[sort.fieldMetadataId];
|
||||
@ -32,26 +35,14 @@ export const turnSortsIntoOrderBy = (
|
||||
.filter(isDefined);
|
||||
|
||||
if (hasPositionField(objectMetadataItem)) {
|
||||
return [...sortsOrderBy, { position: 'AscNullsFirst' }];
|
||||
const positionOrderBy = [
|
||||
{
|
||||
position: 'AscNullsFirst',
|
||||
},
|
||||
] satisfies RecordGqlOperationOrderBy;
|
||||
|
||||
return [...sortsOrderBy, ...positionOrderBy].flat();
|
||||
}
|
||||
|
||||
return sortsOrderBy;
|
||||
};
|
||||
|
||||
const getOrderByForFieldMetadataType = (
|
||||
field: Pick<Field, 'id' | 'name' | 'type'>,
|
||||
direction: OrderBy,
|
||||
) => {
|
||||
switch (field.type) {
|
||||
case FieldMetadataType.FullName:
|
||||
return {
|
||||
[field.name]: {
|
||||
firstName: direction,
|
||||
lastName: direction,
|
||||
},
|
||||
};
|
||||
|
||||
default:
|
||||
return { [field.name]: direction };
|
||||
}
|
||||
return sortsOrderBy.flat();
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user