summaryrefslogtreecommitdiff
path: root/Services/FeedService.cs
diff options
context:
space:
mode:
authorJake Mannens <jake@asger.xyz>2026-04-01 06:00:33 +1100
committerJake Mannens <jake@asger.xyz>2026-04-01 06:00:33 +1100
commit0d517e182dcf97e9fe46f6524f1d116ca5a94929 (patch)
tree5ec8fbfdabe7db20fe2555dc38836248a4a397d4 /Services/FeedService.cs
parentdfe942d3cf4a60c06a530c64793981bfff5fe9fd (diff)
v0.6av0.6a
Diffstat (limited to 'Services/FeedService.cs')
-rw-r--r--Services/FeedService.cs37
1 files changed, 29 insertions, 8 deletions
diff --git a/Services/FeedService.cs b/Services/FeedService.cs
index 864a751..77f92b5 100644
--- a/Services/FeedService.cs
+++ b/Services/FeedService.cs
@@ -7,21 +7,24 @@ public interface IFeedService {
bool selectIngest,
bool includeNsfw,
Media? key = null,
- int count = 50);
+ int count = 50,
+ SortOrder sortOrder = SortOrder.ObjectId);
public Media[] LoadChunk(
bool selectIngest,
bool includeNsfw,
string query,
Media? key = null,
- int count = 50);
+ int count = 50,
+ SortOrder sortOrder = SortOrder.ObjectId);
public Media[] LoadChunk(
bool selectIngest,
bool includeNsfw,
Guid tagId,
Media? key = null,
- int count = 50);
+ int count = 50,
+ SortOrder sortOrder = SortOrder.ObjectId);
}
public class FeedService : IFeedService {
@@ -34,21 +37,27 @@ public class FeedService : IFeedService {
bool selectIngest,
bool includeNsfw,
Media? key,
- int count) => LoadChunkInternal(selectIngest, includeNsfw, null, null, key, count);
+ int count,
+ SortOrder sortOrder) => LoadChunkInternal(
+ selectIngest, includeNsfw, null, null, key, count, sortOrder);
public Media[] LoadChunk(
bool selectIngest,
bool includeNsfw,
string query,
Media? key,
- int count) => LoadChunkInternal(selectIngest, includeNsfw, query, null, key, count);
+ int count,
+ SortOrder sortOrder) => LoadChunkInternal(
+ selectIngest, includeNsfw, query, null, key, count, sortOrder);
public Media[] LoadChunk(
bool selectIngest,
bool includeNsfw,
Guid tagId,
Media? key,
- int count) => LoadChunkInternal(selectIngest, includeNsfw, null, tagId, key, count);
+ int count,
+ SortOrder sortOrder) => LoadChunkInternal(
+ selectIngest, includeNsfw, null, tagId, key, count, sortOrder);
private Media[] LoadChunkInternal(
bool selectIngest,
@@ -56,7 +65,8 @@ public class FeedService : IFeedService {
string? query,
Guid? tagId,
Media? key,
- int count) {
+ int count,
+ SortOrder sortOrder) {
if(selectIngest && !includeNsfw)
return Array.Empty<Media>();
@@ -99,8 +109,19 @@ public class FeedService : IFeedService {
if(key is not null)
media = media.Where(m => m.ObjectId > key.ObjectId);
+ switch(sortOrder) {
+ case SortOrder.ObjectId:
+ media = media.OrderBy(m => m.ObjectId);
+ break;
+ case SortOrder.LastWriteTime:
+ media = media.OrderBy(m => m.CurrentUploadedFile!.LastWriteTime);
+ break;
+ case SortOrder.Random:
+ media = media.OrderBy(m => EF.Functions.Random());
+ break;
+ }
+
return media
- .OrderBy(m => m.ObjectId)
.Take(count)
.ToArray();
}