diff --git a/backend/src/modules/post/post.controller.ts b/backend/src/modules/post/post.controller.ts index 2cb4050..8559143 100644 --- a/backend/src/modules/post/post.controller.ts +++ b/backend/src/modules/post/post.controller.ts @@ -1,4 +1,4 @@ -import { Body, Controller, Get, Param, Post } from '@nestjs/common'; +import { Body, Controller, Delete, Get, Param, Post } from '@nestjs/common'; import { ApiOperation, ApiParam, ApiTags } from '@nestjs/swagger'; import { EGetAll } from 'libs/enums/getAll.enum'; import { ICreatePost, IEditPost } from './post.dto'; @@ -52,6 +52,12 @@ export class PostController { return await this.postService.post(); } + @ApiOperation({ description: 'Get post by order' }) + @Get('get-post-by-order/:order') + async getPostByOrder(@Param('order') order: number) { + return await this.postService.getPostByOrder(order); + } + @ApiOperation({ description: 'Delete post by order' }) @Delete('delete-post-by-order/:order') async deletePostByOrder(@Param('order') order: number) { diff --git a/backend/src/modules/post/post.service.ts b/backend/src/modules/post/post.service.ts index a06094e..d59a4a7 100644 --- a/backend/src/modules/post/post.service.ts +++ b/backend/src/modules/post/post.service.ts @@ -114,6 +114,24 @@ export class PostService { } } + async getPostByOrder(order: number) { + try { + this.logger.log(`[post.getPostByOrder] data: ${order}`); + const posts = await this.postRepository.find({ + relations: { images: true }, + order: { timestamp: 'ASC' }, + where: { posted: false, deleted: false }, + }); + if (Math.abs(+order) > posts.length) { + throw new HttpException('There are only ' + posts.length + ' posts.', HttpStatus.BAD_REQUEST); + } + return posts[Math.abs(+order) - 1]; + } catch (error) { + this.logger.log(`[post.getPostByOrder] error: ${JSON.stringify(error)}`); + throw new HttpException('No post with this id', HttpStatus.NOT_FOUND); + } + } + async getByMediaGroup(mediaGroupId: string) { try { this.logger.log(`[post.getByMediaGroup] data: ${mediaGroupId}`);