using Microsoft.EntityFrameworkCore; using SVSim.Database.Enums; using SVSim.Database.Models; namespace SVSim.Database.Repositories.Viewer; public class ViewerRepository : IViewerRepository { protected readonly SVSimDbContext _dbContext; public ViewerRepository(SVSimDbContext dbContext) { _dbContext = dbContext; } public async Task GetViewerBySocialConnection(SocialAccountType accountType, ulong socialId) { return (await _dbContext.Set() .AsNoTracking() .Include(sac => sac.Viewer) .FirstOrDefaultAsync(sac => sac.AccountType == accountType && sac.AccountId == socialId)) ?.Viewer; } public async Task GetViewerWithSocials(ulong id) { return await _dbContext.Set().AsNoTracking().Include(viewer => viewer.SocialAccountConnections) .FirstOrDefaultAsync(viewer => viewer.Id == id); } public async Task GetViewerByShortUdid(ulong shortUdid) { return await _dbContext.Set().AsNoTracking().Include(viewer => viewer.MissionData) .Include(viewer => viewer.Info).FirstOrDefaultAsync(viewer => viewer.ShortUdid == shortUdid); } }