add languages endpoint

ref #379
This commit is contained in:
Collin Barrett 2018-09-03 19:24:59 -05:00
parent 4ac6f52bf1
commit eb8ca2a075
4 changed files with 53 additions and 3 deletions

View file

@ -1,5 +1,6 @@
using System.Threading.Tasks;
using FilterLists.Data.Entities;
using FilterLists.Services.Language;
using FilterLists.Services.Seed;
using FilterLists.Services.Seed.Models;
using Microsoft.AspNetCore.Mvc;
@ -9,9 +10,18 @@ namespace FilterLists.Api.V1.Controllers
{
public class LanguagesController : BaseController
{
public LanguagesController(IMemoryCache memoryCache, SeedService seedService) : base(memoryCache, seedService)
{
}
private readonly LanguageService languageService;
public LanguagesController(IMemoryCache memoryCache, SeedService seedService, LanguageService languageService) :
base(memoryCache, seedService) => this.languageService = languageService;
[HttpGet]
public async Task<IActionResult> Index() =>
Json(await MemoryCache.GetOrCreate("LanguageService_Index", entry =>
{
entry.AbsoluteExpirationRelativeToNow = FourHoursFromNow;
return languageService.GetAllTargeted();
}));
[HttpGet("seed")]
public async Task<IActionResult> Seed() =>

View file

@ -1,6 +1,7 @@
using AutoMapper;
using FilterLists.Data;
using FilterLists.Services.FilterList;
using FilterLists.Services.Language;
using FilterLists.Services.Seed;
using FilterLists.Services.Snapshot;
using FilterLists.Services.Software;
@ -23,6 +24,7 @@ public static void AddFilterListsApiServices(this IServiceCollection services, I
services.TryAddScoped<FilterListService>();
services.TryAddScoped<RuleService>();
services.TryAddScoped<SoftwareService>();
services.TryAddScoped<LanguageService>();
services.TryAddScoped<SeedService>();
services.AddAutoMapper();
}

View file

@ -0,0 +1,27 @@
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using AutoMapper;
using AutoMapper.QueryableExtensions;
using FilterLists.Data;
using FilterLists.Services.Language.Models;
using JetBrains.Annotations;
using Microsoft.EntityFrameworkCore;
namespace FilterLists.Services.Language
{
[UsedImplicitly]
public class LanguageService : Service
{
public LanguageService(FilterListsDbContext dbContext, IConfigurationProvider mapConfig)
: base(dbContext, mapConfig)
{
}
public async Task<IEnumerable<LanguageDto>> GetAllTargeted() =>
await DbContext.Languages.Where(l => l.FilterListLanguages.Any())
.OrderBy(s => s.Name)
.ProjectTo<LanguageDto>(MapConfig)
.ToListAsync();
}
}

View file

@ -0,0 +1,11 @@
using JetBrains.Annotations;
namespace FilterLists.Services.Language.Models
{
[UsedImplicitly]
public class LanguageDto
{
public string Iso6391 { get; set; }
public string Name { get; set; }
}
}