first commit
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
import { CommandHandler, ICommandHandler } from '@nestjs/cqrs';
|
||||
import { ReleaseNamesRepository } from '../ports/release-names.repository';
|
||||
import { CommandResult, ack } from './command-result';
|
||||
import { UpdateReleaseCommand } from './update-release.command';
|
||||
import { WriteAccess } from './write-access';
|
||||
|
||||
@CommandHandler(UpdateReleaseCommand)
|
||||
export class UpdateReleaseCommandHandler
|
||||
implements ICommandHandler<UpdateReleaseCommand>
|
||||
{
|
||||
constructor(
|
||||
private readonly access: WriteAccess,
|
||||
private readonly releaseNames: ReleaseNamesRepository,
|
||||
) {}
|
||||
|
||||
async execute(command: UpdateReleaseCommand): Promise<CommandResult> {
|
||||
const release = await this.access.release(command.releaseId);
|
||||
(await this.access.project(release.projectId)).assertCanManage(
|
||||
command.actorId,
|
||||
);
|
||||
|
||||
const previousName = release.name;
|
||||
release.update(command.actorId, command.changes);
|
||||
if (release.name !== previousName) {
|
||||
await this.releaseNames.reserve(
|
||||
release.projectId,
|
||||
release.name,
|
||||
release.id,
|
||||
);
|
||||
}
|
||||
await release.commitAndWait();
|
||||
if (release.name !== previousName) {
|
||||
await this.releaseNames.free(release.projectId, previousName);
|
||||
}
|
||||
return ack(release);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user