Skip to content

Commit 751639b

Browse files
Delete comments when deleting blog posts and pages
1 parent 9147a34 commit 751639b

File tree

5 files changed

+30
-2
lines changed

5 files changed

+30
-2
lines changed

modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogPostAdminAppService.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
using Volo.Abp.Users;
1111
using Volo.CmsKit.Admin.MediaDescriptors;
1212
using Volo.CmsKit.Blogs;
13+
using Volo.CmsKit.Comments;
1314
using Volo.CmsKit.Features;
1415
using Volo.CmsKit.GlobalFeatures;
1516
using Volo.CmsKit.Permissions;
@@ -25,6 +26,8 @@ public class BlogPostAdminAppService : CmsKitAppServiceBase, IBlogPostAdminAppSe
2526
protected BlogPostManager BlogPostManager { get; }
2627
protected IBlogPostRepository BlogPostRepository { get; }
2728
protected IBlogRepository BlogRepository { get; }
29+
30+
protected ICommentRepository CommentRepository { get; }
2831
protected ICmsUserLookupService UserLookupService { get; }
2932

3033
protected IMediaDescriptorAdminAppService MediaDescriptorAdminAppService { get; }
@@ -34,13 +37,15 @@ public BlogPostAdminAppService(
3437
IBlogPostRepository blogPostRepository,
3538
IBlogRepository blogRepository,
3639
ICmsUserLookupService userLookupService,
37-
IMediaDescriptorAdminAppService mediaDescriptorAdminAppService)
40+
IMediaDescriptorAdminAppService mediaDescriptorAdminAppService,
41+
ICommentRepository commentRepository)
3842
{
3943
BlogPostManager = blogPostManager;
4044
BlogPostRepository = blogPostRepository;
4145
BlogRepository = blogRepository;
4246
UserLookupService = userLookupService;
4347
MediaDescriptorAdminAppService = mediaDescriptorAdminAppService;
48+
CommentRepository = commentRepository;
4449
}
4550

4651
[Authorize(CmsKitAdminPermissions.BlogPosts.Create)]
@@ -127,6 +132,7 @@ public virtual async Task<PagedResultDto<BlogPostListDto>> GetListAsync(BlogPost
127132
public virtual async Task DeleteAsync(Guid id)
128133
{
129134
await BlogPostRepository.DeleteAsync(id);
135+
await CommentRepository.DeleteByEntityTypeAsync(BlogPostConsts.EntityType, id.ToString());
130136
}
131137

132138
[Authorize(CmsKitAdminPermissions.BlogPosts.Publish)]

modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Pages/PageAdminAppService.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using Volo.Abp.Features;
99
using Volo.Abp.GlobalFeatures;
1010
using Volo.Abp.ObjectExtending;
11+
using Volo.CmsKit.Comments;
1112
using Volo.CmsKit.Features;
1213
using Volo.CmsKit.GlobalFeatures;
1314
using Volo.CmsKit.Pages;
@@ -21,6 +22,8 @@ namespace Volo.CmsKit.Admin.Pages;
2122
public class PageAdminAppService : CmsKitAdminAppServiceBase, IPageAdminAppService
2223
{
2324
protected IPageRepository PageRepository { get; }
25+
26+
protected ICommentRepository CommentRepository { get; }
2427

2528
protected PageManager PageManager { get; }
2629

@@ -29,11 +32,13 @@ public class PageAdminAppService : CmsKitAdminAppServiceBase, IPageAdminAppServi
2932
public PageAdminAppService(
3033
IPageRepository pageRepository,
3134
PageManager pageManager,
32-
IDistributedCache<PageCacheItem> pageCache)
35+
IDistributedCache<PageCacheItem> pageCache,
36+
ICommentRepository commentRepository)
3337
{
3438
PageRepository = pageRepository;
3539
PageManager = pageManager;
3640
PageCache = pageCache;
41+
CommentRepository = commentRepository;
3742
}
3843

3944
public virtual async Task<PageDto> GetAsync(Guid id)
@@ -108,6 +113,7 @@ public virtual async Task DeleteAsync(Guid id)
108113

109114
await PageRepository.DeleteAsync(page);
110115
await PageCache.RemoveAsync(PageCacheItem.GetKey(page.Slug));
116+
await CommentRepository.DeleteByEntityTypeAsync(PageConsts.EntityType, id.ToString());
111117
}
112118

113119
[Authorize(CmsKitAdminPermissions.Pages.SetAsHomePage)]

modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Comments/ICommentRepository.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,10 @@ Task DeleteWithRepliesAsync(
4949
);
5050

5151
Task<bool> ExistsAsync(string idempotencyToken, CancellationToken cancellationToken = default);
52+
53+
Task DeleteByEntityTypeAsync(
54+
[NotNull] string entityType,
55+
[NotNull] string entityId,
56+
CancellationToken cancellationToken = default
57+
);
5258
}

modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Comments/EfCoreCommentRepository.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,4 +186,9 @@ on comment.CreatorId equals user.Id
186186
.WhereIf(CommentApproveState.Disapproved == commentApproveState, c => c.Comment.IsApproved == false)
187187
.WhereIf(CommentApproveState.Waiting == commentApproveState, c => c.Comment.IsApproved == null);
188188
}
189+
190+
public async Task DeleteByEntityTypeAsync(string entityType, string entityId, CancellationToken cancellationToken = default)
191+
{
192+
await (await GetDbSetAsync()).Where(x => x.EntityType == entityType && x.EntityId == entityId).ExecuteDeleteAsync(GetCancellationToken(cancellationToken));
193+
}
189194
}

modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Comments/MongoCommentRepository.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,4 +207,9 @@ protected virtual async Task<IQueryable<Comment>> GetListQueryAsync(
207207
.WhereIf(CommentApproveState.Disapproved == commentApproveState, c => c.IsApproved == false)
208208
.WhereIf(CommentApproveState.Waiting == commentApproveState, c => c.IsApproved == null);
209209
}
210+
211+
public async Task DeleteByEntityTypeAsync(string entityType, string entityId, CancellationToken cancellationToken = default)
212+
{
213+
await (await GetDbContextAsync(cancellationToken)).Comments.DeleteManyAsync(x => x.EntityType == entityType && x.EntityId == entityId, GetCancellationToken(cancellationToken));
214+
}
210215
}

0 commit comments

Comments
 (0)