using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using API.DTOs.SeriesDetail; using API.DTOs.Settings; using API.Entities; using API.Entities.Enums; using API.Entities.Metadata; using AutoMapper; using Microsoft.EntityFrameworkCore; namespace API.Data.Repositories; public interface ISettingsRepository { void Update(ServerSetting settings); Task GetSettingsDtoAsync(); Task GetSettingAsync(ServerSettingKey key); Task> GetSettingsAsync(); void Remove(ServerSetting setting); Task GetExternalSeriesMetadata(int seriesId); } public class SettingsRepository : ISettingsRepository { private readonly DataContext _context; private readonly IMapper _mapper; public SettingsRepository(DataContext context, IMapper mapper) { _context = context; _mapper = mapper; } public void Update(ServerSetting settings) { _context.Entry(settings).State = EntityState.Modified; } public void Remove(ServerSetting setting) { _context.Remove(setting); } public async Task GetExternalSeriesMetadata(int seriesId) { return await _context.ExternalSeriesMetadata .Where(s => s.SeriesId == seriesId) .FirstOrDefaultAsync(); } public async Task GetSettingsDtoAsync() { var settings = await _context.ServerSetting .Select(x => x) .AsNoTracking() .ToListAsync(); return _mapper.Map(settings); } public Task GetSettingAsync(ServerSettingKey key) { return _context.ServerSetting.SingleOrDefaultAsync(x => x.Key == key)!; } public async Task> GetSettingsAsync() { return await _context.ServerSetting.ToListAsync(); } }