Add onDeleteAction to RelationMetadata (#4100)

* Add onDeleteAction to relationMetadata

* rename to SET NULL

* fix migration

* fix migration

* fix after review
This commit is contained in:
Weiko
2024-02-22 10:27:15 +01:00
committed by GitHub
parent e69c462b70
commit 8425ce4987
21 changed files with 357 additions and 31 deletions

View File

@ -347,7 +347,7 @@ export class ObjectMetadataService extends TypeOrmQueryService<ObjectMetadataEnt
action: 'alter',
columns: [
{
action: WorkspaceMigrationColumnActionType.RELATION,
action: WorkspaceMigrationColumnActionType.CREATE_FOREIGN_KEY,
columnName: `${computeObjectTargetTable(
createdObjectMetadata,
)}Id`,
@ -378,7 +378,7 @@ export class ObjectMetadataService extends TypeOrmQueryService<ObjectMetadataEnt
action: 'alter',
columns: [
{
action: WorkspaceMigrationColumnActionType.RELATION,
action: WorkspaceMigrationColumnActionType.CREATE_FOREIGN_KEY,
columnName: `${computeObjectTargetTable(
createdObjectMetadata,
)}Id`,

View File

@ -20,6 +20,12 @@ export enum RelationMetadataType {
MANY_TO_MANY = 'MANY_TO_MANY',
}
export enum RelationOnDeleteAction {
CASCADE = 'CASCADE',
RESTRICT = 'RESTRICT',
SET_NULL = 'SET_NULL',
}
@Entity('relationMetadata')
export class RelationMetadataEntity implements RelationMetadataInterface {
@PrimaryGeneratedColumn('uuid')
@ -28,6 +34,14 @@ export class RelationMetadataEntity implements RelationMetadataInterface {
@Column({ nullable: false })
relationType: RelationMetadataType;
@Column({
nullable: false,
default: RelationOnDeleteAction.SET_NULL,
type: 'enum',
enum: RelationOnDeleteAction,
})
onDeleteAction: RelationOnDeleteAction;
@Column({ nullable: false, type: 'uuid' })
fromObjectMetadataId: string;

View File

@ -200,7 +200,7 @@ export class RelationMetadataService extends TypeOrmQueryService<RelationMetadat
action: 'alter',
columns: [
{
action: WorkspaceMigrationColumnActionType.RELATION,
action: WorkspaceMigrationColumnActionType.CREATE_FOREIGN_KEY,
columnName: foreignKeyColumnName,
referencedTableName: computeObjectTargetTable(
objectMetadataMap[relationMetadataInput.fromObjectMetadataId],

View File

@ -5,10 +5,13 @@ import {
PrimaryGeneratedColumn,
} from 'typeorm';
import { RelationOnDeleteAction } from 'src/metadata/relation-metadata/relation-metadata.entity';
export enum WorkspaceMigrationColumnActionType {
CREATE = 'CREATE',
ALTER = 'ALTER',
RELATION = 'RELATION',
CREATE_FOREIGN_KEY = 'CREATE_FOREIGN_KEY',
DROP_FOREIGN_KEY = 'DROP_FOREIGN_KEY',
DROP = 'DROP',
}
@ -34,12 +37,18 @@ export type WorkspaceMigrationColumnAlter = {
alteredColumnDefinition: WorkspaceMigrationColumnDefinition;
};
export type WorkspaceMigrationColumnRelation = {
action: WorkspaceMigrationColumnActionType.RELATION;
export type WorkspaceMigrationColumnCreateRelation = {
action: WorkspaceMigrationColumnActionType.CREATE_FOREIGN_KEY;
columnName: string;
referencedTableName: string;
referencedTableColumnName: string;
isUnique?: boolean;
onDelete?: RelationOnDeleteAction;
};
export type WorkspaceMigrationColumnDropRelation = {
action: WorkspaceMigrationColumnActionType.DROP_FOREIGN_KEY;
columnName: string;
};
export type WorkspaceMigrationColumnDrop = {
@ -52,7 +61,8 @@ export type WorkspaceMigrationColumnAction = {
} & (
| WorkspaceMigrationColumnCreate
| WorkspaceMigrationColumnAlter
| WorkspaceMigrationColumnRelation
| WorkspaceMigrationColumnCreateRelation
| WorkspaceMigrationColumnDropRelation
| WorkspaceMigrationColumnDrop
);