|
1 | | -import { FieldMetadataType } from 'twenty-shared/types'; |
| 1 | +import { |
| 2 | + FieldMetadataType, |
| 3 | + compositeTypeDefinitions, |
| 4 | +} from 'twenty-shared/types'; |
2 | 5 | import { isDefined } from 'twenty-shared/utils'; |
3 | 6 |
|
4 | 7 | import { type ObjectRecordOrderBy } from 'src/engine/api/graphql/workspace-query-builder/interfaces/object-record.interface'; |
5 | 8 | import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; |
6 | 9 |
|
| 10 | +import { computeCompositeColumnName } from 'src/engine/metadata-modules/field-metadata/utils/compute-column-name.util'; |
7 | 11 | import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util'; |
8 | 12 | import { type FlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-maps.type'; |
9 | 13 | import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util'; |
10 | 14 | import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; |
11 | 15 | import { buildFieldMapsFromFlatObjectMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/build-field-maps-from-flat-object-metadata.util'; |
12 | 16 | import { isFlatFieldMetadataOfType } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-flat-field-metadata-of-type.util'; |
13 | 17 | import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type'; |
14 | | -import { pascalCase } from 'src/utils/pascal-case'; |
15 | 18 |
|
16 | 19 | export const buildColumnsToSelect = ({ |
17 | 20 | select, |
@@ -156,10 +159,28 @@ const extractColumnNamesFromOrderBy = ( |
156 | 159 | isCompositeFieldMetadataType(fieldMetadata.type) && |
157 | 160 | isDefined(orderByValue) |
158 | 161 | ) { |
| 162 | + const compositeType = compositeTypeDefinitions.get(fieldMetadata.type); |
| 163 | + |
| 164 | + if (!compositeType) { |
| 165 | + columnNames.push(fieldName); |
| 166 | + continue; |
| 167 | + } |
| 168 | + |
159 | 169 | const subFieldNames = Object.keys(orderByValue); |
160 | 170 |
|
161 | 171 | for (const subFieldName of subFieldNames) { |
162 | | - const columnName = `${fieldName}${pascalCase(subFieldName)}`; |
| 172 | + const compositeProperty = compositeType.properties.find( |
| 173 | + (property) => property.name === subFieldName, |
| 174 | + ); |
| 175 | + |
| 176 | + if (!compositeProperty) { |
| 177 | + continue; |
| 178 | + } |
| 179 | + |
| 180 | + const columnName = computeCompositeColumnName( |
| 181 | + fieldName, |
| 182 | + compositeProperty, |
| 183 | + ); |
163 | 184 |
|
164 | 185 | columnNames.push(columnName); |
165 | 186 | } |
|
0 commit comments