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 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; }
}

View File

@@ -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)

View File

@@ -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();

View File

@@ -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();