Add custom routes to migration v2 (#14846)

## Context
Add routes to migration V2
- Resolvers
- Service v2
- Builder
- Validator
- Action runner

Next PR: Add to twenty-cli to sync routes with serverless
This commit is contained in:
Weiko
2025-10-03 00:20:21 +02:00
committed by GitHub
parent dcfae3821c
commit 0b60aa4249
80 changed files with 2242 additions and 151 deletions
@@ -1,19 +1,32 @@
import { Field, InputType } from '@nestjs/graphql';
import { IsNotEmpty, IsObject, IsUUID } from 'class-validator';
import { Type } from 'class-transformer';
import { IsNotEmpty, IsObject, IsUUID, ValidateNested } from 'class-validator';
import GraphQLJSON from 'graphql-type-json';
import { DatabaseEventTriggerSettings } from 'src/engine/metadata-modules/database-event-trigger/entities/database-event-trigger.entity';
@InputType()
export class UpdateDatabaseEventTriggerInput {
@IsUUID()
@IsNotEmpty()
@Field()
id: string;
class UpdateDatabaseEventTriggerInputUpdates {
@IsObject()
@IsNotEmpty()
@Field(() => GraphQLJSON)
settings: DatabaseEventTriggerSettings;
}
@InputType()
export class UpdateDatabaseEventTriggerInput {
@IsUUID()
@IsNotEmpty()
@Field({
description: 'The id of the database event trigger to update',
})
id: string;
@Type(() => UpdateDatabaseEventTriggerInputUpdates)
@ValidateNested()
@Field(() => UpdateDatabaseEventTriggerInputUpdates, {
description: 'The database event trigger updates',
})
update: UpdateDatabaseEventTriggerInputUpdates;
}
@@ -43,8 +43,8 @@ export class DatabaseEventTrigger
@JoinColumn({ name: 'serverlessFunctionId' })
serverlessFunction: Relation<ServerlessFunctionEntity>;
@Column({ nullable: true, type: 'uuid' })
serverlessFunctionId: string | null;
@Column({ nullable: false, type: 'uuid' })
serverlessFunctionId: string;
@Column({ nullable: false, type: 'uuid' })
workspaceId: string;
@@ -9,4 +9,6 @@ export class DatabaseEventTriggerException extends CustomException {
export enum DatabaseEventTriggerExceptionCode {
DATABASE_EVENT_TRIGGER_NOT_FOUND = 'DATABASE_EVENT_TRIGGER_NOT_FOUND',
DATABASE_EVENT_TRIGGER_ALREADY_EXIST = 'DATABASE_EVENT_TRIGGER_ALREADY_EXIST',
DATABASE_EVENT_TRIGGER_INVALID = 'DATABASE_EVENT_TRIGGER_INVALID',
SERVERLESS_FUNCTION_NOT_FOUND = 'SERVERLESS_FUNCTION_NOT_FOUND',
}
@@ -36,7 +36,10 @@ export class DatabaseEventTriggerV2Service {
await this.flatEntityMapsCacheService.getOrRecomputeManyOrAllFlatEntityMaps(
{
workspaceId,
flatEntities: ['flatDatabaseEventTriggerMaps'],
flatEntities: [
'flatDatabaseEventTriggerMaps',
'flatServerlessFunctionMaps',
],
},
);
@@ -66,6 +69,10 @@ export class DatabaseEventTriggerV2Service {
to: toFlatDatabaseEventTriggerMaps,
},
},
dependencyAllFlatEntityMaps: {
flatServerlessFunctionMaps:
flatEntityMaps.flatServerlessFunctionMaps,
},
buildOptions: {
isSystemBuild: false,
inferDeletionFromMissingEntities: false,
@@ -105,7 +112,10 @@ export class DatabaseEventTriggerV2Service {
await this.flatEntityMapsCacheService.getOrRecomputeManyOrAllFlatEntityMaps(
{
workspaceId,
flatEntities: ['flatDatabaseEventTriggerMaps'],
flatEntities: [
'flatDatabaseEventTriggerMaps',
'flatServerlessFunctionMaps',
],
},
);
@@ -140,6 +150,10 @@ export class DatabaseEventTriggerV2Service {
to: toFlatDatabaseEventTriggerMaps,
},
},
dependencyAllFlatEntityMaps: {
flatServerlessFunctionMaps:
flatEntityMaps.flatServerlessFunctionMaps,
},
buildOptions: {
isSystemBuild: false,
inferDeletionFromMissingEntities: false,
@@ -180,11 +194,15 @@ export class DatabaseEventTriggerV2Service {
}): Promise<FlatDatabaseEventTrigger> {
const {
flatDatabaseEventTriggerMaps: existingFlatDatabaseEventTriggerMaps,
flatServerlessFunctionMaps: existingFlatServerlessFunctionMaps,
} =
await this.flatEntityMapsCacheService.getOrRecomputeManyOrAllFlatEntityMaps(
{
workspaceId,
flatEntities: ['flatDatabaseEventTriggerMaps'],
flatEntities: [
'flatDatabaseEventTriggerMaps',
'flatServerlessFunctionMaps',
],
},
);
@@ -219,6 +237,9 @@ export class DatabaseEventTriggerV2Service {
to: toFlatDatabaseEventTriggerMaps,
},
},
dependencyAllFlatEntityMaps: {
flatServerlessFunctionMaps: existingFlatServerlessFunctionMaps,
},
buildOptions: {
isSystemBuild: false,
inferDeletionFromMissingEntities: true,
@@ -26,7 +26,7 @@ export const fromUpdateDatabaseEventTriggerInputToFlatDatabaseEventTriggerToUpda
return {
...existingFlatDatabaseEventTrigger,
settings: updateDatabaseEventTriggerInput.settings,
settings: updateDatabaseEventTriggerInput.update.settings,
updatedAt: new Date(),
};
};