From 15954dbfe2d74f23f9b07edcebaf8029be6c5ef8 Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Fri, 24 Oct 2025 00:51:30 +0800 Subject: [PATCH] :sparkles: Providing the post featured record in the response --- DysonNetwork.Shared/Models/Post.cs | 3 +-- DysonNetwork.Sphere/Activity/ActivityService.cs | 11 ++--------- DysonNetwork.Sphere/Post/PostController.cs | 7 ++++++- DysonNetwork.Sphere/Post/PostService.cs | 1 + 4 files changed, 10 insertions(+), 12 deletions(-) diff --git a/DysonNetwork.Shared/Models/Post.cs b/DysonNetwork.Shared/Models/Post.cs index 50c8506..f1014db 100644 --- a/DysonNetwork.Shared/Models/Post.cs +++ b/DysonNetwork.Shared/Models/Post.cs @@ -146,9 +146,8 @@ public class SnPostCollection : ModelBase public class SnPostFeaturedRecord : ModelBase { public Guid Id { get; set; } - public Guid PostId { get; set; } - public SnPost Post { get; set; } = null!; + [JsonIgnore] public SnPost Post { get; set; } = null!; public Instant? FeaturedAt { get; set; } public int SocialCredits { get; set; } } diff --git a/DysonNetwork.Sphere/Activity/ActivityService.cs b/DysonNetwork.Sphere/Activity/ActivityService.cs index d3edbee..08ab828 100644 --- a/DysonNetwork.Sphere/Activity/ActivityService.cs +++ b/DysonNetwork.Sphere/Activity/ActivityService.cs @@ -43,15 +43,7 @@ public class ActivityService( var publicRealms = await rs.GetPublicRealms(); var publicRealmIds = publicRealms.Select(r => r.Id).ToList(); - var postsQuery = db.Posts - .Include(e => e.RepliedPost) - .Include(e => e.ForwardedPost) - .Include(e => e.Categories) - .Include(e => e.Tags) - .Where(e => e.RepliedPostId == null) - .Where(p => cursor == null || p.PublishedAt < cursor) - .Where(p => p.RealmId == null || publicRealmIds.Contains(p.RealmId.Value)) - .OrderByDescending(p => p.PublishedAt) + var postsQuery = BuildPostsQuery(cursor, null, publicRealmIds) .FilterWithVisibility(null, [], [], isListing: true) .Take(take * 5); @@ -312,6 +304,7 @@ public class ActivityService( .Include(e => e.ForwardedPost) .Include(e => e.Categories) .Include(e => e.Tags) + .Include(e => e.FeaturedRecords) .Where(e => e.RepliedPostId == null) .Where(p => cursor == null || p.PublishedAt < cursor) .OrderByDescending(p => p.PublishedAt) diff --git a/DysonNetwork.Sphere/Post/PostController.cs b/DysonNetwork.Sphere/Post/PostController.cs index 8d5c6ad..01e916e 100644 --- a/DysonNetwork.Sphere/Post/PostController.cs +++ b/DysonNetwork.Sphere/Post/PostController.cs @@ -111,13 +111,14 @@ public class PostController( var visibleRealmIds = userRealms.Concat(publicRealmIds).Distinct().ToList(); var publisher = pubName == null ? null : await db.Publishers.FirstOrDefaultAsync(p => p.Name == pubName); - var realm = realmName == null ? null : (realmName != null ? await rs.GetRealmBySlug(realmName) : null); + var realm = realmName == null ? null : (await rs.GetRealmBySlug(realmName)); var query = db.Posts .Include(e => e.Categories) .Include(e => e.Tags) .Include(e => e.RepliedPost) .Include(e => e.ForwardedPost) + .Include(e => e.FeaturedRecords) .AsQueryable(); if (publisher != null) query = query.Where(p => p.PublisherId == publisher.Id); @@ -233,6 +234,7 @@ public class PostController( .Include(e => e.Categories) .Include(e => e.RepliedPost) .Include(e => e.ForwardedPost) + .Include(e => e.FeaturedRecords) .FilterWithVisibility(currentUser, userFriends, userPublishers) .FirstOrDefaultAsync(); if (post is null) return NotFound(); @@ -265,6 +267,7 @@ public class PostController( .Include(e => e.Categories) .Include(e => e.RepliedPost) .Include(e => e.ForwardedPost) + .Include(e => e.FeaturedRecords) .FilterWithVisibility(currentUser, userFriends, userPublishers) .FirstOrDefaultAsync(); if (post is null) return NotFound(); @@ -397,6 +400,7 @@ public class PostController( .Include(e => e.ForwardedPost) .Include(e => e.Categories) .Include(e => e.Tags) + .Include(e => e.FeaturedRecords) .FilterWithVisibility(currentUser, userFriends, userPublishers, isListing: true) .OrderByDescending(e => e.PublishedAt ?? e.CreatedAt) .Skip(offset) @@ -825,6 +829,7 @@ public class PostController( .Include(e => e.Publisher) .Include(e => e.Categories) .Include(e => e.Tags) + .Include(e => e.FeaturedRecords) .FirstOrDefaultAsync(); if (post is null) return NotFound(); diff --git a/DysonNetwork.Sphere/Post/PostService.cs b/DysonNetwork.Sphere/Post/PostService.cs index aee384a..b31868b 100644 --- a/DysonNetwork.Sphere/Post/PostService.cs +++ b/DysonNetwork.Sphere/Post/PostService.cs @@ -915,6 +915,7 @@ public partial class PostService( .Include(e => e.RepliedPost) .Include(e => e.Categories) .Include(e => e.Publisher) + .Include(e => e.FeaturedRecords) .Take(featuredIds.Count) .ToListAsync(); posts = posts.OrderBy(e => featuredIds.IndexOf(e.Id)).ToList();