Skip to content

Commit

Permalink
fix: add decorators for proper openapi spec generation
Browse files Browse the repository at this point in the history
  • Loading branch information
JoeCap08055 committed Jul 31, 2024
1 parent 6d467f5 commit 9e3fe8b
Show file tree
Hide file tree
Showing 10 changed files with 61 additions and 53 deletions.
1 change: 1 addition & 0 deletions services/account/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,7 @@
"^#lib/blockchain(|/.*)$": "<rootDir>/libs/common/src/blockchain/$1",
"^#lib/config(|/.*)$": "<rootDir>/libs/common/src/config/$1",
"^#lib/interfaces(|/.*)$": "<rootDir>/libs/common/src/interfaces/$1",
"^#lib/queues(|/.*)$": "<rootDir>/libs/common/src/queues/$1",
"^#lib/services(|/.*)$": "<rootDir>/libs/common/src/services/$1",
"^#lib/types(|/.*)$": "<rootDir>/libs/common/src/types/$1",
"^#lib/utils(|/.*)$": "<rootDir>/libs/common/src/utils/$1"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { FilesUploadDto, UploadResponseDto } from '#libs/dtos/common.dto';
import { FilesUploadDto, UploadResponseDto } from '../../../../../libs/common/src/dtos/common.dto';
import { DSNP_VALID_MIME_TYPES } from '#libs/dtos/validation.dto';
import {
Controller,
Expand All @@ -11,7 +11,7 @@ import {
UseInterceptors,
} from '@nestjs/common';
import { FilesInterceptor } from '@nestjs/platform-express';
import { ApiBody, ApiConsumes, ApiOperation, ApiTags } from '@nestjs/swagger';
import { ApiBody, ApiConsumes, ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger';
import { ApiService } from '../../api.service';

@Controller('v1/asset')
Expand All @@ -32,6 +32,7 @@ export class AssetControllerV1 {
description: 'Asset files',
type: FilesUploadDto,
})
@ApiResponse({ status: '2XX', type: UploadResponseDto })
async assetUpload(
@UploadedFiles(
new ParseFilePipeBuilder()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Body, Controller, Delete, HttpCode, Logger, Param, Post, Put } from '@nestjs/common';
import { ApiOperation, ApiTags } from '@nestjs/swagger';
import { ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger';
import { ApiService } from '../../api.service';
import {
DsnpUserIdParam,
Expand All @@ -25,6 +25,7 @@ export class ContentControllerV1 {
@Post(':userDsnpId/broadcast')
@ApiOperation({ summary: 'Create DSNP Broadcast for User' })
@HttpCode(202)
@ApiResponse({ status: '2XX', type: AnnouncementResponseDto })
async broadcast(
@Param() userDsnpId: DsnpUserIdParam,
@Body() broadcastDto: BroadcastDto,
Expand All @@ -36,6 +37,7 @@ export class ContentControllerV1 {
@Post(':userDsnpId/reply')
@ApiOperation({ summary: 'Create DSNP Reply for User' })
@HttpCode(202)
@ApiResponse({ status: '2XX', type: AnnouncementResponseDto })
async reply(@Param() userDsnpId: DsnpUserIdParam, @Body() replyDto: ReplyDto): Promise<AnnouncementResponseDto> {
const metadata = await this.apiService.validateAssetsAndFetchMetadata(replyDto as AssetIncludedRequestDto);
return this.apiService.enqueueRequest(AnnouncementTypeDto.REPLY, userDsnpId.userDsnpId, replyDto, metadata);
Expand All @@ -44,6 +46,7 @@ export class ContentControllerV1 {
@Post(':userDsnpId/reaction')
@ApiOperation({ summary: 'Create DSNP Reaction for User' })
@HttpCode(202)
@ApiResponse({ status: '2XX', type: AnnouncementResponseDto })
async reaction(
@Param() userDsnpId: DsnpUserIdParam,
@Body() reactionDto: ReactionDto,
Expand All @@ -54,6 +57,7 @@ export class ContentControllerV1 {
@Put(':userDsnpId')
@ApiOperation({ summary: 'Update DSNP Content for User' })
@HttpCode(202)
@ApiResponse({ status: '2XX', type: AnnouncementResponseDto })
async update(@Param() userDsnpId: DsnpUserIdParam, @Body() updateDto: UpdateDto): Promise<AnnouncementResponseDto> {
const metadata = await this.apiService.validateAssetsAndFetchMetadata(updateDto as AssetIncludedRequestDto);
return this.apiService.enqueueRequest(AnnouncementTypeDto.UPDATE, userDsnpId.userDsnpId, updateDto, metadata);
Expand All @@ -62,6 +66,7 @@ export class ContentControllerV1 {
@Delete(':userDsnpId')
@ApiOperation({ summary: 'Delete DSNP Content for User' })
@HttpCode(202)
@ApiResponse({ status: '2XX', type: AnnouncementResponseDto })
async delete(
@Param() userDsnpId: DsnpUserIdParam,
@Body() tombstoneDto: TombstoneDto,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { Controller, Get, Logger, NotFoundException, Param, Post } from '@nestjs
import { InjectQueue } from '@nestjs/bullmq';
import { Queue } from 'bullmq';
import { Job } from 'bullmq/dist/esm/classes/job';
import { ApiOperation, ApiTags } from '@nestjs/swagger';
import { ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger';
import {
createBroadcast,
createProfile,
Expand Down Expand Up @@ -67,6 +67,7 @@ export class DevelopmentControllerV1 {

@Get('/asset/:assetId')
@ApiOperation({ summary: 'Get an Asset given an assetId', description: 'ONLY enabled when ENVIRONMENT="dev".' })
@ApiResponse({ status: '2XX', type: Buffer })
// eslint-disable-next-line consistent-return
async getAsset(@Param('assetId') assetId: string) {
if (await this.ipfsService.isPinned(assetId)) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Body, Controller, HttpCode, Logger, Param, Put } from '@nestjs/common';
import { ApiOperation, ApiTags } from '@nestjs/swagger';
import { ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger';
import { ApiService } from '../../api.service';
import {
DsnpUserIdParam,
Expand All @@ -21,6 +21,7 @@ export class ProfileControllerV1 {
@Put(':userDsnpId')
@ApiOperation({ summary: "Update a user's Profile" })
@HttpCode(202)
@ApiResponse({ status: '2XX', type: AnnouncementResponseDto })
async profile(
@Param() userDsnpId: DsnpUserIdParam,
@Body() profileDto: ProfileDto,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ import {
} from 'class-validator';
import { Type } from 'class-transformer';
import { DURATION_REGEX } from './validation.dto';
import { IsDsnpUserURI } from '#libs/utils/dsnp-validation.decorator';
import { DSNP_USER_URI_REGEX, IsDsnpUserURI } from '#libs/utils/dsnp-validation.decorator';
import { ApiProperty } from '@nestjs/swagger';

// eslint-disable-next-line no-shadow
export enum UnitTypeDto {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ export class AnnouncementResponseDto {
}

export class UploadResponseDto {
@ApiProperty()
assetIds: string[];
}

Expand Down
25 changes: 13 additions & 12 deletions services/content-publishing/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion services/content-publishing/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@
"@nestjs/event-emitter": "^2.0.4",
"@nestjs/platform-express": "^10.3.10",
"@nestjs/schedule": "^4.0.2",
"@nestjs/swagger": "^7.3.1",
"@nestjs/swagger": "^7.4.0",
"@polkadot/api": "^10.12.4",
"@polkadot/api-base": "^10.12.4",
"@polkadot/types": "^10.12.4",
Expand Down
Loading

0 comments on commit 9e3fe8b

Please sign in to comment.