import { Column, CreateDateColumn, Entity, JoinColumn, ManyToOne, PrimaryGeneratedColumn, Relation, Unique, UpdateDateColumn, } from 'typeorm'; import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; import { RoleEntity } from 'src/engine/metadata-modules/role/role.entity'; @Entity('objectPermissions') @Unique('IndexOnObjectPermissionsUnique', ['objectMetadataId', 'roleId']) export class ObjectPermissionsEntity { @PrimaryGeneratedColumn('uuid') id: string; @Column({ nullable: false, type: 'uuid' }) roleId: string; @ManyToOne(() => RoleEntity, (role) => role.objectPermissions, { onDelete: 'CASCADE', }) @JoinColumn({ name: 'roleId' }) role: Relation; @Column({ nullable: false, type: 'uuid' }) objectMetadataId: string; @ManyToOne( () => ObjectMetadataEntity, (objectMetadata) => objectMetadata.objectPermissions, { onDelete: 'CASCADE', }, ) @JoinColumn({ name: 'objectMetadataId' }) objectMetadata: Relation; @Column({ nullable: true, type: 'boolean' }) canReadObjectRecords?: boolean; @Column({ nullable: true, type: 'boolean' }) canUpdateObjectRecords?: boolean; @Column({ nullable: true, type: 'boolean' }) canSoftDeleteObjectRecords?: boolean; @Column({ nullable: true, type: 'boolean' }) canDestroyObjectRecords?: boolean; @Column({ nullable: false, type: 'uuid' }) workspaceId: string; @CreateDateColumn({ type: 'timestamptz' }) createdAt: Date; @UpdateDateColumn({ type: 'timestamptz' }) updatedAt: Date; }