From c3b71a32caadaf133406c8b0e0a2ffa4bb6ef67b Mon Sep 17 00:00:00 2001 From: devanshu052000 Date: Thu, 17 Apr 2025 16:55:22 +0530 Subject: [PATCH] Created repositories to interact with page_permissions and page_users tables --- .../page-permissions.repository.ts | 42 +++++++++++++++++ .../repositories/page-users.repository.ts | 45 +++++++++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 server/src/modules/app-permissions/repositories/page-permissions.repository.ts create mode 100644 server/src/modules/app-permissions/repositories/page-users.repository.ts diff --git a/server/src/modules/app-permissions/repositories/page-permissions.repository.ts b/server/src/modules/app-permissions/repositories/page-permissions.repository.ts new file mode 100644 index 0000000000..89b5b190c1 --- /dev/null +++ b/server/src/modules/app-permissions/repositories/page-permissions.repository.ts @@ -0,0 +1,42 @@ +import { PagePermission } from '@entities/page_permissions.entity'; +import { Injectable } from '@nestjs/common'; +import { DataSource, EntityManager, Repository } from 'typeorm'; +import { PageUsersRepository } from './page-users.repository'; +import { dbTransactionWrap } from '@helpers/database.helper'; +import { PAGE_PERMISSION_TYPE } from '../constants'; + +@Injectable() +export class PagePermissionsRepository extends Repository { + constructor(private dataSource: DataSource, private readonly pageUsersRepository: PageUsersRepository) { + super(PagePermission, dataSource.createEntityManager()); + } + + async getPagePermissions(pageId: string, manager?: EntityManager): Promise { + return dbTransactionWrap(async (manager: EntityManager) => { + return manager.find(PagePermission, { + where: { pageId }, + relations: ['users', 'users.user'], + }); + }, manager || this.manager); + } + + async createPagePermissions( + pageId: string, + type: PAGE_PERMISSION_TYPE, + manager?: EntityManager + ): Promise { + return dbTransactionWrap(async (manager: EntityManager) => { + const pagePermission = manager.create(PagePermission, { + pageId, + type, + }); + return manager.save(pagePermission); + }, manager || this.manager); + } + + async deletePagePermissions(pageId: string, manager?: EntityManager): Promise { + return dbTransactionWrap(async (manager: EntityManager) => { + await manager.delete(PagePermission, { pageId }); + }, manager || this.manager); + } +} diff --git a/server/src/modules/app-permissions/repositories/page-users.repository.ts b/server/src/modules/app-permissions/repositories/page-users.repository.ts new file mode 100644 index 0000000000..e70a9e1394 --- /dev/null +++ b/server/src/modules/app-permissions/repositories/page-users.repository.ts @@ -0,0 +1,45 @@ +import { PageUser } from '@entities/page_users.entity'; +import { Injectable } from '@nestjs/common'; +import { DataSource, EntityManager, Repository } from 'typeorm'; +import { dbTransactionWrap } from '@helpers/database.helper'; + +@Injectable() +export class PageUsersRepository extends Repository { + constructor(private dataSource: DataSource) { + super(PageUser, dataSource.createEntityManager()); + } + + async createPageUsersWithSingle( + pagePermissionsId: string, + users: string[], + manager?: EntityManager + ): Promise { + return dbTransactionWrap(async (manager: EntityManager) => { + const pageUsers = users.map((userId) => { + return manager.create(PageUser, { + pagePermissionsId, + userId, + permissionGroupsId: null, + }); + }); + return manager.save(pageUsers); + }, manager || this.manager); + } + + async createPageUsersWithGroup( + pagePermissionsId: string, + groups: string[], + manager?: EntityManager + ): Promise { + return dbTransactionWrap(async (manager: EntityManager) => { + const pageUsers = groups.map((permissionGroupsId) => { + return manager.create(PageUser, { + pagePermissionsId, + permissionGroupsId, + userId: null, + }); + }); + return manager.save(pageUsers); + }, manager || this.manager); + } +}