update: add blog comment to the blog fetch by id

This commit is contained in:
mahyargdz
2025-04-12 16:14:20 +03:30
parent a9879732a3
commit 4ae735b048
4 changed files with 41 additions and 10 deletions
+2 -1
View File
@@ -20,6 +20,7 @@ import { AddressModule } from "./modules/address/address.module";
import { AdsModule } from "./modules/ads/ads.module"; import { AdsModule } from "./modules/ads/ads.module";
import { AnnouncementsModule } from "./modules/announcements/announcement.module"; import { AnnouncementsModule } from "./modules/announcements/announcement.module";
import { AuthModule } from "./modules/auth/auth.module"; import { AuthModule } from "./modules/auth/auth.module";
import { BlogsModule } from "./modules/blogs/blogs.module";
import { ContactUsModule } from "./modules/contact-us/contact-us.module"; import { ContactUsModule } from "./modules/contact-us/contact-us.module";
import { CriticismModule } from "./modules/criticisms/criticisms.module"; import { CriticismModule } from "./modules/criticisms/criticisms.module";
import { DanakServicesModule } from "./modules/danak-services/danak-services.module"; import { DanakServicesModule } from "./modules/danak-services/danak-services.module";
@@ -35,7 +36,6 @@ import { TicketsModule } from "./modules/tickets/tickets.module";
import { UploaderModule } from "./modules/uploader/uploader.module"; import { UploaderModule } from "./modules/uploader/uploader.module";
import { UsersModule } from "./modules/users/users.module"; import { UsersModule } from "./modules/users/users.module";
import { WalletsModule } from "./modules/wallets/wallets.module"; import { WalletsModule } from "./modules/wallets/wallets.module";
@Module({ @Module({
imports: [ imports: [
TelegrafModule.forRootAsync(telegrafConfig()), TelegrafModule.forRootAsync(telegrafConfig()),
@@ -65,6 +65,7 @@ import { WalletsModule } from "./modules/wallets/wallets.module";
AdsModule, AdsModule,
AddressModule, AddressModule,
DashboardModule, DashboardModule,
BlogsModule,
LoggerModule, LoggerModule,
], ],
controllers: [], controllers: [],
@@ -86,12 +86,12 @@ export class BlogsController {
return this.blogsService.createComment(paramDto.id, createCommentDto, userId); return this.blogsService.createComment(paramDto.id, createCommentDto, userId);
} }
@ApiOperation({ summary: "Get all comments for a blog" }) @ApiOperation({ summary: "Get all comments for a blog (admin route)" })
@AdminRoute() @AdminRoute()
@PermissionsDec(PermissionEnum.BLOGS) @PermissionsDec(PermissionEnum.BLOGS)
@Get(":id/comments") @Get(":id/comments")
getBlogComments(@Param() paramDto: ParamDto) { getBlogCommentsForAdmin(@Param() paramDto: ParamDto) {
return this.blogsService.getBlogComments(paramDto.id); return this.blogsService.getBlogCommentsForAdmin(paramDto.id);
} }
@ApiOperation({ summary: "Update the status of a comment (admin route)" }) @ApiOperation({ summary: "Update the status of a comment (admin route)" })
+4 -3
View File
@@ -150,7 +150,8 @@ export class BlogsService {
async getBlogById(id: string) { async getBlogById(id: string) {
const blog = await this.findBlogById(id); const blog = await this.findBlogById(id);
return { blog }; const comments = await this.blogCommentsRepository.findBlogCommentsByBlogId(id);
return { blog, comments };
} }
//*********************************** */ //*********************************** */
@@ -208,8 +209,8 @@ export class BlogsService {
} }
//*********************************** */ //*********************************** */
async getBlogComments(blogId: string) { async getBlogCommentsForAdmin(blogId: string) {
const comments = await this.blogCommentsRepository.findAllByBlogId(blogId); const comments = await this.blogCommentsRepository.findBlogCommentsForAdmin(blogId);
return { comments }; return { comments };
} }
@@ -1,6 +1,6 @@
import { Injectable } from "@nestjs/common"; import { Injectable } from "@nestjs/common";
import { InjectRepository } from "@nestjs/typeorm"; import { InjectRepository } from "@nestjs/typeorm";
import { Repository } from "typeorm"; import { IsNull, Repository } from "typeorm";
import { BlogComment } from "../entities/blog-comment.entity"; import { BlogComment } from "../entities/blog-comment.entity";
import { CommentStatus } from "../enums/comment-status.enum"; import { CommentStatus } from "../enums/comment-status.enum";
@@ -17,10 +17,39 @@ export class BlogCommentsRepository extends Repository<BlogComment> {
}); });
} }
async findAllByBlogId(blogId: string) { async findBlogCommentsForAdmin(blogId: string) {
return this.find({ return this.find({
where: { blog: { id: blogId }, status: CommentStatus.APPROVED }, where: { blog: { id: blogId, deletedAt: IsNull() } },
order: { createdAt: "DESC" }, order: { createdAt: "DESC" },
relations: {
user: true,
},
select: {
id: true,
title: true,
content: true,
createdAt: true,
status: true,
user: { id: true, firstName: true, lastName: true },
},
});
}
async findBlogCommentsByBlogId(blogId: string) {
return this.find({
where: { blog: { id: blogId, deletedAt: IsNull() }, status: CommentStatus.APPROVED },
order: { createdAt: "DESC" },
relations: {
user: true,
},
select: {
id: true,
title: true,
content: true,
createdAt: true,
status: true,
user: { id: true, firstName: true, lastName: true },
},
}); });
} }
} }