using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; using PodNoms.Api.Models; namespace PodNoms.Api.Persistence { public interface IPlaylistRepository : IRepository { Task GetParsedItem(string itemId, int playlistId); Task> GetUnprocessedItems(); } public class PlaylistRepository : GenericRepository, IPlaylistRepository { public PlaylistRepository(PodNomsDbContext context, ILogger logger) : base(context, logger) { } public new async Task GetAsync(int id) { return await GetContext().Playlists .Include(i => i.ParsedPlaylistItems) .SingleOrDefaultAsync(i => i.Id == id); } public async Task GetParsedItem(string itemId, int playlistId) { return await GetContext().ParsedPlaylistItems .Include(i => i.Playlist) .Include(i => i.Playlist.Podcast) .Include(i => i.Playlist.Podcast.AppUser) .SingleOrDefaultAsync(i => i.VideoId == itemId && i.Playlist.Id == playlistId); } public async Task> GetUnprocessedItems() { return await GetContext().ParsedPlaylistItems .Where(p => p.IsProcessed == false) .Include(i => i.Playlist) .Include(i => i.Playlist.Podcast) .Include(i => i.Playlist.Podcast.AppUser) .ToListAsync(); } } }