Polish module actions and marketplace updates
This commit is contained in:
@@ -77,19 +77,43 @@ export class MarketplaceController {
|
||||
return this.marketplaceService.availableUpdates(moduleId);
|
||||
}
|
||||
|
||||
@Get('operations/:operationId')
|
||||
@Roles('ADMIN')
|
||||
operationProgress(@Param('operationId') operationId: string, @CurrentUser() actor: AuthUser) {
|
||||
return this.marketplaceService.getOperationProgress(operationId, actor.id);
|
||||
}
|
||||
|
||||
@Post('modules/:moduleId/update')
|
||||
@Roles('ADMIN')
|
||||
async updateModule(
|
||||
@Param('moduleId') moduleId: string,
|
||||
@Body() body: { branch?: unknown },
|
||||
@Body() body: { branch?: unknown; operationId?: unknown },
|
||||
@CurrentUser() actor: AuthUser,
|
||||
@Req() request: AuthenticatedRequest,
|
||||
): Promise<{ module: ModuleRecord }> {
|
||||
if (typeof body.branch !== 'string') throw new BadRequestException('Bitte eine Update-Branch auswählen');
|
||||
const update = await this.marketplaceService.updateInstalledBranch(moduleId, body.branch);
|
||||
const module = await this.modulesService.updateFromMarketplace(moduleId, update.archive, actor, request.ip ?? null);
|
||||
await this.marketplaceService.commitInstalledBranch(moduleId, update.provider, update.owner, update.repository, update.branch, update.commit);
|
||||
return { module };
|
||||
const operationId = this.marketplaceService.beginOperation(body.operationId, actor.id);
|
||||
const report = (phase: string, message: string, progress: number) =>
|
||||
this.marketplaceService.reportOperation(operationId, actor.id, phase, message, progress);
|
||||
try {
|
||||
report('branch', 'Branch wird geprüft', 8);
|
||||
const update = await this.marketplaceService.updateInstalledBranch(moduleId, body.branch, report);
|
||||
report('validation', 'Update-Paket wird geprüft', 40);
|
||||
const module = await this.modulesService.updateFromMarketplace(
|
||||
moduleId,
|
||||
update.archive,
|
||||
actor,
|
||||
request.ip ?? null,
|
||||
report,
|
||||
);
|
||||
report('commit', 'Neue Version wird registriert', 96);
|
||||
await this.marketplaceService.commitInstalledBranch(moduleId, update.provider, update.owner, update.repository, update.branch, update.commit);
|
||||
this.marketplaceService.finishOperation(operationId, actor.id, true);
|
||||
return { module };
|
||||
} catch (error) {
|
||||
this.marketplaceService.finishOperation(operationId, actor.id, false);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
@Post('connections/:provider/start')
|
||||
|
||||
Reference in New Issue
Block a user