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:
@ -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`,
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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],
|
||||
|
||||
@ -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
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user