public bool AddFeed(ulong guildId, ulong channelId, string rssFeed) { rssFeed.ThrowIfNull(nameof(rssFeed)); var fs = new FeedSub() { ChannelId = channelId, Url = rssFeed.Trim(), }; using (var uow = _db.GetDbContext()) { var gc = uow.GuildConfigs.ForId(guildId, set => set.Include(x => x.FeedSubs) .ThenInclude(x => x.GuildConfig)); if (gc.FeedSubs.Any(x => x.Url.ToLower() == fs.Url.ToLower())) { return(false); } else if (gc.FeedSubs.Count >= 10) { return(false); } gc.FeedSubs.Add(fs); uow.SaveChanges(); //adding all, in case bot wasn't on this guild when it started foreach (var feed in gc.FeedSubs) { _subs.AddOrUpdate(feed.Url.ToLower(), new HashSet <FeedSub>() { feed }, (k, old) => { old.Add(feed); return(old); }); } } return(true); }
public bool AddFeed(ulong guildId, ulong channelId, string rssFeed) { rssFeed.ThrowIfNull(nameof(rssFeed)); var fs = new FeedSub() { ChannelId = channelId, Url = rssFeed.Trim().ToLowerInvariant(), }; using (var uow = _db.UnitOfWork) { var gc = uow.GuildConfigs.For(guildId, set => set.Include(x => x.FeedSubs)); if (gc.FeedSubs.Contains(fs)) { return(false); } else if (gc.FeedSubs.Count >= 10) { return(false); } gc.FeedSubs.Add(fs); //adding all, in case bot wasn't on this guild when it started foreach (var f in gc.FeedSubs) { _subs.AddOrUpdate(f.Url, new HashSet <FeedSub>(), (k, old) => { old.Add(f); return(old); }); } uow.Complete(); } return(true); }