mirror of
https://github.com/ToolJet/ToolJet
synced 2026-05-24 01:18:23 +00:00
Created repositories to interact with page_permissions and page_users tables
This commit is contained in:
parent
6923d7ef15
commit
c3b71a32ca
2 changed files with 87 additions and 0 deletions
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue