diff --git a/src/FilterLists.Api/V1/Controllers/MaintainersController.cs b/src/FilterLists.Api/V1/Controllers/MaintainersController.cs index 0019eb966..8f062ad1b 100644 --- a/src/FilterLists.Api/V1/Controllers/MaintainersController.cs +++ b/src/FilterLists.Api/V1/Controllers/MaintainersController.cs @@ -19,12 +19,12 @@ public MaintainersController(IMemoryCache memoryCache, SeedService seedService, [HttpGet] public async Task GetAll() => - await Get(() => maintainerService.GetAllAsync()); + await Get(() => maintainerService.GetAllThatMaintainAnyListAsync()); [HttpGet] [Route("{id}")] public async Task GetById(int id) => - await Get(() => maintainerService.GetByIdAsync(id), id); + await Get(() => maintainerService.GetIfMaintainsAnyListByIdAsync(id), id); [HttpGet("seed")] public async Task Seed() => diff --git a/src/FilterLists.Api/V1/Controllers/SyntaxesController.cs b/src/FilterLists.Api/V1/Controllers/SyntaxesController.cs index 56d5185b9..f534f1a90 100644 --- a/src/FilterLists.Api/V1/Controllers/SyntaxesController.cs +++ b/src/FilterLists.Api/V1/Controllers/SyntaxesController.cs @@ -18,12 +18,12 @@ public SyntaxesController(IMemoryCache memoryCache, SeedService seedService, Syn [HttpGet] public async Task GetAll() => - await Get(() => syntaxService.GetAll()); + await Get(() => syntaxService.GetAllImplemented()); [HttpGet] [Route("{id}")] public async Task GetById(int id) => - await Get(() => syntaxService.GetById(id), id); + await Get(() => syntaxService.GetImplementedById(id), id); [HttpGet("seed")] public async Task Seed() => diff --git a/src/FilterLists.Api/V1/Controllers/TagsController.cs b/src/FilterLists.Api/V1/Controllers/TagsController.cs index 1cbdfe545..1f0bde576 100644 --- a/src/FilterLists.Api/V1/Controllers/TagsController.cs +++ b/src/FilterLists.Api/V1/Controllers/TagsController.cs @@ -18,12 +18,12 @@ public TagsController(IMemoryCache memoryCache, SeedService seedService, TagServ [HttpGet] public async Task GetAll() => - await Get(() => tagService.GetAll()); + await Get(() => tagService.GetAllImplemented()); [HttpGet] [Route("{id}")] public async Task GetById(int id) => - await Get(() => tagService.GetById(id), id); + await Get(() => tagService.GetImplementedById(id), id); [HttpGet("seed")] public async Task Seed() => diff --git a/src/FilterLists.Services/Maintainer/MaintainerService.cs b/src/FilterLists.Services/Maintainer/MaintainerService.cs index f2dca958f..f513b0daa 100644 --- a/src/FilterLists.Services/Maintainer/MaintainerService.cs +++ b/src/FilterLists.Services/Maintainer/MaintainerService.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Linq; using System.Threading.Tasks; using AutoMapper; using AutoMapper.QueryableExtensions; @@ -17,14 +18,15 @@ public MaintainerService(FilterListsDbContext dbContext, IConfigurationProvider { } - public async Task> GetAllAsync() => - await DbContext.Maintainers - .ProjectTo(MapConfig) - .ToListAsync(); + private IQueryable MaintainsAnyLists => + DbContext.Maintainers.Where(m => m.FilterListMaintainers.Any()); - public async Task GetByIdAsync(int id) => - await DbContext.Maintainers - .ProjectTo(MapConfig) - .FirstOrDefaultAsync(m => m.Id == id); + public async Task> GetAllThatMaintainAnyListAsync() => + await MaintainsAnyLists.ProjectTo(MapConfig) + .ToListAsync(); + + public async Task GetIfMaintainsAnyListByIdAsync(int id) => + await MaintainsAnyLists.ProjectTo(MapConfig) + .FirstOrDefaultAsync(m => m.Id == id); } } \ No newline at end of file diff --git a/src/FilterLists.Services/RuleService.cs b/src/FilterLists.Services/RuleService.cs index 887f0116b..a194623ae 100644 --- a/src/FilterLists.Services/RuleService.cs +++ b/src/FilterLists.Services/RuleService.cs @@ -1,4 +1,5 @@ -using System.Threading.Tasks; +using System.Linq; +using System.Threading.Tasks; using FilterLists.Data; using JetBrains.Annotations; using Microsoft.EntityFrameworkCore; @@ -13,6 +14,6 @@ public RuleService(FilterListsDbContext dbContext) : base(dbContext) } public async Task GetCountAll() => - await DbContext.Rules.AsNoTracking().CountAsync(); + await DbContext.Rules.AsNoTracking().Where(r => r.SnapshotRules.Any()).CountAsync(); } } \ No newline at end of file diff --git a/src/FilterLists.Services/Syntax/SyntaxService.cs b/src/FilterLists.Services/Syntax/SyntaxService.cs index 7e51a1a4b..7da2dcb5b 100644 --- a/src/FilterLists.Services/Syntax/SyntaxService.cs +++ b/src/FilterLists.Services/Syntax/SyntaxService.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Linq; using System.Threading.Tasks; using AutoMapper; using AutoMapper.QueryableExtensions; @@ -17,14 +18,15 @@ public SyntaxService(FilterListsDbContext dbContext, IConfigurationProvider mapC { } - public async Task> GetAll() => - await DbContext.Syntaxes - .ProjectTo(MapConfig) - .ToListAsync(); + private IQueryable ImplementedSyntaxes => + DbContext.Syntaxes.Where(s => s.FilterLists.Any()); - public async Task GetById(int id) => - await DbContext.Syntaxes - .ProjectTo(MapConfig) - .FirstOrDefaultAsync(s => s.Id == id); + public async Task> GetAllImplemented() => + await ImplementedSyntaxes.ProjectTo(MapConfig) + .ToListAsync(); + + public async Task GetImplementedById(int id) => + await ImplementedSyntaxes.ProjectTo(MapConfig) + .FirstOrDefaultAsync(s => s.Id == id); } } \ No newline at end of file diff --git a/src/FilterLists.Services/Tag/TagService.cs b/src/FilterLists.Services/Tag/TagService.cs index 19ff72441..7199c9a25 100644 --- a/src/FilterLists.Services/Tag/TagService.cs +++ b/src/FilterLists.Services/Tag/TagService.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Linq; using System.Threading.Tasks; using AutoMapper; using AutoMapper.QueryableExtensions; @@ -17,14 +18,15 @@ public TagService(FilterListsDbContext dbContext, IConfigurationProvider mapConf { } - public async Task> GetAll() => - await DbContext.Tags - .ProjectTo(MapConfig) - .ToListAsync(); + private IQueryable ImplementedTags => + DbContext.Tags.Where(t => t.FilterListTags.Any()); - public async Task GetById(int id) => - await DbContext.Tags - .ProjectTo(MapConfig) - .FirstOrDefaultAsync(t => t.Id == id); + public async Task> GetAllImplemented() => + await ImplementedTags.ProjectTo(MapConfig) + .ToListAsync(); + + public async Task GetImplementedById(int id) => + await ImplementedTags.ProjectTo(MapConfig) + .FirstOrDefaultAsync(t => t.Id == id); } } \ No newline at end of file