diff --git a/src/FilterLists.Api/V1/Controllers/BaseController.cs b/src/FilterLists.Api/V1/Controllers/BaseController.cs index 38b621f09..41b47f4e6 100644 --- a/src/FilterLists.Api/V1/Controllers/BaseController.cs +++ b/src/FilterLists.Api/V1/Controllers/BaseController.cs @@ -26,5 +26,8 @@ protected BaseController(IMemoryCache memoryCache, SeedService seedService) MemoryCache = memoryCache; SeedService = seedService; } + + protected IActionResult CoalesceNotFound(JsonResult result) => + result.Value is null ? NotFound() : (IActionResult)result; } } \ No newline at end of file diff --git a/src/FilterLists.Api/V1/Controllers/DependentsController.cs b/src/FilterLists.Api/V1/Controllers/DependentsController.cs index 4f4fca31a..12a2730d5 100644 --- a/src/FilterLists.Api/V1/Controllers/DependentsController.cs +++ b/src/FilterLists.Api/V1/Controllers/DependentsController.cs @@ -15,11 +15,11 @@ public DependentsController(IMemoryCache memoryCache, SeedService seedService) : [HttpGet("seed")] public async Task Seed() => - Json(await MemoryCache.GetOrCreate("DependentsController_Seed", entry => + CoalesceNotFound(Json(await MemoryCache.GetOrCreate("DependentsController_Seed", entry => { entry.AbsoluteExpirationRelativeToNow = MemoryCacheExpirationDefault; return SeedService.GetAllAsync(typeof(Dependent).GetProperty("DependentFilterListId"), typeof(Dependent).GetProperty("DependencyFilterListId")); - })); + }))); } } \ No newline at end of file diff --git a/src/FilterLists.Api/V1/Controllers/ForksController.cs b/src/FilterLists.Api/V1/Controllers/ForksController.cs index 13a0d8c03..5353e5149 100644 --- a/src/FilterLists.Api/V1/Controllers/ForksController.cs +++ b/src/FilterLists.Api/V1/Controllers/ForksController.cs @@ -15,11 +15,11 @@ public ForksController(IMemoryCache memoryCache, SeedService seedService) : base [HttpGet("seed")] public async Task Seed() => - Json(await MemoryCache.GetOrCreate("ForksController_Seed", entry => + CoalesceNotFound(Json(await MemoryCache.GetOrCreate("ForksController_Seed", entry => { entry.AbsoluteExpirationRelativeToNow = MemoryCacheExpirationDefault; return SeedService.GetAllAsync(typeof(Fork).GetProperty("UpstreamFilterListId"), typeof(Fork).GetProperty("ForkFilterListId")); - })); + }))); } } \ No newline at end of file diff --git a/src/FilterLists.Api/V1/Controllers/LanguagesController.cs b/src/FilterLists.Api/V1/Controllers/LanguagesController.cs index 20036d0bf..18fd80220 100644 --- a/src/FilterLists.Api/V1/Controllers/LanguagesController.cs +++ b/src/FilterLists.Api/V1/Controllers/LanguagesController.cs @@ -17,27 +17,27 @@ public LanguagesController(IMemoryCache memoryCache, SeedService seedService, La [HttpGet] public async Task Index() => - Json(await MemoryCache.GetOrCreate("LanguagesController_Index", entry => + CoalesceNotFound(Json(await MemoryCache.GetOrCreate("LanguagesController_Index", entry => { entry.AbsoluteExpirationRelativeToNow = MemoryCacheExpirationDefault; return languageService.GetAllTargetedAsync(); - })); + }))); [HttpGet] [Route("{id}")] public async Task GetById(int id) => - Json(await MemoryCache.GetOrCreate("LanguagesController_GetById_" + id, entry => + CoalesceNotFound(Json(await MemoryCache.GetOrCreate("LanguagesController_GetById_" + id, entry => { entry.AbsoluteExpirationRelativeToNow = MemoryCacheExpirationDefault; return languageService.GetTargetedByIdAsync(id); - })); + }))); [HttpGet("seed")] public async Task Seed() => - Json(await MemoryCache.GetOrCreate("LanguagesController_Seed", entry => + CoalesceNotFound(Json(await MemoryCache.GetOrCreate("LanguagesController_Seed", entry => { entry.AbsoluteExpirationRelativeToNow = MemoryCacheExpirationDefault; return SeedService.GetAllAsync(); - })); + }))); } } \ No newline at end of file diff --git a/src/FilterLists.Api/V1/Controllers/LicensesController.cs b/src/FilterLists.Api/V1/Controllers/LicensesController.cs index 64d8a3d53..9a8c57323 100644 --- a/src/FilterLists.Api/V1/Controllers/LicensesController.cs +++ b/src/FilterLists.Api/V1/Controllers/LicensesController.cs @@ -15,10 +15,10 @@ public LicensesController(IMemoryCache memoryCache, SeedService seedService) : b [HttpGet("seed")] public async Task Seed() => - Json(await MemoryCache.GetOrCreate("LicensesController_Seed", entry => + CoalesceNotFound(Json(await MemoryCache.GetOrCreate("LicensesController_Seed", entry => { entry.AbsoluteExpirationRelativeToNow = MemoryCacheExpirationDefault; return SeedService.GetAllAsync(); - })); + }))); } } \ No newline at end of file diff --git a/src/FilterLists.Api/V1/Controllers/ListsController.cs b/src/FilterLists.Api/V1/Controllers/ListsController.cs index c6bfe7667..ef5706bbd 100644 --- a/src/FilterLists.Api/V1/Controllers/ListsController.cs +++ b/src/FilterLists.Api/V1/Controllers/ListsController.cs @@ -17,27 +17,27 @@ public ListsController(IMemoryCache memoryCache, SeedService seedService, Filter [HttpGet] public async Task Index() => - Json(await MemoryCache.GetOrCreate("ListsController_Index", entry => + CoalesceNotFound(Json(await MemoryCache.GetOrCreate("ListsController_Index", entry => { entry.AbsoluteExpirationRelativeToNow = MemoryCacheExpirationDefault; return filterListService.GetAllAsync(); - })); + }))); [HttpGet] [Route("{id}")] public async Task GetById(int id) => - Json(await MemoryCache.GetOrCreate("ListsController_GetById_" + id, entry => + CoalesceNotFound(Json(await MemoryCache.GetOrCreate("ListsController_GetById_" + id, entry => { entry.AbsoluteExpirationRelativeToNow = MemoryCacheExpirationDefault; return filterListService.GetDetailsAsync((uint)id); - })); + }))); [HttpGet("seed")] public async Task Seed() => - Json(await MemoryCache.GetOrCreate("ListsController_Seed", entry => + CoalesceNotFound(Json(await MemoryCache.GetOrCreate("ListsController_Seed", entry => { entry.AbsoluteExpirationRelativeToNow = MemoryCacheExpirationDefault; return SeedService.GetAllAsync(); - })); + }))); } } \ No newline at end of file diff --git a/src/FilterLists.Api/V1/Controllers/ListsLanguagesController.cs b/src/FilterLists.Api/V1/Controllers/ListsLanguagesController.cs index 7ff794ff7..7e47a9439 100644 --- a/src/FilterLists.Api/V1/Controllers/ListsLanguagesController.cs +++ b/src/FilterLists.Api/V1/Controllers/ListsLanguagesController.cs @@ -16,12 +16,12 @@ public ListsLanguagesController(IMemoryCache memoryCache, SeedService seedServic [HttpGet("seed")] public async Task Seed() => - Json(await MemoryCache.GetOrCreate("ListsLanguagesController_Seed", entry => + CoalesceNotFound(Json(await MemoryCache.GetOrCreate("ListsLanguagesController_Seed", entry => { entry.AbsoluteExpirationRelativeToNow = MemoryCacheExpirationDefault; return SeedService.GetAllAsync( typeof(FilterListLanguage).GetProperty("FilterListId"), typeof(FilterListLanguage).GetProperty("LanguageId")); - })); + }))); } } \ No newline at end of file diff --git a/src/FilterLists.Api/V1/Controllers/ListsMaintainersController.cs b/src/FilterLists.Api/V1/Controllers/ListsMaintainersController.cs index 1e4fcb83e..cfadfba4c 100644 --- a/src/FilterLists.Api/V1/Controllers/ListsMaintainersController.cs +++ b/src/FilterLists.Api/V1/Controllers/ListsMaintainersController.cs @@ -16,12 +16,12 @@ public ListsMaintainersController(IMemoryCache memoryCache, SeedService seedServ [HttpGet("seed")] public async Task Seed() => - Json(await MemoryCache.GetOrCreate("ListsMaintainersController_Seed", entry => + CoalesceNotFound(Json(await MemoryCache.GetOrCreate("ListsMaintainersController_Seed", entry => { entry.AbsoluteExpirationRelativeToNow = MemoryCacheExpirationDefault; return SeedService.GetAllAsync( typeof(FilterListMaintainer).GetProperty("MaintainerId"), typeof(FilterListMaintainer).GetProperty("FilterListId")); - })); + }))); } } \ No newline at end of file diff --git a/src/FilterLists.Api/V1/Controllers/ListsTagsController.cs b/src/FilterLists.Api/V1/Controllers/ListsTagsController.cs index 688552788..5d41fc4ce 100644 --- a/src/FilterLists.Api/V1/Controllers/ListsTagsController.cs +++ b/src/FilterLists.Api/V1/Controllers/ListsTagsController.cs @@ -16,12 +16,12 @@ public ListsTagsController(IMemoryCache memoryCache, SeedService seedService) [HttpGet("seed")] public async Task Seed() => - Json(await MemoryCache.GetOrCreate("ListsTagsController_Seed", entry => + CoalesceNotFound(Json(await MemoryCache.GetOrCreate("ListsTagsController_Seed", entry => { entry.AbsoluteExpirationRelativeToNow = MemoryCacheExpirationDefault; return SeedService.GetAllAsync( typeof(FilterListTag).GetProperty("FilterListId"), typeof(FilterListTag).GetProperty("TagId")); - })); + }))); } } \ No newline at end of file diff --git a/src/FilterLists.Api/V1/Controllers/MaintainersController.cs b/src/FilterLists.Api/V1/Controllers/MaintainersController.cs index 392ae8e78..10848ff54 100644 --- a/src/FilterLists.Api/V1/Controllers/MaintainersController.cs +++ b/src/FilterLists.Api/V1/Controllers/MaintainersController.cs @@ -15,10 +15,10 @@ public MaintainersController(IMemoryCache memoryCache, SeedService seedService) [HttpGet("seed")] public async Task Seed() => - Json(await MemoryCache.GetOrCreate("MaintainersController_Seed", entry => + CoalesceNotFound(Json(await MemoryCache.GetOrCreate("MaintainersController_Seed", entry => { entry.AbsoluteExpirationRelativeToNow = MemoryCacheExpirationDefault; return SeedService.GetAllAsync(); - })); + }))); } } \ No newline at end of file diff --git a/src/FilterLists.Api/V1/Controllers/MergesController.cs b/src/FilterLists.Api/V1/Controllers/MergesController.cs index 133f230b0..81dd1c437 100644 --- a/src/FilterLists.Api/V1/Controllers/MergesController.cs +++ b/src/FilterLists.Api/V1/Controllers/MergesController.cs @@ -15,11 +15,11 @@ public MergesController(IMemoryCache memoryCache, SeedService seedService) : bas [HttpGet("seed")] public async Task Seed() => - Json(await MemoryCache.GetOrCreate("MergesController_Seed", entry => + CoalesceNotFound(Json(await MemoryCache.GetOrCreate("MergesController_Seed", entry => { entry.AbsoluteExpirationRelativeToNow = MemoryCacheExpirationDefault; return SeedService.GetAllAsync(typeof(Merge).GetProperty("MergeFilterListId"), typeof(Merge).GetProperty("UpstreamFilterListId")); - })); + }))); } } \ No newline at end of file diff --git a/src/FilterLists.Api/V1/Controllers/RulesController.cs b/src/FilterLists.Api/V1/Controllers/RulesController.cs index bba815c30..3cdcb2a68 100644 --- a/src/FilterLists.Api/V1/Controllers/RulesController.cs +++ b/src/FilterLists.Api/V1/Controllers/RulesController.cs @@ -14,10 +14,10 @@ public RulesController(IMemoryCache memoryCache, RuleService ruleService) : base [HttpGet] public async Task Index() => - Json(await MemoryCache.GetOrCreate("RulesController_Index", entry => + CoalesceNotFound(Json(await MemoryCache.GetOrCreate("RulesController_Index", entry => { entry.AbsoluteExpirationRelativeToNow = MemoryCacheExpirationDefault; return ruleService.GetCountAll(); - })); + }))); } } \ No newline at end of file diff --git a/src/FilterLists.Api/V1/Controllers/SoftwareController.cs b/src/FilterLists.Api/V1/Controllers/SoftwareController.cs index b79630890..fc89d79de 100644 --- a/src/FilterLists.Api/V1/Controllers/SoftwareController.cs +++ b/src/FilterLists.Api/V1/Controllers/SoftwareController.cs @@ -17,18 +17,18 @@ public SoftwareController(IMemoryCache memoryCache, SeedService seedService, Sof [HttpGet] public async Task Index() => - Json(await MemoryCache.GetOrCreate("SoftwareController_Index", entry => + CoalesceNotFound(Json(await MemoryCache.GetOrCreate("SoftwareController_Index", entry => { entry.AbsoluteExpirationRelativeToNow = MemoryCacheExpirationDefault; return softwareService.GetAll(); - })); + }))); [HttpGet("seed")] public async Task Seed() => - Json(await MemoryCache.GetOrCreate("SoftwareController_Seed", entry => + CoalesceNotFound(Json(await MemoryCache.GetOrCreate("SoftwareController_Seed", entry => { entry.AbsoluteExpirationRelativeToNow = MemoryCacheExpirationDefault; return SeedService.GetAllAsync(); - })); + }))); } } \ No newline at end of file diff --git a/src/FilterLists.Api/V1/Controllers/SoftwareSyntaxesController.cs b/src/FilterLists.Api/V1/Controllers/SoftwareSyntaxesController.cs index 69ec8a6e4..18bd2aed2 100644 --- a/src/FilterLists.Api/V1/Controllers/SoftwareSyntaxesController.cs +++ b/src/FilterLists.Api/V1/Controllers/SoftwareSyntaxesController.cs @@ -16,11 +16,11 @@ public SoftwareSyntaxesController(IMemoryCache memoryCache, SeedService seedServ [HttpGet("seed")] public async Task Seed() => - Json(await MemoryCache.GetOrCreate("SoftwareSyntaxesController_Seed", entry => + CoalesceNotFound(Json(await MemoryCache.GetOrCreate("SoftwareSyntaxesController_Seed", entry => { entry.AbsoluteExpirationRelativeToNow = MemoryCacheExpirationDefault; return SeedService.GetAllAsync( typeof(SoftwareSyntax).GetProperty("SyntaxId"), typeof(SoftwareSyntax).GetProperty("SoftwareId")); - })); + }))); } } \ No newline at end of file diff --git a/src/FilterLists.Api/V1/Controllers/SyntaxesController.cs b/src/FilterLists.Api/V1/Controllers/SyntaxesController.cs index 6a03a24ad..c1d3109cc 100644 --- a/src/FilterLists.Api/V1/Controllers/SyntaxesController.cs +++ b/src/FilterLists.Api/V1/Controllers/SyntaxesController.cs @@ -15,10 +15,10 @@ public SyntaxesController(IMemoryCache memoryCache, SeedService seedService) : b [HttpGet("seed")] public async Task Seed() => - Json(await MemoryCache.GetOrCreate("SyntaxesController_Seed", entry => + CoalesceNotFound(Json(await MemoryCache.GetOrCreate("SyntaxesController_Seed", entry => { entry.AbsoluteExpirationRelativeToNow = MemoryCacheExpirationDefault; return SeedService.GetAllAsync(); - })); + }))); } } \ No newline at end of file diff --git a/src/FilterLists.Api/V1/Controllers/TagsController.cs b/src/FilterLists.Api/V1/Controllers/TagsController.cs index 7fa13c453..7e39b2ddb 100644 --- a/src/FilterLists.Api/V1/Controllers/TagsController.cs +++ b/src/FilterLists.Api/V1/Controllers/TagsController.cs @@ -17,18 +17,18 @@ public TagsController(IMemoryCache memoryCache, SeedService seedService, TagServ [HttpGet] public async Task Index() => - Json(await MemoryCache.GetOrCreate("TagsController_Index", entry => + CoalesceNotFound(Json(await MemoryCache.GetOrCreate("TagsController_Index", entry => { entry.AbsoluteExpirationRelativeToNow = MemoryCacheExpirationDefault; return tagService.GetAll(); - })); + }))); [HttpGet("seed")] public async Task Seed() => - Json(await MemoryCache.GetOrCreate("TagsController_Seed", entry => + CoalesceNotFound(Json(await MemoryCache.GetOrCreate("TagsController_Seed", entry => { entry.AbsoluteExpirationRelativeToNow = MemoryCacheExpirationDefault; return SeedService.GetAllAsync(); - })); + }))); } } \ No newline at end of file