Providing the post featured record in the response

This commit is contained in:
2025-10-24 00:51:30 +08:00
parent 4ba6206c9d
commit 15954dbfe2
4 changed files with 10 additions and 12 deletions

View File

@@ -146,9 +146,8 @@ public class SnPostCollection : ModelBase
public class SnPostFeaturedRecord : ModelBase public class SnPostFeaturedRecord : ModelBase
{ {
public Guid Id { get; set; } public Guid Id { get; set; }
public Guid PostId { 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 Instant? FeaturedAt { get; set; }
public int SocialCredits { get; set; } public int SocialCredits { get; set; }
} }

View File

@@ -43,15 +43,7 @@ public class ActivityService(
var publicRealms = await rs.GetPublicRealms(); var publicRealms = await rs.GetPublicRealms();
var publicRealmIds = publicRealms.Select(r => r.Id).ToList(); var publicRealmIds = publicRealms.Select(r => r.Id).ToList();
var postsQuery = db.Posts var postsQuery = BuildPostsQuery(cursor, null, publicRealmIds)
.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)
.FilterWithVisibility(null, [], [], isListing: true) .FilterWithVisibility(null, [], [], isListing: true)
.Take(take * 5); .Take(take * 5);
@@ -312,6 +304,7 @@ public class ActivityService(
.Include(e => e.ForwardedPost) .Include(e => e.ForwardedPost)
.Include(e => e.Categories) .Include(e => e.Categories)
.Include(e => e.Tags) .Include(e => e.Tags)
.Include(e => e.FeaturedRecords)
.Where(e => e.RepliedPostId == null) .Where(e => e.RepliedPostId == null)
.Where(p => cursor == null || p.PublishedAt < cursor) .Where(p => cursor == null || p.PublishedAt < cursor)
.OrderByDescending(p => p.PublishedAt) .OrderByDescending(p => p.PublishedAt)

View File

@@ -111,13 +111,14 @@ public class PostController(
var visibleRealmIds = userRealms.Concat(publicRealmIds).Distinct().ToList(); var visibleRealmIds = userRealms.Concat(publicRealmIds).Distinct().ToList();
var publisher = pubName == null ? null : await db.Publishers.FirstOrDefaultAsync(p => p.Name == pubName); 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 var query = db.Posts
.Include(e => e.Categories) .Include(e => e.Categories)
.Include(e => e.Tags) .Include(e => e.Tags)
.Include(e => e.RepliedPost) .Include(e => e.RepliedPost)
.Include(e => e.ForwardedPost) .Include(e => e.ForwardedPost)
.Include(e => e.FeaturedRecords)
.AsQueryable(); .AsQueryable();
if (publisher != null) if (publisher != null)
query = query.Where(p => p.PublisherId == publisher.Id); query = query.Where(p => p.PublisherId == publisher.Id);
@@ -233,6 +234,7 @@ public class PostController(
.Include(e => e.Categories) .Include(e => e.Categories)
.Include(e => e.RepliedPost) .Include(e => e.RepliedPost)
.Include(e => e.ForwardedPost) .Include(e => e.ForwardedPost)
.Include(e => e.FeaturedRecords)
.FilterWithVisibility(currentUser, userFriends, userPublishers) .FilterWithVisibility(currentUser, userFriends, userPublishers)
.FirstOrDefaultAsync(); .FirstOrDefaultAsync();
if (post is null) return NotFound(); if (post is null) return NotFound();
@@ -265,6 +267,7 @@ public class PostController(
.Include(e => e.Categories) .Include(e => e.Categories)
.Include(e => e.RepliedPost) .Include(e => e.RepliedPost)
.Include(e => e.ForwardedPost) .Include(e => e.ForwardedPost)
.Include(e => e.FeaturedRecords)
.FilterWithVisibility(currentUser, userFriends, userPublishers) .FilterWithVisibility(currentUser, userFriends, userPublishers)
.FirstOrDefaultAsync(); .FirstOrDefaultAsync();
if (post is null) return NotFound(); if (post is null) return NotFound();
@@ -397,6 +400,7 @@ public class PostController(
.Include(e => e.ForwardedPost) .Include(e => e.ForwardedPost)
.Include(e => e.Categories) .Include(e => e.Categories)
.Include(e => e.Tags) .Include(e => e.Tags)
.Include(e => e.FeaturedRecords)
.FilterWithVisibility(currentUser, userFriends, userPublishers, isListing: true) .FilterWithVisibility(currentUser, userFriends, userPublishers, isListing: true)
.OrderByDescending(e => e.PublishedAt ?? e.CreatedAt) .OrderByDescending(e => e.PublishedAt ?? e.CreatedAt)
.Skip(offset) .Skip(offset)
@@ -825,6 +829,7 @@ public class PostController(
.Include(e => e.Publisher) .Include(e => e.Publisher)
.Include(e => e.Categories) .Include(e => e.Categories)
.Include(e => e.Tags) .Include(e => e.Tags)
.Include(e => e.FeaturedRecords)
.FirstOrDefaultAsync(); .FirstOrDefaultAsync();
if (post is null) return NotFound(); if (post is null) return NotFound();

View File

@@ -915,6 +915,7 @@ public partial class PostService(
.Include(e => e.RepliedPost) .Include(e => e.RepliedPost)
.Include(e => e.Categories) .Include(e => e.Categories)
.Include(e => e.Publisher) .Include(e => e.Publisher)
.Include(e => e.FeaturedRecords)
.Take(featuredIds.Count) .Take(featuredIds.Count)
.ToListAsync(); .ToListAsync();
posts = posts.OrderBy(e => featuredIds.IndexOf(e.Id)).ToList(); posts = posts.OrderBy(e => featuredIds.IndexOf(e.Id)).ToList();