Files
cnpmcore/app/core/service/FixNoPaddingVersionService.ts
MK (fengmk2) 89f1250927 refactor: use all in one egg v4 (#855)
required https://github.com/eggjs/egg/pull/5654

---------

Signed-off-by: MK (fengmk2) <fengmk2@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-28 22:17:01 +08:00

47 lines
1.3 KiB
TypeScript

import { AccessLevel, Inject, SingletonProto, Logger } from 'egg';
import pMap from 'p-map';
import type { PackageVersionRepository } from '../../repository/PackageVersionRepository.ts';
import { PaddingSemVer } from '../entity/PaddingSemVer.ts';
@SingletonProto({
accessLevel: AccessLevel.PUBLIC,
})
export class FixNoPaddingVersionService {
@Inject()
private readonly packageVersionRepository: PackageVersionRepository;
@Inject()
private readonly logger: Logger;
async fixPaddingVersion(id?: number): Promise<void> {
while (true) {
const packageVersions =
await this.packageVersionRepository.findHaveNotPaddingVersion(id);
if (packageVersions.length === 0) {
break;
}
const lastVersion = packageVersions[packageVersions.length - 1];
id =
(lastVersion.id as unknown as number) +
1;
this.logger.info(
'[FixNoPaddingVersionService] fix padding version ids %j',
packageVersions.map(t => t.id)
);
await pMap(
packageVersions,
async packageVersion => {
const paddingSemver = new PaddingSemVer(packageVersion.version);
await this.packageVersionRepository.fixPaddingVersion(
packageVersion.packageVersionId,
paddingSemver
);
},
{ concurrency: 30 }
);
}
}
}