src/workspace/workspace-contributors.controller.ts
workspaces/:id/contributors
Methods |
| Async addOneWorkspaceContributorByLoginForUser |
addOneWorkspaceContributorByLoginForUser(id: string, contributorLogin: string, userId: number)
|
Decorators :
@Post('login/:contributorLogin')
|
|
Returns :
Promise<DbWorkspace>
|
| Async addOneWorkspaceContributorForUser |
addOneWorkspaceContributorForUser(id: string, contributorId: number, userId: number)
|
Decorators :
@Post('id/:contributorId')
|
|
Returns :
Promise<DbWorkspace>
|
| Async addWorkspaceContributorsForUser | ||||||||||||
addWorkspaceContributorsForUser(id: string, updateWorkspaceContributorsDto: UpdateWorkspaceContributorsDto, userId: number)
|
||||||||||||
Decorators :
@Post()
|
||||||||||||
|
Parameters :
Returns :
Promise<DbWorkspace>
|
| Async deleteOneWorkspaceContributorByLoginForUser |
deleteOneWorkspaceContributorByLoginForUser(id: string, contributorLogin: string, userId: number)
|
Decorators :
@Delete('login/:contributorLogin')
|
|
Returns :
unknown
|
| Async deleteOneWorkspaceContributorForUser |
deleteOneWorkspaceContributorForUser(id: string, contributorId: number, userId: number)
|
Decorators :
@Delete('id/:contributorId')
|
|
Returns :
unknown
|
| Async deleteWorkspaceContributorsForUser | ||||||||||||
deleteWorkspaceContributorsForUser(id: string, deleteWorkspaceContributorsDto: DeleteWorkspaceContributorsDto, userId: number)
|
||||||||||||
Decorators :
@Delete()
|
||||||||||||
|
Parameters :
Returns :
unknown
|
| Async getWorkspaceContributorsForUser | ||||||||||||
getWorkspaceContributorsForUser(id: string, userId: number | undefined, pageOptionsDto: PageOptionsDto)
|
||||||||||||
Decorators :
@Get()
|
||||||||||||
|
Parameters :
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);
}
}