summaryrefslogtreecommitdiff
path: root/Pages/Index.cshtml.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Pages/Index.cshtml.cs')
-rw-r--r--Pages/Index.cshtml.cs32
1 files changed, 30 insertions, 2 deletions
diff --git a/Pages/Index.cshtml.cs b/Pages/Index.cshtml.cs
index e03a330..07d24f0 100644
--- a/Pages/Index.cshtml.cs
+++ b/Pages/Index.cshtml.cs
@@ -4,12 +4,40 @@ using Microsoft.AspNetCore.Mvc.RazorPages;
namespace HyperBooru.Pages;
public class IndexModel : PageModel {
- public IEnumerable<DbMedia> Media => db.Media;
+ public IEnumerable<DbMedia> Media { get; private set; }
private HyperBooruDbContext db;
public IndexModel(HyperBooruDbContext db) =>
this.db = db;
- public void OnGet() {}
+ public void OnGet([FromQuery(Name = "q")] string? query) {
+ IEnumerable<DbMedia> media;
+
+ if(query is null) {
+ media = db.UploadedFiles
+ .OrderByDescending(uf => uf.UploadTime)
+ .Select(uf => uf.Media)
+ .Distinct();
+ } else {
+ query = query.ToLower();
+
+ var matchingTags = db.TagDefinitions
+ .Where(td => td.Name.ToLower().Contains(query))
+ .Select(td => td.Guid);
+
+ media = db.Media
+ .Where(m =>
+ m.Tags
+ .Select(t => t.TagDefinition.Guid)
+ .Intersect(matchingTags)
+ .Any());
+ }
+
+ Media = media.OrderByDescending(m =>
+ m.UploadedFiles
+ .Select(uf => uf.UploadTime)
+ .Order()
+ .Last());
+ }
} \ No newline at end of file