feat: refactor folder structure (#4498)
* feat: wip refactor folder structure * Fix * fix position --------- Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
@ -0,0 +1,97 @@
|
||||
import {
|
||||
Column,
|
||||
CreateDateColumn,
|
||||
Entity,
|
||||
PrimaryGeneratedColumn,
|
||||
} from 'typeorm';
|
||||
|
||||
import { RelationOnDeleteAction } from 'src/engine-metadata/relation-metadata/relation-metadata.entity';
|
||||
|
||||
export enum WorkspaceMigrationColumnActionType {
|
||||
CREATE = 'CREATE',
|
||||
ALTER = 'ALTER',
|
||||
CREATE_FOREIGN_KEY = 'CREATE_FOREIGN_KEY',
|
||||
DROP_FOREIGN_KEY = 'DROP_FOREIGN_KEY',
|
||||
DROP = 'DROP',
|
||||
}
|
||||
|
||||
export type WorkspaceMigrationEnum = string | { from: string; to: string };
|
||||
|
||||
export interface WorkspaceMigrationColumnDefinition {
|
||||
columnName: string;
|
||||
columnType: string;
|
||||
enum?: WorkspaceMigrationEnum[];
|
||||
isArray?: boolean;
|
||||
isNullable?: boolean;
|
||||
defaultValue?: any;
|
||||
}
|
||||
|
||||
export interface WorkspaceMigrationColumnCreate
|
||||
extends WorkspaceMigrationColumnDefinition {
|
||||
action: WorkspaceMigrationColumnActionType.CREATE;
|
||||
}
|
||||
|
||||
export type WorkspaceMigrationColumnAlter = {
|
||||
action: WorkspaceMigrationColumnActionType.ALTER;
|
||||
currentColumnDefinition: WorkspaceMigrationColumnDefinition;
|
||||
alteredColumnDefinition: WorkspaceMigrationColumnDefinition;
|
||||
};
|
||||
|
||||
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 = {
|
||||
action: WorkspaceMigrationColumnActionType.DROP;
|
||||
columnName: string;
|
||||
};
|
||||
|
||||
export type WorkspaceMigrationColumnAction = {
|
||||
action: WorkspaceMigrationColumnActionType;
|
||||
} & (
|
||||
| WorkspaceMigrationColumnCreate
|
||||
| WorkspaceMigrationColumnAlter
|
||||
| WorkspaceMigrationColumnCreateRelation
|
||||
| WorkspaceMigrationColumnDropRelation
|
||||
| WorkspaceMigrationColumnDrop
|
||||
);
|
||||
|
||||
export type WorkspaceMigrationTableAction = {
|
||||
name: string;
|
||||
action: 'create' | 'alter' | 'drop';
|
||||
columns?: WorkspaceMigrationColumnAction[];
|
||||
};
|
||||
|
||||
@Entity('workspaceMigration')
|
||||
export class WorkspaceMigrationEntity {
|
||||
@PrimaryGeneratedColumn('uuid')
|
||||
id: string;
|
||||
|
||||
@Column({ nullable: true, type: 'jsonb' })
|
||||
migrations: WorkspaceMigrationTableAction[];
|
||||
|
||||
@Column({ nullable: false })
|
||||
name: string;
|
||||
|
||||
@Column({ default: false })
|
||||
isCustom: boolean;
|
||||
|
||||
@Column({ nullable: true })
|
||||
appliedAt?: Date;
|
||||
|
||||
@Column({ nullable: false, type: 'uuid' })
|
||||
workspaceId: string;
|
||||
|
||||
@CreateDateColumn()
|
||||
createdAt: Date;
|
||||
}
|
||||
Reference in New Issue
Block a user