From d9cc52a3e52f20bbd912e7afab25a3ee23a02834 Mon Sep 17 00:00:00 2001 From: kriks7iitk Date: Thu, 11 Jul 2024 11:37:22 +0530 Subject: [PATCH] Deleted migeations from table migrations --- ...0-CreateDefaultGroupInExistingWorkspace.ts | 149 ------------ ...sersToRespectiveRolesBuilderAndEndUsers.ts | 124 ---------- ...737529-MigrateCustomGroupToNewUserGroup.ts | 213 ------------------ ...-DropGroupPermissionsOlderRelatedTables.ts | 9 - 4 files changed, 495 deletions(-) delete mode 100644 server/migrations/1720352990850-CreateDefaultGroupInExistingWorkspace.ts delete mode 100644 server/migrations/1720365772516-AddingUsersToRespectiveRolesBuilderAndEndUsers.ts delete mode 100644 server/migrations/1720434737529-MigrateCustomGroupToNewUserGroup.ts delete mode 100644 server/migrations/1720513124281-DropGroupPermissionsOlderRelatedTables.ts diff --git a/server/migrations/1720352990850-CreateDefaultGroupInExistingWorkspace.ts b/server/migrations/1720352990850-CreateDefaultGroupInExistingWorkspace.ts deleted file mode 100644 index 01624e6946..0000000000 --- a/server/migrations/1720352990850-CreateDefaultGroupInExistingWorkspace.ts +++ /dev/null @@ -1,149 +0,0 @@ -import { CreateGranularPermissionDto } from '@dto/granular-permissions.dto'; -import { - DEFAULT_GRANULAR_PERMISSIONS_NAME, - DEFAULT_RESOURCE_PERMISSIONS, - ResourceType, -} from '@module/user_resource_permissions/constants/granular-permissions.constant'; -import { - USER_ROLE, - DEFAULT_GROUP_PERMISSIONS_MIGRATIONS, -} from '@module/user_resource_permissions/constants/group-permissions.constant'; -import { - CreateResourcePermissionObject, - ResourcePermissionMetaData, -} from '@module/user_resource_permissions/interface/granular-permissions.interface'; -import { AppsGroupPermissions } from 'src/entities/apps_group_permissions.entity'; -import { GranularPermissions } from 'src/entities/granular_permissions.entity'; -import { GroupPermissions } from 'src/entities/group_permissions.entity'; -import { Organization } from 'src/entities/organization.entity'; -import { UserGroupPermission } from 'src/entities/user_group_permission.entity'; -import { EntityManager, MigrationInterface, QueryRunner } from 'typeorm'; - -export class CreateDefaultGroupInExistingWorkspace1720352990850 implements MigrationInterface { - public async up(queryRunner: QueryRunner): Promise { - const manager = queryRunner.manager; - const organizationIds = ( - await manager.find(Organization, { - select: ['id'], - }) - ).map((organization) => organization.id); - - for (const organizationId of organizationIds) { - for (const defaultGroup of Object.keys(USER_ROLE)) { - const groupPermissions = DEFAULT_GROUP_PERMISSIONS_MIGRATIONS[defaultGroup]; - const query = ` - INSERT INTO permission_groups ( - organization_id, - name, - type, - app_create, - app_delete, - folder_crud, - org_constant_crud, - data_source_create, - data_source_delete - ) VALUES ( - '${organizationId}', - '${groupPermissions.name}', - '${groupPermissions.type}', - ${groupPermissions.appCreate}, - ${groupPermissions.appDelete}, - ${groupPermissions.folderCRUD}, - ${groupPermissions.orgConstantCRUD}, - ${groupPermissions.dataSourceCreate}, - ${groupPermissions.dataSourceDelete} - ) RETURNING *; - `; - const group: GroupPermissions = (await manager.query(query))[0]; - const groupGranularPermissions: Record = - DEFAULT_RESOURCE_PERMISSIONS[group.name]; - - for (const resource of Object.keys(groupGranularPermissions)) { - const createResourcePermissionObj: CreateResourcePermissionObject = groupGranularPermissions[resource]; - const dtoObject = { - name: DEFAULT_GRANULAR_PERMISSIONS_NAME[resource], - groupId: group.id, - type: resource as ResourceType, - isAll: true, - createAppsPermissionsObject: {}, - }; - if (group.name === USER_ROLE.ADMIN) { - const granularPermissions = await this.createGranularPermission(manager, dtoObject); - await this.createAppsResourcePermission( - manager, - { granularPermissions, organizationId }, - createResourcePermissionObj - ); - } - } - //Migrating Admins to new Admins - if (group.name === USER_ROLE.ADMIN) { - const adminsUsers = await manager - .createQueryBuilder(UserGroupPermission, 'usersGroup') - .innerJoin( - 'usersGroup.groupPermission', - 'groupPermission', - 'groupPermission.organizationId = :organizationId', - { - organizationId, - } - ) - .where('groupPermission.group = :admin', { - admin: 'admin', - }) - .getMany(); - const userIds = adminsUsers.map((userGroup) => userGroup.userId); - await this.migrateUserGroup(manager, userIds, group.id); - } - } - } - } - - async createGranularPermission( - manager: EntityManager, - createObject: CreateGranularPermissionDto - ): Promise { - const query = ` - INSERT INTO granular_permissions ( - group_id, - name, - type, - is_all - ) VALUES ( - '${createObject.groupId}', '${createObject.name}', '${createObject.type}', ${createObject.isAll} - ) RETURNING *; - `; - return (await manager.query(query))[0]; - } - - async createAppsResourcePermission( - manager: EntityManager, - createMeta: ResourcePermissionMetaData, - createObject: CreateResourcePermissionObject - ): Promise { - const { granularPermissions } = createMeta; - const query = ` - INSERT INTO apps_group_permissions ( - granular_permission_id, - can_edit, - can_view, - hide_from_dashboard - ) VALUES ( - '${granularPermissions.id}', ${createObject.canEdit}, ${createObject.canView}, ${createObject.hideFromDashboard} - ) RETURNING *; - `; - return (await manager.query(query))[0]; - } - - async migrateUserGroup(manager: EntityManager, userIds: string[], groupId: string) { - if (userIds.length == 0) return; - const valuesString = userIds.map((id) => `('${id}', '${groupId}')`).join(','); - const query = ` - INSERT INTO group_users (user_id, group_id) - VALUES ${valuesString}; - `; - return await manager.query(query); - } - - public async down(queryRunner: QueryRunner): Promise {} -} diff --git a/server/migrations/1720365772516-AddingUsersToRespectiveRolesBuilderAndEndUsers.ts b/server/migrations/1720365772516-AddingUsersToRespectiveRolesBuilderAndEndUsers.ts deleted file mode 100644 index 25463d3ca7..0000000000 --- a/server/migrations/1720365772516-AddingUsersToRespectiveRolesBuilderAndEndUsers.ts +++ /dev/null @@ -1,124 +0,0 @@ -import { - GROUP_PERMISSIONS_TYPE, - USER_ROLE, -} from '@module/user_resource_permissions/constants/group-permissions.constant'; -import { GroupPermissions } from 'src/entities/group_permissions.entity'; -import { Organization } from 'src/entities/organization.entity'; -import { OrganizationUser } from 'src/entities/organization_user.entity'; -import { User } from 'src/entities/user.entity'; -import { UserGroupPermission } from 'src/entities/user_group_permission.entity'; -import { Brackets, EntityManager, MigrationInterface, QueryRunner } from 'typeorm'; - -export class AddingUsersToRespectiveRolesBuilderAndEndUsers1720365772516 implements MigrationInterface { - public async up(queryRunner: QueryRunner): Promise { - const manager = queryRunner.manager; - const organizationIds = ( - await manager.find(Organization, { - select: ['id'], - }) - ).map((organization) => organization.id); - await this.getAndConvertEditorBuilderUsers(manager, organizationIds); - } - - async getAndConvertEditorBuilderUsers(manager: EntityManager, organizationIds: string[]) { - for (const organizationId of organizationIds) { - const userIdsWithEditPermissions = ( - await manager - .createQueryBuilder(User, 'users') - .innerJoin( - 'users.organizationUsers', - 'organization_users', - 'organization_users.organizationId = :organizationId ', - { - organizationId, - } - ) - .innerJoin( - 'users.groupPermissions', - 'group_permissions', - 'organization_users.organizationId = group_permissions.organizationId' - ) - .leftJoin('group_permissions.appGroupPermission', 'app_group_permissions') - .andWhere( - new Brackets((qb) => { - qb.where('app_group_permissions.read = true AND app_group_permissions.update = true').orWhere( - 'group_permissions.appCreate = true' - ); - }) - ) - .select('users.id') - .distinct() - .getMany() - ).map((record) => record.id); - - const userIdsOfAppOwners = ( - await manager - .createQueryBuilder(User, 'users') - .innerJoin( - 'users.organizationUsers', - 'organization_users', - 'organization_users.organizationId = :organizationId', - { - organizationId, - } - ) - .innerJoin('users.apps', 'apps') - .select('users.id') - .distinct() - .getMany() - ).map((record) => record.id); - - const adminsUsers = ( - await manager - .createQueryBuilder(UserGroupPermission, 'usersGroup') - .innerJoin( - 'usersGroup.groupPermission', - 'groupPermission', - 'groupPermission.organizationId = :organizationId', - { - organizationId, - } - ) - .where('groupPermission.group = :admin', { - admin: 'admin', - }) - .getMany() - ).map((record) => record.userId); - const builderUsersWithAdmin = [...new Set([...userIdsWithEditPermissions, ...userIdsOfAppOwners])]; - const builderUsersWoAdmin = builderUsersWithAdmin.filter((id) => !adminsUsers.includes(id)); - const builderGroup = await manager.findOne(GroupPermissions, { - where: { name: USER_ROLE.BUILDER, type: GROUP_PERMISSIONS_TYPE.DEFAULT, organizationId: organizationId }, - }); - const endUserGroup = await manager.findOne(GroupPermissions, { - where: { name: USER_ROLE.END_USER, type: GROUP_PERMISSIONS_TYPE.DEFAULT, organizationId: organizationId }, - }); - - console.log('Builders users'); - console.log(builderUsersWoAdmin); - - await this.migrateUserGroup(manager, builderUsersWoAdmin, builderGroup.id); - const organizationUser = ( - await manager.find(OrganizationUser, { - where: { - organizationId, - }, - }) - ).map((record) => record.userId); - const builderAdminUsers = [...new Set([...builderUsersWoAdmin, ...adminsUsers])]; - const endUsers = organizationUser.filter((userId) => !builderAdminUsers.includes(userId)); - await this.migrateUserGroup(manager, endUsers, endUserGroup.id); - } - } - - async migrateUserGroup(manager: EntityManager, userIds: string[], groupId: string) { - if (userIds.length === 0) return; - const valuesString = userIds.map((id) => `('${id}', '${groupId}')`).join(','); - const query = ` - INSERT INTO group_users (user_id, group_id) - VALUES ${valuesString}; - `; - return await manager.query(query); - } - - public async down(queryRunner: QueryRunner): Promise {} -} diff --git a/server/migrations/1720434737529-MigrateCustomGroupToNewUserGroup.ts b/server/migrations/1720434737529-MigrateCustomGroupToNewUserGroup.ts deleted file mode 100644 index 8cc12e70d9..0000000000 --- a/server/migrations/1720434737529-MigrateCustomGroupToNewUserGroup.ts +++ /dev/null @@ -1,213 +0,0 @@ -import { CreateGranularPermissionDto } from '@dto/granular-permissions.dto'; -import { - DEFAULT_GRANULAR_PERMISSIONS_NAME, - ResourceType, -} from '@module/user_resource_permissions/constants/granular-permissions.constant'; -import { - GROUP_PERMISSIONS_TYPE, - USER_ROLE, -} from '@module/user_resource_permissions/constants/group-permissions.constant'; -import { - CreateResourcePermissionObject, - ResourcePermissionMetaData, -} from '@module/user_resource_permissions/interface/granular-permissions.interface'; -import { AppGroupPermission } from 'src/entities/app_group_permission.entity'; -import { AppsGroupPermissions } from 'src/entities/apps_group_permissions.entity'; -import { GranularPermissions } from 'src/entities/granular_permissions.entity'; -import { GroupPermission } from 'src/entities/group_permission.entity'; -import { GroupPermissions } from 'src/entities/group_permissions.entity'; -import { Organization } from 'src/entities/organization.entity'; -import { EntityManager, MigrationInterface, QueryRunner } from 'typeorm'; - -export class MigrateCustomGroupToNewUserGroup1720434737529 implements MigrationInterface { - public async up(queryRunner: QueryRunner): Promise { - const manager = queryRunner.manager; - const organizationIds = ( - await manager.find(Organization, { - select: ['id'], - }) - ).map((organization) => organization.id); - for (const organizationId of organizationIds) { - const groups = await manager - .createQueryBuilder(GroupPermission, 'groupPermission') - .where('groupPermission.organizationId = :organizationId', { - organizationId, - }) - .leftJoinAndSelect('groupPermission.appGroupPermission', 'appGroupPermission') - .leftJoinAndSelect('groupPermission.userGroupPermission', 'userGroupPermission') - .andWhere('groupPermission.group != :admin', { - admin: 'admin', - }) - .getMany(); - - for (const groupPermissions of groups) { - const query = ` - INSERT INTO permission_groups ( - organization_id, - name, - type, - app_create, - app_delete, - folder_crud, - org_constant_crud, - data_source_create, - data_source_delete - ) VALUES ( - '${organizationId}', - '${this.getGroupName(groupPermissions.group)}', - '${GROUP_PERMISSIONS_TYPE.CUSTOM_GROUP}', - ${groupPermissions.appCreate}, - ${groupPermissions.appDelete}, - ${groupPermissions.folderCreate}, - ${groupPermissions.orgEnvironmentConstantCreate}, - false, - false - ) RETURNING *; - `; - const group: GroupPermissions = (await manager.query(query))[0]; - const existingGroupUsers = groupPermissions.userGroupPermission; - await this.migrateUserGroup(manager, [...new Set(existingGroupUsers.map((record) => record.userId))], group.id); - const resources = [ResourceType.APP]; - for (const resource of resources) { - if (resource === ResourceType.APP) { - const viewLevelAppsPermissions = groupPermissions.appGroupPermission.filter( - (appPermissions) => appPermissions.read - ); - const updateLevelAppsPermissions = groupPermissions.appGroupPermission.filter( - (appPermissions) => appPermissions.update - ); - const createResourcePermissionObjView: CreateResourcePermissionObject = { - canView: true, - canEdit: false, - hideFromDashboard: false, - }; - await this.createAppLevelPermissions( - manager, - viewLevelAppsPermissions, - organizationId, - resource, - group, - createResourcePermissionObjView - ); - const createResourcePermissionObjEdit: CreateResourcePermissionObject = { - canView: false, - canEdit: true, - hideFromDashboard: false, - }; - await this.createAppLevelPermissions( - manager, - updateLevelAppsPermissions, - organizationId, - resource, - group, - createResourcePermissionObjEdit - ); - } - } - } - } - } - - getGroupName(name: string) { - switch (name) { - case USER_ROLE.BUILDER: - return `custom-${USER_ROLE.BUILDER}`; - case USER_ROLE.END_USER: - return `custom-${USER_ROLE.END_USER}`; - case 'all_users': - return `Custom All users`; - default: - return name; - } - } - - async createGranularPermission( - manager: EntityManager, - createObject: CreateGranularPermissionDto - ): Promise { - const query = ` - INSERT INTO granular_permissions ( - group_id, - name, - type, - is_all, - - ) VALUES ( - ${createObject.groupId} , ${createObject.name} , ${createObject.type},${createObject.isAll} - ) RETURNING *;`; - return (await manager.query(query))[0]; - } - - async createAppsResourcePermission( - manager: EntityManager, - createMeta: ResourcePermissionMetaData, - createObject: CreateResourcePermissionObject - ): Promise { - const { granularPermissions } = createMeta; - const query = ` - INSERT INTO apps_group_permissions ( - granular_permission_id, - can_edit, - can_view, - hide_from_dashboard - ) VALUES ( - ${granularPermissions.id}, - ${createObject.canEdit}, - ${createObject.canView}, - ${createObject.hideFromDashboard} - ) RETURNING *; - `; - return (await manager.query(query))[0]; - } - - async migrateUserGroup(manager: EntityManager, userIds: string[], groupId: string) { - if (userIds.length == 0) return; - const valuesString = userIds.map((id) => `('${id}', '${groupId}')`).join(','); - const query = ` - INSERT INTO group_users (user_id, group_id) - VALUES ${valuesString}; - `; - return await manager.query(query); - } - - async addAppsGroupToPermissions(manager: EntityManager, appIds: string[], appPermissionsId: string) { - const valuesString = appIds.map((id) => `('${id}', '${appPermissionsId}')`).join(','); - const query = ` - INSERT INTO group_apps (app_id, apps_group_permissions_id) - VALUES ${valuesString}; - `; - return await manager.query(query); - } - - async createAppLevelPermissions( - manager: EntityManager, - appsPermissions: AppGroupPermission[], - organizationId: string, - resource: ResourceType, - group: GroupPermissions, - createResourcePermissionObj: CreateResourcePermissionObject - ) { - const nameInit = createResourcePermissionObj.canView ? 'Viewable' : 'Updatable'; - if (appsPermissions.length === 0) return; - const dtoObject = { - name: `${nameInit} ${DEFAULT_GRANULAR_PERMISSIONS_NAME[resource]}`, - groupId: group.id, - type: resource as ResourceType, - isAll: false, - createAppsPermissionsObject: {}, - }; - const granularPermissions = await this.createGranularPermission(manager, dtoObject); - const appsGroupPermissions = await this.createAppsResourcePermission( - manager, - { granularPermissions, organizationId }, - createResourcePermissionObj - ); - await this.addAppsGroupToPermissions( - manager, - appsPermissions.map((record) => record.appId), - appsGroupPermissions.id - ); - } - - public async down(queryRunner: QueryRunner): Promise {} -} diff --git a/server/migrations/1720513124281-DropGroupPermissionsOlderRelatedTables.ts b/server/migrations/1720513124281-DropGroupPermissionsOlderRelatedTables.ts deleted file mode 100644 index 8a47a54d64..0000000000 --- a/server/migrations/1720513124281-DropGroupPermissionsOlderRelatedTables.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { MigrationInterface, QueryRunner } from 'typeorm'; - -export class DropGroupPermissionsOlderRelatedTables1720513124281 implements MigrationInterface { - public async up(queryRunner: QueryRunner): Promise { - queryRunner.query('DROP TABLE group_permissions, user_group_permissions, app_group_permissions CASCADE;'); - } - - public async down(queryRunner: QueryRunner): Promise {} -}