Compare commits

...

2 Commits

Author SHA1 Message Date
LittleSheep
6211f546b1 Post list shuffle mode 2025-08-15 02:23:14 +08:00
LittleSheep
9070fe7fa3 Post controller has media filter 2025-08-15 02:22:11 +08:00

View File

@@ -45,7 +45,9 @@ public class PostController(
[FromQuery(Name = "tags")] List<string>? tags = null,
[FromQuery(Name = "query")] string? queryTerm = null,
[FromQuery(Name = "vector")] bool queryVector = false,
[FromQuery(Name = "replies")] bool includeReplies = false
[FromQuery(Name = "replies")] bool includeReplies = false,
[FromQuery(Name = "media")] bool onlyMedia = false,
[FromQuery(Name = "shuffle")] bool shuffle = false
)
{
HttpContext.Items.TryGetValue("CurrentUser", out var currentUserValue);
@@ -77,6 +79,8 @@ public class PostController(
query = query.Where(p => p.Tags.Any(c => tags.Contains(c.Slug)));
if (!includeReplies)
query = query.Where(e => e.RepliedPostId == null);
if (onlyMedia)
query = query.Where(e => e.Attachments.Count > 0);
if (!string.IsNullOrWhiteSpace(queryTerm))
{
@@ -95,10 +99,15 @@ public class PostController(
var totalCount = await query
.CountAsync();
if (shuffle)
query = query.OrderBy(e => EF.Functions.Random());
else
query = query.OrderByDescending(e => e.PublishedAt ?? e.CreatedAt);
var posts = await query
.Include(e => e.RepliedPost)
.Include(e => e.ForwardedPost)
.OrderByDescending(e => e.PublishedAt ?? e.CreatedAt)
.Skip(offset)
.Take(take)
.ToListAsync();