Added post editing

This commit is contained in:
2023-11-22 20:59:26 +03:00
parent ac778289d0
commit 11f2dd71eb
3 changed files with 33 additions and 4 deletions

View File

@@ -1,7 +1,7 @@
import { Body, Controller, Get, Param, Post } from '@nestjs/common'; import { Body, Controller, Get, Param, Post } from '@nestjs/common';
import { ApiOperation, ApiParam, ApiTags } from '@nestjs/swagger'; import { ApiOperation, ApiParam, ApiTags } from '@nestjs/swagger';
import { EGetAll } from 'libs/enums/getAll.enum'; import { EGetAll } from 'libs/enums/getAll.enum';
import { ICreatePost } from './post.dto'; import { ICreatePost, IEditPost } from './post.dto';
import { PostService } from './post.service'; import { PostService } from './post.service';
@ApiTags('Post') @ApiTags('Post')
@@ -22,7 +22,7 @@ export class PostController {
return await this.postService.getAllPosts(status || EGetAll.all); return await this.postService.getAllPosts(status || EGetAll.all);
} }
@ApiOperation({ description: 'Getting a post bu uuid' }) @ApiOperation({ description: 'Getting a post by uuid' })
@Get('get/:postId') @Get('get/:postId')
async getPost(@Param('postId') postId: string) { async getPost(@Param('postId') postId: string) {
return await this.postService.getPost(postId); return await this.postService.getPost(postId);
@@ -33,4 +33,10 @@ export class PostController {
async getByMediaGroup(@Param('mediaGroupId') mediaGroupId: string) { async getByMediaGroup(@Param('mediaGroupId') mediaGroupId: string) {
return await this.postService.getByMediaGroup(mediaGroupId); return await this.postService.getByMediaGroup(mediaGroupId);
} }
@ApiOperation({ description: 'Editing a post by its uuid' })
@Post('edit/:postId')
async editPost(@Param('postId') postId: string, @Body() data: IEditPost) {
return await this.postService.editPost(postId, data);
}
} }

View File

@@ -7,3 +7,7 @@ export class ICreatePost {
@ApiProperty({ description: 'Post media group id', example: '123' }) readonly media_group_id?: string; @ApiProperty({ description: 'Post media group id', example: '123' }) readonly media_group_id?: string;
} }
export class IEditPost {
@ApiProperty({ description: 'Post text', example: 'Post text' }) readonly text!: string;
}

View File

@@ -4,7 +4,7 @@ import { Admin } from 'libs/database/admin.entity';
import { Post } from 'libs/database/post.entity'; import { Post } from 'libs/database/post.entity';
import { EGetAll } from 'libs/enums/getAll.enum'; import { EGetAll } from 'libs/enums/getAll.enum';
import { Repository } from 'typeorm'; import { Repository } from 'typeorm';
import { ICreatePost } from './post.dto'; import { ICreatePost, IEditPost } from './post.dto';
@Injectable() @Injectable()
export class PostService { export class PostService {
@@ -25,13 +25,32 @@ export class PostService {
timestamp: new Date(), timestamp: new Date(),
}); });
this.logger.log(`Created new post: ${result.uuid}`); this.logger.log(`Created new post: ${result.uuid}`);
return { status: 'ok' }; return result;
} catch (error) { } catch (error) {
this.logger.debug(`[post.newPost] error: ${JSON.stringify(error)}`); this.logger.debug(`[post.newPost] error: ${JSON.stringify(error)}`);
throw new HttpException('No user with this id', HttpStatus.BAD_REQUEST); throw new HttpException('No user with this id', HttpStatus.BAD_REQUEST);
} }
} }
async editPost(postId: string, data: IEditPost) {
try {
this.logger.log(`[post.editPost] data: ${JSON.stringify(data)}`);
const post = await this.postRepository.findOne({ where: { uuid: postId } });
if (!post) {
throw new HttpException('Post not found', HttpStatus.NOT_FOUND);
}
if (post.text !== data.text) {
post.text = data.text;
post.timestamp = new Date();
await this.postRepository.save(post);
}
return post;
} catch (error) {
this.logger.debug(`[post.editPost] error: ${JSON.stringify(error)}`);
throw new HttpException('Post not found', HttpStatus.NOT_FOUND);
}
}
async getAllPosts(status: EGetAll) { async getAllPosts(status: EGetAll) {
try { try {
let obj: object; let obj: object;