using System.Data; using ErsatzTV.Core.Domain; using ErsatzTV.Core.Domain.Filler; using ErsatzTV.Core.Domain.Scheduling; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; namespace ErsatzTV.Infrastructure.Data; public class TvContext : DbContext { private readonly ILoggerFactory _loggerFactory; public TvContext(DbContextOptions options, ILoggerFactory loggerFactory) : base(options) => _loggerFactory = loggerFactory; public static string LastInsertedRowId { get; set; } = "last_insert_rowid()"; public static string CaseInsensitiveCollation { get; set; } = "NOCASE"; public IDbConnection Connection => Database.GetDbConnection(); public DbSet ConfigElements { get; set; } public DbSet Channels { get; set; } public DbSet ChannelWatermarks { get; set; } public DbSet MediaSources { get; set; } public DbSet LocalMediaSources { get; set; } public DbSet PlexMediaSources { get; set; } public DbSet JellyfinMediaSources { get; set; } public DbSet EmbyMediaSources { get; set; } public DbSet Libraries { get; set; } public DbSet LocalLibraries { get; set; } public DbSet LibraryPaths { get; set; } public DbSet LibraryFolders { get; set; } public DbSet PlexLibraries { get; set; } public DbSet JellyfinLibraries { get; set; } public DbSet EmbyLibraries { get; set; } public DbSet PlexPathReplacements { get; set; } public DbSet JellyfinPathReplacements { get; set; } public DbSet EmbyPathReplacements { get; set; } public DbSet MediaItems { get; set; } public DbSet MediaVersions { get; set; } public DbSet MediaFiles { get; set; } public DbSet MediaStreams { get; set; } public DbSet Movies { get; set; } public DbSet MovieMetadata { get; set; } public DbSet Artwork { get; set; } public DbSet Artists { get; set; } public DbSet ArtistMetadata { get; set; } public DbSet MusicVideos { get; set; } public DbSet MusicVideoMetadata { get; set; } public DbSet OtherVideos { get; set; } public DbSet OtherVideoMetadata { get; set; } public DbSet Songs { get; set; } public DbSet SongMetadata { get; set; } public DbSet Images { get; set; } public DbSet ImageMetadata { get; set; } public DbSet ImageFolderDurations { get; set; } public DbSet Shows { get; set; } public DbSet ShowMetadata { get; set; } public DbSet Seasons { get; set; } public DbSet SeasonMetadata { get; set; } public DbSet Episodes { get; set; } public DbSet EpisodeMetadata { get; set; } public DbSet PlexMovies { get; set; } public DbSet PlexOtherVideos { get; set; } public DbSet PlexShows { get; set; } public DbSet PlexSeasons { get; set; } public DbSet PlexEpisodes { get; set; } public DbSet PlexCollections { get; set; } public DbSet JellyfinMovies { get; set; } public DbSet JellyfinShows { get; set; } public DbSet JellyfinSeasons { get; set; } public DbSet JellyfinEpisodes { get; set; } public DbSet JellyfinCollections { get; set; } public DbSet EmbyMovies { get; set; } public DbSet EmbyShows { get; set; } public DbSet EmbySeasons { get; set; } public DbSet EmbyEpisodes { get; set; } public DbSet EmbyCollections { get; set; } public DbSet Collections { get; set; } public DbSet CollectionItems { get; set; } public DbSet MultiCollections { get; set; } public DbSet SmartCollections { get; set; } public DbSet ProgramSchedules { get; set; } public DbSet ProgramScheduleItems { get; set; } public DbSet Playouts { get; set; } public DbSet ProgramScheduleAlternates { get; set; } public DbSet PlayoutItems { get; set; } public DbSet PlayoutProgramScheduleItemAnchors { get; set; } public DbSet PlayoutTemplates { get; set; } public DbSet BlockGroups { get; set; } public DbSet Blocks { get; set; } public DbSet BlockItems { get; set; } public DbSet TemplateGroups { get; set; } public DbSet