Fix view creation (#14254)

This commit is contained in:
Charles Bochet
2025-09-02 15:07:15 +02:00
committed by GitHub
parent 1652cd8815
commit 92c27b337a
3 changed files with 69 additions and 2 deletions
@@ -9,6 +9,7 @@ import {
Resolver,
} from '@nestjs/graphql';
import { isArray } from '@sniptt/guards';
import { isDefined } from 'twenty-shared/utils';
import { I18nService } from 'src/engine/core-modules/i18n/i18n.service';
@@ -16,6 +17,11 @@ import { type I18nContext } from 'src/engine/core-modules/i18n/types/i18n-contex
import { generateMessageId } from 'src/engine/core-modules/i18n/utils/generateMessageId';
import { CreateViewInput } from 'src/engine/core-modules/view/dtos/inputs/create-view.input';
import { UpdateViewInput } from 'src/engine/core-modules/view/dtos/inputs/update-view.input';
import { ViewFieldDTO } from 'src/engine/core-modules/view/dtos/view-field.dto';
import { ViewFilterGroupDTO } from 'src/engine/core-modules/view/dtos/view-filter-group.dto';
import { ViewFilterDTO } from 'src/engine/core-modules/view/dtos/view-filter.dto';
import { ViewGroupDTO } from 'src/engine/core-modules/view/dtos/view-group.dto';
import { ViewSortDTO } from 'src/engine/core-modules/view/dtos/view-sort.dto';
import { ViewDTO } from 'src/engine/core-modules/view/dtos/view.dto';
import { ViewFieldService } from 'src/engine/core-modules/view/services/view-field.service';
import { ViewFilterGroupService } from 'src/engine/core-modules/view/services/view-filter-group.service';
@@ -163,4 +169,64 @@ export class ViewResolver {
return isDefined(deletedView);
}
@ResolveField(() => [ViewFieldDTO])
async viewFields(
@Parent() view: ViewDTO,
@AuthWorkspace() workspace: Workspace,
) {
if (isArray(view.viewFields)) {
return view.viewFields;
}
return this.viewFieldService.findByViewId(workspace.id, view.id);
}
@ResolveField(() => [ViewFilterDTO])
async viewFilters(
@Parent() view: ViewDTO,
@AuthWorkspace() workspace: Workspace,
) {
if (isArray(view.viewFilters)) {
return view.viewFilters;
}
return this.viewFilterService.findByViewId(workspace.id, view.id);
}
@ResolveField(() => [ViewFilterGroupDTO])
async viewFilterGroups(
@Parent() view: ViewDTO,
@AuthWorkspace() workspace: Workspace,
) {
if (isArray(view.viewFilterGroups)) {
return view.viewFilterGroups;
}
return this.viewFilterGroupService.findByViewId(workspace.id, view.id);
}
@ResolveField(() => [ViewSortDTO])
async viewSorts(
@Parent() view: ViewDTO,
@AuthWorkspace() workspace: Workspace,
) {
if (isArray(view.viewSorts)) {
return view.viewSorts;
}
return this.viewSortService.findByViewId(workspace.id, view.id);
}
@ResolveField(() => [ViewGroupDTO])
async viewGroups(
@Parent() view: ViewDTO,
@AuthWorkspace() workspace: Workspace,
) {
if (isArray(view.viewGroups)) {
return view.viewGroups;
}
return this.viewGroupService.findByViewId(workspace.id, view.id);
}
}
@@ -12,6 +12,7 @@ import {
generateViewExceptionMessage,
generateViewUserFriendlyExceptionMessage,
} from 'src/engine/core-modules/view/exceptions/view.exception';
import { ViewDTO } from 'src/engine/core-modules/view/dtos/view.dto';
@Injectable()
export class ViewService {
@@ -80,7 +81,7 @@ export class ViewService {
return view || null;
}
async create(viewData: Partial<ViewEntity>): Promise<ViewEntity> {
async create(viewData: Partial<ViewEntity>): Promise<ViewDTO> {
if (!isDefined(viewData.workspaceId)) {
throw new ViewException(
generateViewExceptionMessage(
@@ -18,7 +18,7 @@ import {
type MessagingMessageListFetchJobData,
} from 'src/modules/messaging/message-import-manager/jobs/messaging-message-list-fetch.job';
export const MESSAGING_MESSAGE_LIST_FETCH_CRON_PATTERN = '*/2 * * * *';
export const MESSAGING_MESSAGE_LIST_FETCH_CRON_PATTERN = '*/5 * * * *';
@Processor(MessageQueue.cronQueue)
export class MessagingMessageListFetchCronJob {