65 lines
2.5 KiB
TypeScript
65 lines
2.5 KiB
TypeScript
import { MigrationInterface, QueryRunner } from 'typeorm';
|
|
|
|
export class PhaseF4ReportDossierPermissions1790042400000 implements MigrationInterface {
|
|
name = 'PhaseF4ReportDossierPermissions1790042400000';
|
|
|
|
public async up(queryRunner: QueryRunner): Promise<void> {
|
|
await queryRunner.query(`
|
|
INSERT INTO permissions (code, description)
|
|
VALUES
|
|
('inspection_reports.edit', 'Editar el contenido de trabajo del Informe de inspección'),
|
|
('inspection_reports.officialize', 'Registrar el IF y PDF oficial generado por GEDO'),
|
|
('inspection_reports.follow_up', 'Agregar respuestas, notas y documentos al seguimiento del Informe')
|
|
ON CONFLICT (code) DO UPDATE SET description = EXCLUDED.description
|
|
`);
|
|
await queryRunner.query(`
|
|
WITH mapping(role_code, permission_code) AS (
|
|
VALUES
|
|
('admin', 'inspection_reports.edit'),
|
|
('admin', 'inspection_reports.officialize'),
|
|
('admin', 'inspection_reports.follow_up'),
|
|
('supervisor', 'inspection_reports.edit'),
|
|
('supervisor', 'inspection_reports.officialize'),
|
|
('supervisor', 'inspection_reports.follow_up'),
|
|
('inspector', 'inspection_reports.edit'),
|
|
('inspector', 'inspection_reports.officialize'),
|
|
('inspector', 'inspection_reports.follow_up')
|
|
)
|
|
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 DO NOTHING
|
|
`);
|
|
await queryRunner.query(`
|
|
CREATE UNIQUE INDEX IF NOT EXISTS uq_inspection_reports_gedo_if_identifier
|
|
ON inspection_reports(gedo_if_identifier)
|
|
WHERE gedo_if_identifier IS NOT NULL
|
|
`);
|
|
}
|
|
|
|
public async down(queryRunner: QueryRunner): Promise<void> {
|
|
await queryRunner.query(`DROP INDEX IF EXISTS uq_inspection_reports_gedo_if_identifier`);
|
|
await queryRunner.query(`
|
|
DELETE FROM role_permissions
|
|
WHERE permission_id IN (
|
|
SELECT id FROM permissions
|
|
WHERE code IN (
|
|
'inspection_reports.edit',
|
|
'inspection_reports.officialize',
|
|
'inspection_reports.follow_up'
|
|
)
|
|
)
|
|
`);
|
|
await queryRunner.query(`
|
|
DELETE FROM permissions
|
|
WHERE code IN (
|
|
'inspection_reports.edit',
|
|
'inspection_reports.officialize',
|
|
'inspection_reports.follow_up'
|
|
)
|
|
`);
|
|
}
|
|
}
|