public async Task <UserFeed> CreateAsync(int rssFeedId, int userAccountId, string name, string groupName) { var userFeed = await _context.UserFeeds.AddAsync(new UserFeed { RssFeedId = rssFeedId, UserAccountId = userAccountId, Name = name, GroupName = groupName }); await _context.SaveChangesAsync(); return(userFeed.Entity); }
public async Task RemoveArticlesWhereCountOverAsync(int purgeCount) { var feedIdsWithTooManyArticles = await _context.Database.GetDbConnection().QueryAsync <int>( "select RssFeedId from Articles group by RssFeedId having count(1) > @purgeCount", new { purgeCount }); foreach (var feedId in feedIdsWithTooManyArticles) { _logger.LogTrace($"Removing old articles from feed {feedId}"); var articlesToDelete = _context.Articles.Where(a => a.RssFeedId == feedId).OrderByDescending(a => a.Published).ThenByDescending(a => a.Id).Skip(purgeCount); _context.Articles.RemoveRange(articlesToDelete); await _context.SaveChangesAsync(); } _context.UserArticlesRead.RemoveRange(_context.UserArticlesRead.FromSqlRaw("select uar.* from UserArticlesRead uar left join Articles a on uar.ArticleId = a.Id where a.Id is null")); await _context.SaveChangesAsync(); }
public async Task UpdateAsync(UserAccount userAccount) { var userAccountSettings = await _context.UserAccountSettings.Where(uas => uas.UserAccountId == userAccount.Id).ToListAsync(); var userAccountSetting = userAccountSettings.FirstOrDefault(uas => uas.SettingType == "ShowAllItems" && uas.SettingName == "ShowAllItems"); if (userAccountSetting == null) { await _context.UserAccountSettings.AddAsync(new UserAccountSetting { UserAccountId = userAccount.Id, SettingType = "ShowAllItems", SettingName = "ShowAllItems", SettingValue = Convert.ToString(userAccount.ShowAllItems) }); } else { userAccountSetting.SettingValue = Convert.ToString(userAccount.ShowAllItems); } userAccountSetting = userAccountSettings.FirstOrDefault(uas => uas.SettingType == "PocketAccessToken" && uas.SettingName == "PocketAccessToken"); if (userAccountSetting == null) { await _context.UserAccountSettings.AddAsync(new UserAccountSetting { UserAccountId = userAccount.Id, SettingType = "PocketAccessToken", SettingName = "PocketAccessToken", SettingValue = userAccount.PocketAccessToken }); } else { userAccountSetting.SettingValue = userAccount.PocketAccessToken; } _context.UserAccountSettings.RemoveRange(userAccountSettings.Where(uas => uas.SettingType == "ExpandedGroup")); await _context.UserAccountSettings.AddRangeAsync(userAccount.ExpandedGroups.Select(g => new UserAccountSetting { UserAccountId = userAccount.Id, SettingType = "ExpandedGroup", SettingName = "ExpandedGroup", SettingValue = g })); _context.UserAccountSettings.RemoveRange(userAccountSettings.Where(uas => uas.SettingType == "SavedLayout")); await _context.UserAccountSettings.AddRangeAsync(userAccount.SavedLayout.Select(l => new UserAccountSetting { UserAccountId = userAccount.Id, SettingType = "SavedLayout", SettingName = l.Key, SettingValue = l.Value })); await _context.SaveChangesAsync(); }
public async Task <bool> TryCreateAsync(int userAccountId, int userFeedId, int articleId) { if (await _context.UserArticlesRead.AnyAsync(uar => uar.UserAccountId == userAccountId && uar.UserFeedId == userFeedId && uar.ArticleId == articleId)) { return(false); } await _context.UserArticlesRead.AddAsync(new UserArticlesRead { UserAccountId = userAccountId, UserFeedId = userFeedId, ArticleId = articleId }); await _context.SaveChangesAsync(); return(true); }
public async Task <RssFeed> CreateAsync(string uri) { var feed = await GetByUriAsync(uri); if (feed != null) { throw new ArgumentException($"RSS feed already exists with uri: [{uri}]"); } var added = await _context.RssFeeds.AddAsync(new RssFeed { Uri = uri }); await _context.SaveChangesAsync(); return(added.Entity); }
public async Task AddOrUpdateAsync(string settingName, string settingValue) { var currentSetting = await FindSettingByNameAsync(settingName); if (currentSetting != null) { currentSetting.SettingValue = settingValue; } else { await _context.BackgroundServiceSettings.AddAsync(new BackgroundServiceSetting { SettingName = settingName, SettingValue = settingValue }); } await _context.SaveChangesAsync(); }