Skip to content

Commit

Permalink
feat(pmp): edit repository - backend
Browse files Browse the repository at this point in the history
refs #107
  • Loading branch information
ABartoszko committed May 13, 2020
1 parent 4686fd0 commit e620702
Show file tree
Hide file tree
Showing 7 changed files with 61 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Body, Controller, Delete, Get, Param, Post, UseGuards } from '@nestjs/common';
import { Body, Controller, Delete, Get, Param, Post, Put, UseGuards } from '@nestjs/common';
import { ApiBearerAuth, ApiTags } from '@nestjs/swagger';
import {
AuthGuard,
Expand All @@ -10,12 +10,14 @@ import {
import {
AddRepositoryCommand,
DeleteRepositoryCommand,
EditRepositoryCommand,
RepositoryFacade
} from '@pimp-my-pr/server/repository/core/application-services';
import { RepositoryEntity } from '@pimp-my-pr/server/repository/core/domain';
import { extractFullName } from '@pimp-my-pr/server/shared/util-repository';
import { AddRepositoryDto } from '../dtos/add-repository.dto';
import { UserRepositoryGuard } from '../guards/user-repository.guard';
import { EditRepositoryDto } from '../dtos/edit-repository.dto';

@ApiTags('repository')
@ApiBearerAuth()
Expand Down Expand Up @@ -52,4 +54,19 @@ export class RepositoryController {
delete(@Param('repositoryId') repositoryId: string): Promise<void> {
return this.repositoryFacade.deleteRepository(new DeleteRepositoryCommand(repositoryId));
}

@UseGuards(UserRepositoryGuard)
@Put(':repositoryId')
edit(
@Param('repositoryId') repositoryId: string,
@Body() editRepositoryDto: EditRepositoryDto
): Promise<void> {
return this.repositoryFacade.editRepository(
new EditRepositoryCommand(
repositoryId,
editRepositoryDto.maxLines,
editRepositoryDto.maxWaitingTime
)
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { ApiProperty } from '@nestjs/swagger';

export class EditRepositoryDto {
@ApiProperty()
maxLines?: number;

@ApiProperty()
maxWaitingTime?: number;
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@ export * from './lib/queries/list-repositories-statistics/repositories-statistic
export * from './lib/read-models/reviewer-model-with-pr.interface';
export * from './lib/commands/add-repository/add-repository.command';
export * from './lib/commands/delete-repository/delete-repository.command';
export * from './lib/commands/edit-repository/edit-repository.command';
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
export class EditRepositoryCommand {
constructor(
public repositoryId: string,
public maxLines?: number,
public maxWaitingTime?: number
) {}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import { CommandHandler, ICommandHandler } from '@nestjs/cqrs';
import { RepositoryRepository } from '@pimp-my-pr/server/repository/core/domain-services';
import { EditRepositoryCommand } from './edit-repository.command';
import { RepositoryEntity } from '@pimp-my-pr/server/repository/core/domain';

@CommandHandler(EditRepositoryCommand)
export class EditRepositoryHandler implements ICommandHandler<EditRepositoryCommand> {
constructor(private repositoryRepository: RepositoryRepository) {}

async execute(command: EditRepositoryCommand): Promise<void> {
const { repositoryId, maxLines, maxWaitingTime } = command;

const repositoryData = await this.repositoryRepository.getById(repositoryId);

const updatedRepository = { ...repositoryData, maxLines, maxWaitingTime } as RepositoryEntity;

return this.repositoryRepository.save(updatedRepository);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { CommandBus, QueryBus } from '@nestjs/cqrs';

import {
DeleteRepositoryCommand,
EditRepositoryCommand,
RepositoriesStatisticsItemReadModel,
ReviewersStatisticsItemReadModel,
ReviewerStatisticsReadModel
Expand All @@ -28,6 +29,10 @@ export class RepositoryFacade {
return this.commandBus.execute(command);
}

editRepository(command: EditRepositoryCommand): Promise<void> {
return this.commandBus.execute(command);
}

getRepositoryStatistics(
repositoryId: string,
token: string,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,12 @@ import { ListRepositoriesHandler } from './queries/list-repositories/list-reposi
import { ListReviewersStatisticsHandler } from './queries/list-reviewers-statistics/list-reviewers-statistics.handler';
import { RepositoryFacade } from './repository.facade';
import { DeleteRepositoryHandler } from './commands/delete-repository/delete-repository.handler';
import { EditRepositoryHandler } from './commands/edit-repository/edit-repository.handler';

const QueryHandlers = [
AddRepositoryHandler,
DeleteRepositoryHandler,
EditRepositoryHandler,
GetRepositoryStatisticsHandler,
GetReviewerStatisticsHandler,
ListRepositoriesStatisticsHandler,
Expand Down

0 comments on commit e620702

Please sign in to comment.