4002 prevent user from creating twice the same blocklist item (#5213)

Closes #4002
This commit is contained in:
bosiraphael
2024-04-30 14:36:33 +02:00
committed by GitHub
parent 3a61c922f1
commit 7c605fc2f9
12 changed files with 297 additions and 53 deletions

View File

@ -4,6 +4,8 @@ import { WorkspaceQueryHook } from 'src/engine/api/graphql/workspace-query-runne
import { CalendarEventFindManyPreQueryHook } from 'src/modules/calendar/query-hooks/calendar-event/calendar-event-find-many.pre-query.hook';
import { CalendarEventFindOnePreQueryHook } from 'src/modules/calendar/query-hooks/calendar-event/calendar-event-find-one.pre-query-hook';
import { BlocklistCreateManyPreQueryHook } from 'src/modules/connected-account/query-hooks/blocklist/blocklist-create-many.pre-query.hook';
import { BlocklistUpdateManyPreQueryHook } from 'src/modules/connected-account/query-hooks/blocklist/blocklist-update-many.pre-query.hook';
import { BlocklistUpdateOnePreQueryHook } from 'src/modules/connected-account/query-hooks/blocklist/blocklist-update-one.pre-query.hook';
// TODO: move to a decorator
export const workspacePreQueryHooks: WorkspaceQueryHook = {
@ -17,5 +19,7 @@ export const workspacePreQueryHooks: WorkspaceQueryHook = {
},
blocklist: {
createMany: [BlocklistCreateManyPreQueryHook.name],
updateMany: [BlocklistUpdateManyPreQueryHook.name],
updateOne: [BlocklistUpdateOnePreQueryHook.name],
},
};

View File

@ -328,6 +328,14 @@ export class WorkspaceQueryRunnerService {
options,
);
await this.workspacePreQueryHookService.executePreHooks(
userId,
workspaceId,
objectMetadataItem.nameSingular,
'updateOne',
args,
);
const result = await this.execute(query, workspaceId);
const parsedResults = (
@ -363,7 +371,7 @@ export class WorkspaceQueryRunnerService {
args: UpdateManyResolverArgs<Record>,
options: WorkspaceQueryRunnerOptions,
): Promise<Record[] | undefined> {
const { workspaceId, objectMetadataItem } = options;
const { userId, workspaceId, objectMetadataItem } = options;
assertMutationNotOnRemoteObject(objectMetadataItem);
assertIsValidUuid(args.data.id);
@ -376,6 +384,14 @@ export class WorkspaceQueryRunnerService {
atMost: maximumRecordAffected,
});
await this.workspacePreQueryHookService.executePreHooks(
userId,
workspaceId,
objectMetadataItem.nameSingular,
'updateMany',
args,
);
const result = await this.execute(query, workspaceId);
const parsedResults = (