From 84c4df66209111b3c996f8c0d4b7853ca611c6d3 Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Mon, 25 Aug 2025 13:05:34 +0800 Subject: [PATCH] :necktie: Prevent from creating duplicate featured record --- DysonNetwork.Sphere/Post/PostService.cs | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/DysonNetwork.Sphere/Post/PostService.cs b/DysonNetwork.Sphere/Post/PostService.cs index 23515e3..b6f79fd 100644 --- a/DysonNetwork.Sphere/Post/PostService.cs +++ b/DysonNetwork.Sphere/Post/PostService.cs @@ -787,13 +787,24 @@ public partial class PostService( await cache.SetAsync(FeaturedPostCacheKey, featuredIds, TimeSpan.FromHours(24)); // Create featured record - var records = reactSocialPoints.Select(e => new PostFeaturedRecord + var existingFeaturedPostIds = await db.PostFeaturedRecords + .Where(r => featuredIds.Contains(r.PostId)) + .Select(r => r.PostId) + .ToListAsync(); + + var records = reactSocialPoints + .Where(p => !existingFeaturedPostIds.Contains(p.Key)) + .Select(e => new PostFeaturedRecord + { + PostId = e.Key, + SocialCredits = e.Value + }).ToList(); + + if (records.Any()) { - PostId = e.Key, - SocialCredits = e.Value - }).ToList(); - db.PostFeaturedRecords.AddRange(records); - await db.SaveChangesAsync(); + db.PostFeaturedRecords.AddRange(records); + await db.SaveChangesAsync(); + } } var posts = await db.Posts