66 lines
3.0 KiB
TypeScript
66 lines
3.0 KiB
TypeScript
import { Controller, Get, Post, Patch, Delete, Param, Body } from '@nestjs/common';
|
|
import { ApiTags, ApiOperation, ApiResponse, ApiParam } from '@nestjs/swagger';
|
|
import { WorkspaceService } from '../providers/workspace.service';
|
|
import { CreateWorkspaceDto } from '../dto/workspace/create-workspace.dto';
|
|
import { UpdateWorkspaceDto } from '../dto/workspace/update-workspace.dto';
|
|
import { TMWorkspace } from '../entities/workspace.entity';
|
|
import { AdminRoute } from '../../../common/decorators/admin.decorator';
|
|
import { PermissionsDec } from '../../../common/decorators/permission.decorator';
|
|
import { PermissionEnum } from '../../users/enums/permission.enum';
|
|
import { UserDec } from '../../../common/decorators/user.decorator';
|
|
import { AuthGuards } from '../../../common/decorators/auth-guard.decorator';
|
|
import { ITokenPayload } from '../../auth/interfaces/IToken-payload';
|
|
|
|
@AuthGuards()
|
|
@AdminRoute()
|
|
@ApiTags('Task Manager - Workspaces')
|
|
@Controller('task-manager/workspaces')
|
|
export class WorkspaceController {
|
|
constructor(private readonly workspaceService: WorkspaceService) {}
|
|
|
|
@Get(':id')
|
|
@PermissionsDec(PermissionEnum.WORKSPACE)
|
|
@ApiOperation({summary: "Get one workspace by ID"})
|
|
@ApiResponse({status: 200, description: 'Received workspace', type: TMWorkspace})
|
|
@ApiResponse({status: 404, description: 'Workspace Not Found!'})
|
|
@ApiResponse({status: 400, description: 'Bad Request!'})
|
|
findOne(@Param('id') id: string): Promise<TMWorkspace> {
|
|
return this.workspaceService.findOneOrFail(id);
|
|
}
|
|
|
|
@Post()
|
|
@PermissionsDec(PermissionEnum.WORKSPACE)
|
|
@ApiOperation({ summary: 'Create a new workspace' })
|
|
@ApiResponse({ status: 201, description: 'Workspace created', type: TMWorkspace })
|
|
create(@Body() body: CreateWorkspaceDto): Promise<TMWorkspace> {
|
|
return this.workspaceService.create(body);
|
|
}
|
|
|
|
@Patch(':id')
|
|
@PermissionsDec(PermissionEnum.WORKSPACE)
|
|
@ApiOperation({ summary: 'Update a workspace' })
|
|
@ApiParam({ name: 'id', description: 'Workspace ID' })
|
|
@ApiResponse({ status: 200, description: 'Workspace updated', type: TMWorkspace })
|
|
@ApiResponse({ status: 404, description: 'Workspace not found' })
|
|
update(@Param('id') id: string, @Body() body: UpdateWorkspaceDto): Promise<TMWorkspace> {
|
|
return this.workspaceService.update(id, body);
|
|
}
|
|
|
|
@Delete(':id')
|
|
@PermissionsDec(PermissionEnum.WORKSPACE)
|
|
@ApiOperation({ summary: 'Delete a workspace' })
|
|
@ApiParam({ name: 'id', description: 'Workspace ID' })
|
|
@ApiResponse({ status: 200, description: 'Workspace deleted' })
|
|
@ApiResponse({ status: 404, description: 'Workspace not found' })
|
|
remove(@Param('id') id: string): Promise<TMWorkspace> {
|
|
return this.workspaceService.remove(id);
|
|
}
|
|
|
|
@Get('byuser')
|
|
@ApiOperation({summary: 'Get User WorkSpaces'})
|
|
@ApiResponse({ status: 200, description: 'Got Workspaces successfully!' })
|
|
@ApiResponse({ status: 404, description: 'Bad Request!' })
|
|
findByUser(@UserDec() user: ITokenPayload) {
|
|
return this.workspaceService.findByUser(user.id, user.permissions);
|
|
}
|
|
} |