From 87fa9e71a1aab1cd5aa3393d99d3dfb9d444152b Mon Sep 17 00:00:00 2001 From: devanshu052000 Date: Thu, 17 Apr 2025 11:11:39 +0530 Subject: [PATCH] Added entities for page_permissions and page_users tables --- .../src/entities/group_permissions.entity.ts | 4 +++ server/src/entities/page.entity.ts | 4 +++ .../src/entities/page_permissions.entity.ts | 33 ++++++++++++++++++ server/src/entities/page_users.entity.ts | 34 +++++++++++++++++++ server/src/entities/user.entity.ts | 4 +++ 5 files changed, 79 insertions(+) create mode 100644 server/src/entities/page_permissions.entity.ts create mode 100644 server/src/entities/page_users.entity.ts diff --git a/server/src/entities/group_permissions.entity.ts b/server/src/entities/group_permissions.entity.ts index 089b7ff7d9..693f4f930c 100644 --- a/server/src/entities/group_permissions.entity.ts +++ b/server/src/entities/group_permissions.entity.ts @@ -13,6 +13,7 @@ import { Organization } from './organization.entity'; import { GroupUsers } from './group_users.entity'; import { GranularPermissions } from './granular_permissions.entity'; import { GROUP_PERMISSIONS_TYPE } from '@modules/group-permissions/constants'; +import { PageUser } from './page_users.entity'; @Entity({ name: 'permission_groups' }) export class GroupPermissions extends BaseEntity { @@ -62,5 +63,8 @@ export class GroupPermissions extends BaseEntity { @OneToMany(() => GranularPermissions, (granularPermissions) => granularPermissions.group, { onDelete: 'CASCADE' }) groupGranularPermissions: GranularPermissions[]; + @OneToMany(() => PageUser, (pageUser) => pageUser.permissionGroup) + pageUsers: PageUser[]; + disabled?: boolean; } diff --git a/server/src/entities/page.entity.ts b/server/src/entities/page.entity.ts index ca4e06333e..4b3dc5466e 100644 --- a/server/src/entities/page.entity.ts +++ b/server/src/entities/page.entity.ts @@ -10,6 +10,7 @@ import { } from 'typeorm'; import { AppVersion } from './app_version.entity'; import { Component } from './component.entity'; +import { PagePermission } from './page_permissions.entity'; @Entity({ name: 'pages' }) export class Page { @@ -61,4 +62,7 @@ export class Page { @OneToMany(() => Component, (component) => component.page) components: Component[]; + + @OneToMany(() => PagePermission, (permission) => permission.page) + permissions: PagePermission[]; } diff --git a/server/src/entities/page_permissions.entity.ts b/server/src/entities/page_permissions.entity.ts new file mode 100644 index 0000000000..877afc5e29 --- /dev/null +++ b/server/src/entities/page_permissions.entity.ts @@ -0,0 +1,33 @@ +import { Entity, PrimaryGeneratedColumn, Column, ManyToOne, JoinColumn, CreateDateColumn, OneToMany } from 'typeorm'; +import { Page } from './page.entity'; +import { PageUser } from './page_users.entity'; + +export enum PermissionType { + SINGLE = 'SINGLE', + GROUP = 'GROUP', +} + +@Entity('page_permissions') +export class PagePermission { + @PrimaryGeneratedColumn('uuid') + id: string; + + @Column({ name: 'page_id', type: 'uuid', nullable: false }) + pageId: string; + + @Column({ + type: 'enum', + enum: PermissionType, + }) + type: PermissionType; + + @CreateDateColumn({ name: 'created_at' }) + createdAt: Date; + + @ManyToOne(() => Page, (page) => page.permissions, { onDelete: 'CASCADE' }) + @JoinColumn({ name: 'page_id' }) + page: Page; + + @OneToMany(() => PageUser, (pageUser) => pageUser.pagePermission) + users: PageUser[]; +} diff --git a/server/src/entities/page_users.entity.ts b/server/src/entities/page_users.entity.ts new file mode 100644 index 0000000000..960be5b32f --- /dev/null +++ b/server/src/entities/page_users.entity.ts @@ -0,0 +1,34 @@ +import { Entity, PrimaryGeneratedColumn, Column, ManyToOne, JoinColumn, CreateDateColumn } from 'typeorm'; +import { User } from './user.entity'; +import { PagePermission } from './page_permissions.entity'; +import { GroupPermissions } from './group_permissions.entity'; + +@Entity('page_users') +export class PageUser { + @PrimaryGeneratedColumn('uuid') + id: string; + + @Column({ name: 'page_permissions_id', type: 'uuid' }) + pagePermissionsId: string; + + @Column({ name: 'user_id', type: 'uuid', nullable: true }) + userId: string | null; + + @Column({ name: 'permission_groups_id', type: 'uuid', nullable: true }) + permissionGroupsId: string | null; + + @CreateDateColumn({ name: 'created_at' }) + createdAt: Date; + + @ManyToOne(() => PagePermission, { onDelete: 'CASCADE' }) + @JoinColumn({ name: 'page_permissions_id' }) + pagePermission: PagePermission; + + @ManyToOne(() => User, { onDelete: 'CASCADE', nullable: true }) + @JoinColumn({ name: 'user_id' }) + user: User; + + @ManyToOne(() => GroupPermissions, { onDelete: 'CASCADE', nullable: true }) + @JoinColumn({ name: 'permission_groups_id' }) + permissionGroup: GroupPermissions; +} diff --git a/server/src/entities/user.entity.ts b/server/src/entities/user.entity.ts index 5bdecb2b43..e052e11245 100644 --- a/server/src/entities/user.entity.ts +++ b/server/src/entities/user.entity.ts @@ -29,6 +29,7 @@ import { OnboardingStatus } from '@modules/onboarding/constants'; import { AiConversation } from './ai_conversation.entity'; import { AiResponseVote } from './ai_response_vote.entity'; import { USER_ROLE } from '@modules/group-permissions/constants'; +import { PageUser } from './page_users.entity'; @Entity({ name: 'users' }) export class User extends BaseEntity { @@ -184,6 +185,9 @@ export class User extends BaseEntity { @OneToMany(() => AiResponseVote, (aiResponseVote) => aiResponseVote.user, { onDelete: 'CASCADE' }) aiResponseVotes: AiResponseVote[]; + @OneToMany(() => PageUser, (pageUser) => pageUser.user) + pageUsers: PageUser[]; + organizationId: string; invitedOrganizationId: string; organizationIds?: Array;