From c0bd2167f5f542b48a2187d392c1a0c7f93e903f Mon Sep 17 00:00:00 2001 From: Jake Mannens Date: Mon, 28 Aug 2023 23:37:48 +1000 Subject: Massive DB performance improvement when filtering NSFW content --- Pages/Component/TagSelectDialog.razor | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'Pages/Component') diff --git a/Pages/Component/TagSelectDialog.razor b/Pages/Component/TagSelectDialog.razor index f21d570..9008cc8 100644 --- a/Pages/Component/TagSelectDialog.razor +++ b/Pages/Component/TagSelectDialog.razor @@ -76,14 +76,20 @@ var selected = SelectedTags.Select(td => td.Guid); + int[] nsfwTags = Array.Empty(); + if(!userService.ShowNsfw) + nsfwTags = tagService.TagsThatImply(HBContext.NsfwTag) + .Select(td => td.ObjectId) + .ToArray(); + tagDefinitions = db.TagDefinitions + .Include(td => td.ImplicitTags) .Where(td => td.Source == TagSource.UserTag) .OrderBy(td => td.Name) .AsEnumerable() - .Where(td => userService.ShowNsfw || !tagService - .GetAllTags(td) - .Select(e => e.tagDefinition.Guid) - .Contains(HBContext.NsfwTag)) + .Where(td => userService.ShowNsfw || !td.ImplicitTags + .IntersectBy(nsfwTags, td => td.ObjectId) + .Any()) .Select(td => new Tuple( td, selected.Contains(td.Guid)).ToValueTuple()) -- cgit v1.3