using System; using System.Threading; using System.Threading.Tasks; using TwitchArchive.Core.Persistence.Models; namespace TwitchArchive.Core.Persistence { public interface ISessionRepository { Task CreateSessionAsync(string username, string streamId, DateTime startedAt, CancellationToken ct = default); Task EndSessionAsync(long sessionId, DateTime endedAt, string status, CancellationToken ct = default); Task CreateJobAsync(long sessionId, string jobType, DateTime startedAt, CancellationToken ct = default); Task UpdateJobAsync(ArchiveJob job, CancellationToken ct = default); Task> GetRecentSessionsAsync(int max = 50, CancellationToken ct = default); Task> GetJobsForSessionAsync(long sessionId, CancellationToken ct = default); } }