Files
Kavita/Kavita.API/Database/IUnitOfWork.cs
T
Joe Milazzo 28f082b653 Kavita+ Audit Log (#4711)
Co-authored-by: Ansh Raj <anshraj220109+github@proton.me>
Co-authored-by: Amelia <77553571+Fesaa@users.noreply.github.com>
Co-authored-by: Weblate (bot) <hosted@weblate.org>
Co-authored-by: Adam Havránek <adamhavra@seznam.cz>
Co-authored-by: Gregory.Open <gregory.open@proton.me>
Co-authored-by: Lyrq <lyrq.ku@gmail.com>
Co-authored-by: oxygen44k <iiccpp@outlook.com>
Co-authored-by: Grez Kull <grezkull@users.noreply.hosted.weblate.org>
2026-05-21 06:09:15 -07:00

50 lines
2.3 KiB
C#

using System.Threading;
using System.Threading.Tasks;
using Kavita.API.Repositories;
namespace Kavita.API.Database;
public interface IUnitOfWork
{
IDataContext DataContext { get; }
ISeriesRepository SeriesRepository { get; }
IUserRepository UserRepository { get; }
ILibraryRepository LibraryRepository { get; }
IVolumeRepository VolumeRepository { get; }
ISettingsRepository SettingsRepository { get; }
IAppUserProgressRepository AppUserProgressRepository { get; }
ICollectionTagRepository CollectionTagRepository { get; }
IChapterRepository ChapterRepository { get; }
IReadingListRepository ReadingListRepository { get; }
ISeriesMetadataRepository SeriesMetadataRepository { get; }
IPersonRepository PersonRepository { get; }
IGenreRepository GenreRepository { get; }
ITagRepository TagRepository { get; }
ISiteThemeRepository SiteThemeRepository { get; }
IMangaFileRepository MangaFileRepository { get; }
IDeviceRepository DeviceRepository { get; }
IMediaErrorRepository MediaErrorRepository { get; }
IScrobbleRepository ScrobbleRepository { get; }
IUserTableOfContentRepository UserTableOfContentRepository { get; }
IAppUserSmartFilterRepository AppUserSmartFilterRepository { get; }
IAppUserExternalSourceRepository AppUserExternalSourceRepository { get; }
IExternalSeriesMetadataRepository ExternalSeriesMetadataRepository { get; }
IEmailHistoryRepository EmailHistoryRepository { get; }
IAppUserReadingProfileRepository AppUserReadingProfileRepository { get; }
IAnnotationRepository AnnotationRepository { get; }
IEpubFontRepository EpubFontRepository { get; }
IReadingSessionRepository ReadingSessionRepository { get; }
IClientDeviceRepository ClientDeviceRepository { get; }
IReadingListRemapRuleRepository RemapRuleRepository { get; }
IKavitaPlusAuditRepository KavitaPlusAuditRepository { get; }
/// <summary>
/// Commits pending changes to the database inside an IMMEDIATE transaction so writer
/// contention waits on the SQLite writer lock (via busy_timeout) instead of failing with
/// SQLITE_BUSY_SNAPSHOT.
/// </summary>
Task<bool> CommitAsync(CancellationToken ct = default);
bool HasChanges();
Task<bool> RollbackAsync(CancellationToken ct = default);
}