Added entities for page_permissions and page_users tables

This commit is contained in:
devanshu052000 2025-04-17 11:11:39 +05:30
parent fc3669af74
commit 87fa9e71a1
5 changed files with 79 additions and 0 deletions

View file

@ -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;
}

View file

@ -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[];
}

View file

@ -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[];
}

View file

@ -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;
}

View file

@ -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<string>;