✨ Providing the post featured record in the response
This commit is contained in:
@@ -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; }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user