From 949768be50c5243fc397f7ea807dff3e674654a8 Mon Sep 17 00:00:00 2001 From: "Collin M. Barrett" Date: Tue, 25 Sep 2018 12:55:33 -0500 Subject: [PATCH] add langs id endpoint ref #505 --- .../V1/Controllers/LanguagesController.cs | 13 +++++++++++-- .../Language/LanguageService.cs | 18 ++++++++++++------ 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/src/FilterLists.Api/V1/Controllers/LanguagesController.cs b/src/FilterLists.Api/V1/Controllers/LanguagesController.cs index 29782a8f9..20036d0bf 100644 --- a/src/FilterLists.Api/V1/Controllers/LanguagesController.cs +++ b/src/FilterLists.Api/V1/Controllers/LanguagesController.cs @@ -17,10 +17,19 @@ public LanguagesController(IMemoryCache memoryCache, SeedService seedService, La [HttpGet] public async Task Index() => - Json(await MemoryCache.GetOrCreate("LanguageService_Index", entry => + Json(await MemoryCache.GetOrCreate("LanguagesController_Index", entry => { entry.AbsoluteExpirationRelativeToNow = MemoryCacheExpirationDefault; - return languageService.GetAllTargeted(); + return languageService.GetAllTargetedAsync(); + })); + + [HttpGet] + [Route("{id}")] + public async Task GetById(int id) => + Json(await MemoryCache.GetOrCreate("LanguagesController_GetById_" + id, entry => + { + entry.AbsoluteExpirationRelativeToNow = MemoryCacheExpirationDefault; + return languageService.GetTargetedByIdAsync(id); })); [HttpGet("seed")] diff --git a/src/FilterLists.Services/Language/LanguageService.cs b/src/FilterLists.Services/Language/LanguageService.cs index d94b0ebc4..48e07b54a 100644 --- a/src/FilterLists.Services/Language/LanguageService.cs +++ b/src/FilterLists.Services/Language/LanguageService.cs @@ -18,11 +18,17 @@ public LanguageService(FilterListsDbContext dbContext, IConfigurationProvider ma { } - public async Task> GetAllTargeted() => - await DbContext.Languages - .Where(l => l.FilterListLanguages.Any()) - .OrderBy(s => s.Name) - .ProjectTo(MapConfig) - .ToListAsync(); + private IQueryable TargetedLanguages => + DbContext.Languages.Where(l => l.FilterListLanguages.Any()); + + public async Task> GetAllTargetedAsync() => + await TargetedLanguages.OrderBy(s => s.Name) + .ProjectTo(MapConfig) + .ToListAsync(); + + public async Task GetTargetedByIdAsync(int id) => + await TargetedLanguages.Where(l => l.Id == (uint)id) + .ProjectTo(MapConfig) + .FirstOrDefaultAsync(); } } \ No newline at end of file