import { type ObjectsPermissions } from 'twenty-shared/types'; import { type ObjectLiteral } from 'typeorm'; import { type QueryExpressionMap } from 'typeorm/query-builder/QueryExpressionMap'; import { type FeatureFlagMap } from 'src/engine/core-modules/feature-flag/interfaces/feature-flag-map.interface'; import { type WorkspaceInternalContext } from 'src/engine/twenty-orm/interfaces/workspace-internal-context.interface'; import { type WorkspaceAuthContext } from 'src/engine/core-modules/auth/types/workspace-auth-context.type'; import { type WorkspaceDeleteQueryBuilder } from 'src/engine/twenty-orm/repository/workspace-delete-query-builder'; import { type WorkspaceInsertQueryBuilder } from 'src/engine/twenty-orm/repository/workspace-insert-query-builder'; import { WorkspaceSelectQueryBuilder } from 'src/engine/twenty-orm/repository/workspace-select-query-builder'; import { type WorkspaceSoftDeleteQueryBuilder } from 'src/engine/twenty-orm/repository/workspace-soft-delete-query-builder'; import { type WorkspaceUpdateQueryBuilder } from 'src/engine/twenty-orm/repository/workspace-update-query-builder'; type EventSelectQueryBuilderFactoryArgs = { queryBuilder: | WorkspaceUpdateQueryBuilder | WorkspaceSoftDeleteQueryBuilder | WorkspaceDeleteQueryBuilder | WorkspaceInsertQueryBuilder; authContext: WorkspaceAuthContext; internalContext: WorkspaceInternalContext; featureFlagMap: FeatureFlagMap; expressionMap: QueryExpressionMap; objectRecordsPermissions: ObjectsPermissions; }; export const computeEventSelectQueryBuilder = ({ queryBuilder, authContext, featureFlagMap, internalContext, expressionMap, objectRecordsPermissions, }: EventSelectQueryBuilderFactoryArgs): WorkspaceSelectQueryBuilder => { const eventSelectQueryBuilder = new WorkspaceSelectQueryBuilder( queryBuilder as unknown as WorkspaceSelectQueryBuilder, objectRecordsPermissions, internalContext, true, authContext, featureFlagMap, ); eventSelectQueryBuilder.expressionMap.wheres = expressionMap.wheres; eventSelectQueryBuilder.expressionMap.aliases = expressionMap.aliases; eventSelectQueryBuilder.setParameters(expressionMap.parameters); if ( eventSelectQueryBuilder.expressionMap.selects.length === 0 && eventSelectQueryBuilder.expressionMap.mainAlias ) { eventSelectQueryBuilder.expressionMap.selects = [ { selection: eventSelectQueryBuilder.expressionMap.mainAlias.name }, ]; } return eventSelectQueryBuilder; };