mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-30 02:58:11 +00:00
49 lines
1.5 KiB
TypeScript
49 lines
1.5 KiB
TypeScript
import { Injectable, Logger } from '@nestjs/common';
|
|
import { Permission } from '@tria-plc/iamapi-common';
|
|
import { DataSource } from 'typeorm';
|
|
|
|
/** Renamed rule-engine resources: old key -> new key (same permission id). */
|
|
const PERMISSION_KEY_RENAMES: ReadonlyArray<{ from: string; to: string }> = [
|
|
{
|
|
from: 'edr_freight_app:rule_engine:priority_rules:view',
|
|
to: 'edr_freight_app:rule_engine:priority_configs:view',
|
|
},
|
|
{
|
|
from: 'edr_freight_app:rule_engine:priority_rules:manage',
|
|
to: 'edr_freight_app:rule_engine:priority_configs:manage',
|
|
},
|
|
];
|
|
|
|
@Injectable()
|
|
export class FreightPermissionKeyMigrationSeeder {
|
|
private readonly logger = new Logger(FreightPermissionKeyMigrationSeeder.name);
|
|
|
|
constructor(private readonly dataSource: DataSource) {}
|
|
|
|
async run() {
|
|
const permissionRepository = this.dataSource.getRepository(Permission);
|
|
|
|
for (const { from, to } of PERMISSION_KEY_RENAMES) {
|
|
const existing = await permissionRepository.findOne({
|
|
where: { key: from },
|
|
select: { id: true, key: true },
|
|
});
|
|
|
|
if (!existing) {
|
|
continue;
|
|
}
|
|
|
|
const targetExists = await permissionRepository.existsBy({ key: to });
|
|
if (targetExists) {
|
|
this.logger.warn(
|
|
`Skipping permission key rename ${from} -> ${to}: target key already exists`,
|
|
);
|
|
continue;
|
|
}
|
|
|
|
await permissionRepository.update({ id: existing.id }, { key: to });
|
|
this.logger.log(`Renamed permission key ${from} -> ${to}`);
|
|
}
|
|
}
|
|
}
|