From dfff79815acc86c02dd94716098d409d3fe46ab7 Mon Sep 17 00:00:00 2001 From: Jake Mannens Date: Sat, 19 Aug 2023 00:36:30 +1000 Subject: Added basic search engine functionality --- Services/SearchService.cs | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 Services/SearchService.cs (limited to 'Services') diff --git a/Services/SearchService.cs b/Services/SearchService.cs new file mode 100644 index 0000000..681c08d --- /dev/null +++ b/Services/SearchService.cs @@ -0,0 +1,36 @@ +using Microsoft.EntityFrameworkCore; + +namespace HyperBooru.Services; + +public interface ISearchService { + public Media[] Search(string query); +} + +public class SearchService : ISearchService { + private IDbContextFactory dbFactory; + + public SearchService(IDbContextFactory dbFactory) => + this.dbFactory = dbFactory; + + public Media[] Search(string query) { + var db = dbFactory.CreateDbContext(); + + query = query.ToLower(); + + var matchedTag = db.TagDefinitions + .FirstOrDefault(td => td.Name.ToLower() == query)?.Guid; + if(matchedTag is not null) + return db.Media + .Where(m => m.Tags + .Select(t => t.TagDefinition) + .Select(td => td.Guid) + .Contains((Guid) matchedTag)) + .ToArray(); + + var matchingTags = db.TagDefinitions + .Where(td => td.Name.ToLower().Contains(query)) + .Select(td => td.Guid); + + throw new NotImplementedException(); + } +} -- cgit v1.3