import { MigrationInterface, QueryRunner } from 'typeorm'; export class AddRbacToAdmin1761597689677 implements MigrationInterface { public async up(queryRunner: QueryRunner): Promise { const idRoleAdmin = await this.doInsert(queryRunner, 'user_role', { name: 'admin', }); console.info('idRoleAdmin', idRoleAdmin); const idRoleUserManagement = await this.doInsert(queryRunner, 'user_role', { name: 'user_manager', }); console.info('idRoleUserManagement', idRoleUserManagement); const idGroupAdmin = await this.doInsert(queryRunner, 'user_group', { name: 'admin', }); console.info('idGroupAdmin', idGroupAdmin); await this.doInsert(queryRunner, 'user_group_roles_user_role', { userGroupId: idGroupAdmin, userRoleId: idRoleAdmin, }); await this.doInsert(queryRunner, 'user_group_roles_user_role', { userGroupId: idGroupAdmin, userRoleId: idRoleUserManagement, }); const users: object[] = (await queryRunner.query( `SELECT * FROM "user" WHERE "username" = $1`, ['admin'], )) as object[]; let userId: number | undefined = undefined; if (users?.length > 0) { const user = users[0] as { id: number }; userId = user.id; } await this.doInsert(queryRunner, 'user_groups_user_group', { userGroupId: idGroupAdmin, userId: userId, }); } public async down(_queryRunner: QueryRunner): Promise { // await queryRunner.query( } private async doInsert( queryRunner: QueryRunner, table: string, values: Record, ): Promise { console.info("inserting values",values); const insertResult = await queryRunner.manager .createQueryBuilder() .insert() .into(table) .values(values) .execute(); return insertResult.raw[0]?.id as string; } }