diff options
| author | Jake Mannens <jake@asger.xyz> | 2023-08-11 02:57:35 +1000 |
|---|---|---|
| committer | Jake Mannens <jake@asger.xyz> | 2023-08-11 02:57:35 +1000 |
| commit | bc8385a9e63253a3190b08467cbf31d0256053e8 (patch) | |
| tree | c9a71886308dd61fc3acda98cbc5e053b06904f1 /Pages/Index.cshtml.cs | |
| parent | 1e81791d10271c3e3828a92a01a3aba6a74f9ba8 (diff) | |
Added basis for a search box
Diffstat (limited to 'Pages/Index.cshtml.cs')
| -rw-r--r-- | Pages/Index.cshtml.cs | 32 |
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 |
