using System; using System.Threading; using System.Threading.Tasks; using Kavita.Models.Entities; using Kavita.Models.Entities.History; using Kavita.Models.Entities.Metadata; using Kavita.Models.Entities.MetadataMatching; using Kavita.Models.Entities.Person; using Kavita.Models.Entities.Progress; using Kavita.Models.Entities.Scrobble; using Kavita.Models.Entities.User; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.ChangeTracking; using Microsoft.EntityFrameworkCore.Infrastructure; namespace Kavita.API.Database; public interface IDataContext : IDisposable { DatabaseFacade Database { get; } DbSet Users { get; } DbSet Library { get; } DbSet Series { get; } DbSet Chapter { get; } DbSet Volume { get; } DbSet AppUser { get; } DbSet MangaFile { get; } DbSet AppUserProgresses { get; } DbSet AppUserRating { get; } DbSet ServerSetting { get; } DbSet AppUserPreferences { get; } DbSet SeriesMetadata { get; } DbSet SeriesMetadataTag { get; } DbSet GenreSeriesMetadata { get; } [Obsolete("Use AppUserCollection")] DbSet CollectionTag { get; } DbSet AppUserBookmark { get; } DbSet ReadingList { get; } DbSet ReadingListItem { get; } DbSet Person { get; } DbSet PersonAlias { get; } DbSet Genre { get; } DbSet Tag { get; } DbSet SiteTheme { get; } DbSet SeriesRelation { get; } DbSet FolderPath { get; } DbSet Device { get; } DbSet ServerStatistics { get; } DbSet MediaError { get; } DbSet ScrobbleEvent { get; } DbSet ScrobbleError { get; } DbSet ScrobbleHold { get; } DbSet AppUserOnDeckRemoval { get; } DbSet AppUserTableOfContent { get; } DbSet AppUserSmartFilter { get; } DbSet AppUserDashboardStream { get; } DbSet AppUserSideNavStream { get; } DbSet AppUserExternalSource { get; } DbSet ExternalReview { get; } DbSet ExternalRating { get; } DbSet ExternalSeriesMetadata { get; } DbSet ExternalRecommendation { get; } DbSet ManualMigrationHistory { get; } [Obsolete("Use IsBlacklisted field on Series")] DbSet SeriesBlacklist { get; } DbSet AppUserCollection { get; } DbSet ChapterPeople { get; } DbSet SeriesMetadataPeople { get; } DbSet EmailHistory { get; } DbSet MetadataSettings { get; } DbSet MetadataFieldMapping { get; } DbSet AppUserChapterRating { get; } DbSet AppUserReadingProfiles { get; } DbSet AppUserAnnotation { get; } DbSet EpubFont { get; } DbSet AppUserReadingSession { get; } DbSet AppUserReadingSessionActivityData { get; } DbSet AppUserReadingHistory { get; } DbSet ClientDevice { get; } DbSet ClientDeviceHistory { get; } DbSet AppUserAuthKey { get; } // Change Tracking and Saving ChangeTracker ChangeTracker { get; } int SaveChanges(); int SaveChanges(bool acceptAllChangesOnSuccess); Task SaveChangesAsync(CancellationToken cancellationToken = default); Task SaveChangesAsync(bool acceptAllChangesOnSuccess, CancellationToken cancellationToken = default); EntityEntry Entry(TEntity entity) where TEntity : class; }