From db67834cfd6ee1f038d7d21740242906785d3918 Mon Sep 17 00:00:00 2001 From: Sergey Elpashev Date: Wed, 24 Jan 2024 15:49:17 +0300 Subject: [PATCH] Post editing by its order num --- backend/src/modules/post/post.controller.ts | 6 ++++++ backend/src/modules/post/post.service.ts | 24 +++++++++++++++++++++ docker-compose.dev.yml | 2 +- 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/backend/src/modules/post/post.controller.ts b/backend/src/modules/post/post.controller.ts index 08e0677..dd57d95 100644 --- a/backend/src/modules/post/post.controller.ts +++ b/backend/src/modules/post/post.controller.ts @@ -40,6 +40,12 @@ export class PostController { return await this.postService.editPost(postId, data); } + @ApiOperation({ description: 'Editing post text by its order num' }) + @Post('edit-post-by-order-num/:order') + async editPostByOrderNum(@Param('order') order: string, @Body() data: IEditPost) { + return await this.postService.editPostByOrderNum(order, data); + } + @ApiOperation({ description: 'Get post to post' }) @Get('post') async post() { diff --git a/backend/src/modules/post/post.service.ts b/backend/src/modules/post/post.service.ts index 0d12afe..0694539 100644 --- a/backend/src/modules/post/post.service.ts +++ b/backend/src/modules/post/post.service.ts @@ -52,6 +52,30 @@ export class PostService { } } + async editPostByOrderNum(order: string, data: IEditPost) { + try { + this.logger.log(`[post.editPostByOrderNum] data: ${JSON.stringify(data)}`); + const posts = await this.postRepository.find({ where: { posted: false }, order: { timestamp: 'ASC' } }); + if (Math.abs(+order) > posts.length) { + throw new HttpException('There are only ' + posts.length + ' unsent messages.', HttpStatus.BAD_REQUEST); + } + const post = posts[Math.abs(+order) - 1]; + if (post.text !== data.text) { + post.text = data.text; + post.edit_timestamp = new Date(); + await this.postRepository.save(post); + } + return post; + } catch (error) { + if (error instanceof HttpException) { + this.logger.debug(`[post.editPostByOrderNum] Order: ${order} is bad`); + throw error; + } + this.logger.debug(`[post.editPostByOrderNum] Bad data. Order: ${order}. Data: ${JSON.stringify(data)}`); + throw new HttpException('Server error', HttpStatus.BAD_GATEWAY); + } + } + async getAllPosts(status: EGetAll) { try { let obj: object; diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index d214f58..6ff60fe 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -5,7 +5,7 @@ services: container_name: neuro_db_dev image: postgres:alpine environment: - - POSTGRES_USER=${DATABASE_USER} + - POSTGRES_USERNAME=${DATABASE_USERNAME} - POSTGRES_PASSWORD=${DATABASE_PASSWORD} - POSTGRES_DB=${DATABASE_NAME} - PGDATA=/var/lib/postgresql/data/pgdata