Created repositories to interact with page_permissions and page_users tables

This commit is contained in:
devanshu052000 2025-04-17 16:55:22 +05:30
parent 6923d7ef15
commit c3b71a32ca
2 changed files with 87 additions and 0 deletions

View file

@ -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<PagePermission> {
constructor(private dataSource: DataSource, private readonly pageUsersRepository: PageUsersRepository) {
super(PagePermission, dataSource.createEntityManager());
}
async getPagePermissions(pageId: string, manager?: EntityManager): Promise<PagePermission[]> {
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<PagePermission> {
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<void> {
return dbTransactionWrap(async (manager: EntityManager) => {
await manager.delete(PagePermission, { pageId });
}, manager || this.manager);
}
}

View file

@ -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<PageUser> {
constructor(private dataSource: DataSource) {
super(PageUser, dataSource.createEntityManager());
}
async createPageUsersWithSingle(
pagePermissionsId: string,
users: string[],
manager?: EntityManager
): Promise<PageUser[]> {
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<PageUser[]> {
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);
}
}