Exemplo n.º 1
0
        public static async Task SubscribeAsync(this DatabaseContextBuilder dbb, ulong gid, ulong cid, string url, string name = null)
        {
            var newest = RssService.GetFeedResults(url)?.FirstOrDefault();

            if (newest is null)
            {
                throw new Exception("Can't load the feed entries.");
            }

            using (DatabaseContext db = dbb.CreateContext())
            {
                DatabaseRssFeed feed = db.RssFeeds.SingleOrDefault(f => f.Url == url);
                if (feed is null)
                {
                    feed = new DatabaseRssFeed()
                    {
                        Url         = url,
                        LastPostUrl = newest.Links[0].Uri.ToString()
                    };
                    db.RssFeeds.Add(feed);
                    await db.SaveChangesAsync();
                }

                db.RssSubscriptions.Add(new DatabaseRssSubscription()
                {
                    ChannelId = cid,
                    GuildId   = gid,
                    Id        = feed.Id,
                    Name      = name ?? url
                });

                await db.SaveChangesAsync();
            }
        }
 private void RemoveDeadFeed(DatabaseRssFeed feed)
 {
     this.Database.RssFeeds.Remove(feed);
 }
 private void InitializeFeed(DatabaseRssFeed feed, DateTimeOffset dto)
 {
     feed.LastTimestamp         = dto;
     feed.InitializeReplayCount = null;
     this.Database.RssFeeds.Update(feed);
 }