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>
47 lines
1.3 KiB
TypeScript
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 }
|
|
);
|
|
}
|
|
}
|
|
}
|