f65783f900
Closes https://github.com/twentyhq/core-team-issues/issues/1628 From a technical perspective, we can add more ordering options, such as the ability to combine two sorts on the X axis, e.g. sort by Close date ASC and then by Sum ASC, which will sort groups that have the same close date between themselves depending on their sum ASC. @Bonapara could you provide design if you want this to be implemented (quite short on our hand i think - maybe in V2 though)? https://github.com/user-attachments/assets/6ef21fe1-9d8f-43c0-bfa2-f6fc6341cacf --------- Co-authored-by: ehconitin <nitinkoche03@gmail.com>
64 lines
2.4 KiB
TypeScript
64 lines
2.4 KiB
TypeScript
import { Injectable } from '@nestjs/common';
|
|
|
|
import { type ObjectRecord } from 'twenty-shared/types';
|
|
import { type FindOptionsRelations, type ObjectLiteral } from 'typeorm';
|
|
|
|
import { ProcessNestedRelationsV2Helper } from 'src/engine/api/graphql/graphql-query-runner/helpers/process-nested-relations-v2.helper';
|
|
import { type AggregationField } from 'src/engine/api/graphql/workspace-schema-builder/utils/get-available-aggregations-from-object-fields.util';
|
|
import { type AuthContext } from 'src/engine/core-modules/auth/types/auth-context.type';
|
|
import { type ObjectMetadataItemWithFieldMaps } from 'src/engine/metadata-modules/types/object-metadata-item-with-field-maps';
|
|
import { type ObjectMetadataMaps } from 'src/engine/metadata-modules/types/object-metadata-maps';
|
|
import { type WorkspaceDataSource } from 'src/engine/twenty-orm/datasource/workspace.datasource';
|
|
|
|
@Injectable()
|
|
export class ProcessNestedRelationsHelper {
|
|
constructor(
|
|
private readonly processNestedRelationsV2Helper: ProcessNestedRelationsV2Helper,
|
|
) {}
|
|
|
|
public async processNestedRelations<T extends ObjectRecord = ObjectRecord>({
|
|
objectMetadataMaps,
|
|
parentObjectMetadataItem,
|
|
parentObjectRecords,
|
|
parentObjectRecordsAggregatedValues = {},
|
|
relations,
|
|
aggregate = {},
|
|
limit,
|
|
authContext,
|
|
workspaceDataSource,
|
|
shouldBypassPermissionChecks,
|
|
roleId,
|
|
selectedFields,
|
|
}: {
|
|
objectMetadataMaps: ObjectMetadataMaps;
|
|
parentObjectMetadataItem: ObjectMetadataItemWithFieldMaps;
|
|
parentObjectRecords: T[];
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
parentObjectRecordsAggregatedValues?: Record<string, any>;
|
|
relations: Record<string, FindOptionsRelations<ObjectLiteral>>;
|
|
aggregate?: Record<string, AggregationField>;
|
|
limit: number;
|
|
authContext: AuthContext;
|
|
workspaceDataSource: WorkspaceDataSource;
|
|
shouldBypassPermissionChecks: boolean;
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
selectedFields: Record<string, any>;
|
|
roleId?: string;
|
|
}): Promise<void> {
|
|
return this.processNestedRelationsV2Helper.processNestedRelations({
|
|
objectMetadataMaps,
|
|
parentObjectMetadataItem,
|
|
parentObjectRecords,
|
|
parentObjectRecordsAggregatedValues,
|
|
relations,
|
|
aggregate,
|
|
limit,
|
|
authContext,
|
|
workspaceDataSource,
|
|
shouldBypassPermissionChecks,
|
|
roleId,
|
|
selectedFields,
|
|
});
|
|
}
|
|
}
|