mirror of
https://github.com/MrSedan/neuro-reply-website.git
synced 2026-01-14 20:49:42 +03:00
Added post editing
This commit is contained in:
@@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user