File

src/workspace/workspace-contributors.controller.ts

Prefix

workspaces/:id/contributors

Index

Methods

Methods

Async addOneWorkspaceContributorByLoginForUser
addOneWorkspaceContributorByLoginForUser(id: string, contributorLogin: string, userId: number)
Decorators :
@Post('login/:contributorLogin')
@ApiOperation({operationId: 'addOneWorkspaceContributorByLoginForUser', summary: 'Updates a workspace contributor for the authenticated user by the contributor login'})
@ApiBearerAuth()
@UseGuards(SupabaseGuard)
@ApiOkResponse({type: DbWorkspaceContributor})
@ApiNotFoundResponse({description: 'Unable to update workspace contributor'})
@ApiUnprocessableEntityResponse({description: 'Unable to process workspace contributor'})
@ApiParam({name: 'id', type: 'string'})
@ApiParam({name: 'contributorLogin', type: 'string'})
Parameters :
Name Type Optional
id string No
contributorLogin string No
userId number No
Async addOneWorkspaceContributorForUser
addOneWorkspaceContributorForUser(id: string, contributorId: number, userId: number)
Decorators :
@Post('id/:contributorId')
@ApiOperation({operationId: 'addOneWorkspaceContributorForUser', summary: 'Updates a workspace contributor for the authenticated user'})
@ApiBearerAuth()
@UseGuards(SupabaseGuard)
@ApiOkResponse({type: DbWorkspaceContributor})
@ApiNotFoundResponse({description: 'Unable to update workspace contributor'})
@ApiUnprocessableEntityResponse({description: 'Unable to process workspace contributor'})
@ApiParam({name: 'id', type: 'string'})
@ApiParam({name: 'contributorId', type: 'string'})
Parameters :
Name Type Optional
id string No
contributorId number No
userId number No
Async addWorkspaceContributorsForUser
addWorkspaceContributorsForUser(id: string, updateWorkspaceContributorsDto: UpdateWorkspaceContributorsDto, userId: number)
Decorators :
@Post()
@ApiOperation({operationId: 'addWorkspaceContributorsForUser', summary: 'Updates workspace contributor for the authenticated user'})
@ApiBearerAuth()
@UseGuards(SupabaseGuard)
@ApiOkResponse({type: DbWorkspaceContributor})
@ApiNotFoundResponse({description: 'Unable to update workspace contributors'})
@ApiUnprocessableEntityResponse({description: 'Unable to process workspace contributors'})
@ApiBody({type: UpdateWorkspaceContributorsDto})
@ApiParam({name: 'id', type: 'string'})
Parameters :
Name Type Optional
id string No
updateWorkspaceContributorsDto UpdateWorkspaceContributorsDto No
userId number No
Async deleteOneWorkspaceContributorByLoginForUser
deleteOneWorkspaceContributorByLoginForUser(id: string, contributorLogin: string, userId: number)
Decorators :
@Delete('login/:contributorLogin')
@ApiOperation({operationId: 'deleteOneWorkspaceContributorByLoginForUser', summary: 'Delete a workspace contributor by their login for the authenticated user'})
@ApiBearerAuth()
@UseGuards(SupabaseGuard)
@ApiNotFoundResponse({description: 'Unable to delete workspace contributor'})
@ApiBadRequestResponse({description: 'Invalid request'})
@ApiParam({name: 'id', type: 'string'})
@ApiParam({name: 'contributorLogin', type: 'string'})
Parameters :
Name Type Optional
id string No
contributorLogin string No
userId number No
Returns : unknown
Async deleteOneWorkspaceContributorForUser
deleteOneWorkspaceContributorForUser(id: string, contributorId: number, userId: number)
Decorators :
@Delete('id/:contributorId')
@ApiOperation({operationId: 'deleteOneWorkspaceContributorForUser', summary: 'Delete a workspace contributors for the authenticated user'})
@ApiBearerAuth()
@UseGuards(SupabaseGuard)
@ApiNotFoundResponse({description: 'Unable to delete workspace contributor'})
@ApiBadRequestResponse({description: 'Invalid request'})
@ApiParam({name: 'id', type: 'string'})
@ApiParam({name: 'contributorId', type: 'number'})
Parameters :
Name Type Optional
id string No
contributorId number No
userId number No
Returns : unknown
Async deleteWorkspaceContributorsForUser
deleteWorkspaceContributorsForUser(id: string, deleteWorkspaceContributorsDto: DeleteWorkspaceContributorsDto, userId: number)
Decorators :
@Delete()
@ApiOperation({operationId: 'deleteWorkspaceContributorsForUser', summary: 'Deletes workspace contributors for the authenticated user'})
@ApiBearerAuth()
@UseGuards(SupabaseGuard)
@ApiNotFoundResponse({description: 'Unable to delete workspace contributors'})
@ApiBadRequestResponse({description: 'Invalid request'})
@ApiBody({type: DeleteWorkspaceContributorsDto})
@ApiParam({name: 'id', type: 'string'})
Parameters :
Name Type Optional
id string No
deleteWorkspaceContributorsDto DeleteWorkspaceContributorsDto No
userId number No
Returns : unknown
Async getWorkspaceContributorsForUser
getWorkspaceContributorsForUser(id: string, userId: number | undefined, pageOptionsDto: PageOptionsDto)
Decorators :
@Get()
@ApiOperation({operationId: 'getWorkspaceContributorsForUser', summary: 'Gets workspace contributors for the authenticated user'})
@ApiBearerAuth()
@UseGuards(PassthroughSupabaseGuard)
@ApiOkResponse({type: DbWorkspaceContributor})
@ApiNotFoundResponse({description: 'Unable to get user workspace contributors'})
@ApiBadRequestResponse({description: 'Invalid request'})
Parameters :
Name Type Optional
id string No
userId number | undefined No
pageOptionsDto PageOptionsDto No
Returns : Promise<PageDto<DbWorkspaceContributor>>
import { Body, Controller, Delete, Get, Param, ParseUUIDPipe, Post, Query, UseGuards } from "@nestjs/common";
import {
  ApiOperation,
  ApiOkResponse,
  ApiNotFoundResponse,
  ApiBearerAuth,
  ApiTags,
  ApiBadRequestResponse,
  ApiUnprocessableEntityResponse,
  ApiBody,
  ApiParam,
} from "@nestjs/swagger";

import { PassthroughSupabaseGuard } from "../auth/passthrough-supabase.guard";
import { PageOptionsDto } from "../common/dtos/page-options.dto";
import { PageDto } from "../common/dtos/page.dto";
import { OptionalUserId, UserId } from "../auth/supabase.user.decorator";
import { SupabaseGuard } from "../auth/supabase.guard";

import { WorkspaceContributorsService } from "./workspace-contributors.service";
import { DbWorkspaceContributor } from "./entities/workspace-contributors.entity";
import { UpdateWorkspaceContributorsDto } from "./dtos/update-workspace-contributors.dto";
import { DbWorkspace } from "./entities/workspace.entity";
import { DeleteWorkspaceContributorsDto } from "./dtos/delete-workspace-contributors.dto";

@Controller("workspaces/:id/contributors")
@ApiTags("Workspace contributors service")
export class WorkspaceContributorController {
  constructor(private readonly workspaceContributorService: WorkspaceContributorsService) {}

  @Get()
  @ApiOperation({
    operationId: "getWorkspaceContributorsForUser",
    summary: "Gets workspace contributors for the authenticated user",
  })
  @ApiBearerAuth()
  @UseGuards(PassthroughSupabaseGuard)
  @ApiOkResponse({ type: DbWorkspaceContributor })
  @ApiNotFoundResponse({ description: "Unable to get user workspace contributors" })
  @ApiBadRequestResponse({ description: "Invalid request" })
  async getWorkspaceContributorsForUser(
    @Param("id", ParseUUIDPipe) id: string,
    @OptionalUserId() userId: number | undefined,
    @Query() pageOptionsDto: PageOptionsDto
  ): Promise<PageDto<DbWorkspaceContributor>> {
    return this.workspaceContributorService.findAllContributorsGuarded(pageOptionsDto, id, userId);
  }

  @Post()
  @ApiOperation({
    operationId: "addWorkspaceContributorsForUser",
    summary: "Updates workspace contributor for the authenticated user",
  })
  @ApiBearerAuth()
  @UseGuards(SupabaseGuard)
  @ApiOkResponse({ type: DbWorkspaceContributor })
  @ApiNotFoundResponse({ description: "Unable to update workspace contributors" })
  @ApiUnprocessableEntityResponse({ description: "Unable to process workspace contributors" })
  @ApiBody({ type: UpdateWorkspaceContributorsDto })
  @ApiParam({ name: "id", type: "string" })
  async addWorkspaceContributorsForUser(
    @Param("id", ParseUUIDPipe) id: string,
    @Body() updateWorkspaceContributorsDto: UpdateWorkspaceContributorsDto,
    @UserId() userId: number
  ): Promise<DbWorkspace> {
    return this.workspaceContributorService.addWorkspaceContributors(updateWorkspaceContributorsDto, id, userId);
  }

  @Post("id/:contributorId")
  @ApiOperation({
    operationId: "addOneWorkspaceContributorForUser",
    summary: "Updates a workspace contributor for the authenticated user",
  })
  @ApiBearerAuth()
  @UseGuards(SupabaseGuard)
  @ApiOkResponse({ type: DbWorkspaceContributor })
  @ApiNotFoundResponse({ description: "Unable to update workspace contributor" })
  @ApiUnprocessableEntityResponse({ description: "Unable to process workspace contributor" })
  @ApiParam({ name: "id", type: "string" })
  @ApiParam({ name: "contributorId", type: "string" })
  async addOneWorkspaceContributorForUser(
    @Param("id", ParseUUIDPipe) id: string,
    @Param("contributorId") contributorId: number,
    @UserId() userId: number
  ): Promise<DbWorkspace> {
    return this.workspaceContributorService.addOneWorkspaceContributor(id, userId, contributorId);
  }

  @Post("login/:contributorLogin")
  @ApiOperation({
    operationId: "addOneWorkspaceContributorByLoginForUser",
    summary: "Updates a workspace contributor for the authenticated user by the contributor login",
  })
  @ApiBearerAuth()
  @UseGuards(SupabaseGuard)
  @ApiOkResponse({ type: DbWorkspaceContributor })
  @ApiNotFoundResponse({ description: "Unable to update workspace contributor" })
  @ApiUnprocessableEntityResponse({ description: "Unable to process workspace contributor" })
  @ApiParam({ name: "id", type: "string" })
  @ApiParam({ name: "contributorLogin", type: "string" })
  async addOneWorkspaceContributorByLoginForUser(
    @Param("id", ParseUUIDPipe) id: string,
    @Param("contributorLogin") contributorLogin: string,
    @UserId() userId: number
  ): Promise<DbWorkspace> {
    return this.workspaceContributorService.addOneWorkspaceContributor(id, userId, undefined, contributorLogin);
  }

  @Delete()
  @ApiOperation({
    operationId: "deleteWorkspaceContributorsForUser",
    summary: "Deletes workspace contributors for the authenticated user",
  })
  @ApiBearerAuth()
  @UseGuards(SupabaseGuard)
  @ApiNotFoundResponse({ description: "Unable to delete workspace contributors" })
  @ApiBadRequestResponse({ description: "Invalid request" })
  @ApiBody({ type: DeleteWorkspaceContributorsDto })
  @ApiParam({ name: "id", type: "string" })
  async deleteWorkspaceContributorsForUser(
    @Param("id", ParseUUIDPipe) id: string,
    @Body() deleteWorkspaceContributorsDto: DeleteWorkspaceContributorsDto,
    @UserId() userId: number
  ) {
    return this.workspaceContributorService.deleteWorkspaceContributors(deleteWorkspaceContributorsDto, id, userId);
  }

  @Delete("id/:contributorId")
  @ApiOperation({
    operationId: "deleteOneWorkspaceContributorForUser",
    summary: "Delete a workspace contributors for the authenticated user",
  })
  @ApiBearerAuth()
  @UseGuards(SupabaseGuard)
  @ApiNotFoundResponse({ description: "Unable to delete workspace contributor" })
  @ApiBadRequestResponse({ description: "Invalid request" })
  @ApiParam({ name: "id", type: "string" })
  @ApiParam({ name: "contributorId", type: "number" })
  async deleteOneWorkspaceContributorForUser(
    @Param("id", ParseUUIDPipe) id: string,
    @Param("contributorId") contributorId: number,
    @UserId() userId: number
  ) {
    return this.workspaceContributorService.deleteOneWorkspaceContributor(id, userId, contributorId);
  }

  @Delete("login/:contributorLogin")
  @ApiOperation({
    operationId: "deleteOneWorkspaceContributorByLoginForUser",
    summary: "Delete a workspace contributor by their login for the authenticated user",
  })
  @ApiBearerAuth()
  @UseGuards(SupabaseGuard)
  @ApiNotFoundResponse({ description: "Unable to delete workspace contributor" })
  @ApiBadRequestResponse({ description: "Invalid request" })
  @ApiParam({ name: "id", type: "string" })
  @ApiParam({ name: "contributorLogin", type: "string" })
  async deleteOneWorkspaceContributorByLoginForUser(
    @Param("id", ParseUUIDPipe) id: string,
    @Param("contributorLogin") contributorLogin: string,
    @UserId() userId: number
  ) {
    return this.workspaceContributorService.deleteOneWorkspaceContributor(id, userId, undefined, contributorLogin);
  }
}

results matching ""

    No results matching ""