chore: import DH V2 D5.6.4 production baseline
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
import { MigrationInterface, QueryRunner } from 'typeorm';
|
||||
|
||||
const operationalPermissions = [
|
||||
'inspections.execute',
|
||||
'inspection_acts.create',
|
||||
'inspection_acts.update',
|
||||
'inspection_acts.cancel',
|
||||
'inspection_findings.create',
|
||||
'inspection_findings.update',
|
||||
'inspection_closure.prepare',
|
||||
'inspection_closure.sign',
|
||||
'inspection_closure.close',
|
||||
] as const;
|
||||
|
||||
const previousNonInspectorMappings = `
|
||||
('admin', 'inspections.execute'),
|
||||
('supervisor', 'inspections.execute'),
|
||||
('admin', 'inspection_acts.create'),
|
||||
('admin', 'inspection_acts.update'),
|
||||
('admin', 'inspection_acts.cancel'),
|
||||
('supervisor', 'inspection_acts.create'),
|
||||
('supervisor', 'inspection_acts.update'),
|
||||
('supervisor', 'inspection_acts.cancel'),
|
||||
('admin', 'inspection_findings.create'),
|
||||
('admin', 'inspection_findings.update'),
|
||||
('supervisor', 'inspection_findings.create'),
|
||||
('supervisor', 'inspection_findings.update'),
|
||||
('admin', 'inspection_closure.prepare'),
|
||||
('admin', 'inspection_closure.sign'),
|
||||
('admin', 'inspection_closure.close'),
|
||||
('director', 'inspection_closure.close'),
|
||||
('supervisor', 'inspection_closure.prepare'),
|
||||
('supervisor', 'inspection_closure.sign'),
|
||||
('supervisor', 'inspection_closure.close')
|
||||
`;
|
||||
|
||||
export class PhaseD51MobileInspectionPolicy1787331600000 implements MigrationInterface {
|
||||
name = 'PhaseD51MobileInspectionPolicy1787331600000';
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`
|
||||
DELETE FROM role_permissions role_permission
|
||||
USING roles role, permissions permission
|
||||
WHERE role_permission.role_id = role.id
|
||||
AND role_permission.permission_id = permission.id
|
||||
AND role.code <> 'inspector'
|
||||
AND permission.code = ANY($1::varchar[])
|
||||
`, [operationalPermissions]);
|
||||
|
||||
await queryRunner.query(`
|
||||
INSERT INTO role_permissions (role_id, permission_id)
|
||||
SELECT role.id, permission.id
|
||||
FROM roles role
|
||||
CROSS JOIN permissions permission
|
||||
WHERE role.code = 'inspector'
|
||||
AND permission.code = ANY($1::varchar[])
|
||||
ON CONFLICT (role_id, permission_id) DO NOTHING
|
||||
`, [operationalPermissions]);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`
|
||||
DELETE FROM role_permissions role_permission
|
||||
USING roles role, permissions permission
|
||||
WHERE role_permission.role_id = role.id
|
||||
AND role_permission.permission_id = permission.id
|
||||
AND role.code = 'inspector'
|
||||
AND permission.code = 'inspection_acts.cancel'
|
||||
`);
|
||||
|
||||
await queryRunner.query(`
|
||||
WITH mapping(role_code, permission_code) AS (VALUES ${previousNonInspectorMappings})
|
||||
INSERT INTO role_permissions (role_id, permission_id)
|
||||
SELECT role.id, permission.id
|
||||
FROM mapping
|
||||
INNER JOIN roles role ON role.code = mapping.role_code
|
||||
INNER JOIN permissions permission ON permission.code = mapping.permission_code
|
||||
ON CONFLICT (role_id, permission_id) DO NOTHING
|
||||
`);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user