Create PageLayoutEntity (#14099)

Closes https://github.com/twentyhq/core-team-issues/issues/1389
This commit is contained in:
Raphaël Bosi
2025-08-27 12:34:02 +02:00
committed by GitHub
parent 850a0fdea2
commit 28de78bfc0
5 changed files with 120 additions and 1 deletions
@@ -0,0 +1,65 @@
import {
Column,
CreateDateColumn,
DeleteDateColumn,
Entity,
Index,
JoinColumn,
ManyToOne,
PrimaryGeneratedColumn,
Relation,
UpdateDateColumn,
} from 'typeorm';
import { PageLayoutType } from 'src/engine/core-modules/page-layout/enums/page-layout-type.enum';
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
@Entity({ name: 'pageLayout', schema: 'core' })
@Index('IDX_PAGE_LAYOUT_WORKSPACE_ID_OBJECT_METADATA_ID', [
'workspaceId',
'objectMetadataId',
])
export class PageLayoutEntity implements Required<PageLayoutEntity> {
@PrimaryGeneratedColumn('uuid')
id: string;
@Column({ nullable: false })
name: string;
@Column({ nullable: false, type: 'uuid' })
workspaceId: string;
@ManyToOne(() => Workspace, {
onDelete: 'CASCADE',
})
@JoinColumn({ name: 'workspaceId' })
workspace: Relation<Workspace>;
@Column({
type: 'enum',
enum: Object.values(PageLayoutType),
nullable: false,
default: PageLayoutType.RECORD_PAGE,
})
type: PageLayoutType;
@Column({ nullable: true, type: 'uuid' })
objectMetadataId: string | null;
@ManyToOne(() => ObjectMetadataEntity, {
onDelete: 'CASCADE',
nullable: true,
})
@JoinColumn({ name: 'objectMetadataId' })
objectMetadata: Relation<ObjectMetadataEntity> | null;
@CreateDateColumn({ type: 'timestamptz' })
createdAt: Date;
@UpdateDateColumn({ type: 'timestamptz' })
updatedAt: Date;
@DeleteDateColumn({ type: 'timestamptz' })
deletedAt: Date | null;
}
@@ -0,0 +1,5 @@
export enum PageLayoutType {
RECORD_INDEX = 'RECORD_INDEX',
RECORD_PAGE = 'RECORD_PAGE',
DASHBOARD = 'DASHBOARD',
}
@@ -0,0 +1,10 @@
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { PageLayoutEntity } from 'src/engine/core-modules/page-layout/entities/page-layout.entity';
@Module({
imports: [TypeOrmModule.forFeature([PageLayoutEntity], 'core')],
exports: [],
})
export class PageLayoutModule {}