From 0797fb85029f2fd42e31a8e846d23365fe10222a Mon Sep 17 00:00:00 2001 From: James Tombleson Date: Fri, 23 Jun 2023 23:01:40 -0700 Subject: [PATCH] Souces has been moved to ef and with entites --- .../Controllers/ArticlesController.cs | 2 +- .../Controllers/SourcesController.cs | 39 ++-- .../Controllers/SubscriptionsController.cs | 20 +- .../Repositories/SourcesTable.cs | 207 +++++++++--------- .../Dto/ArticleDetailsDto.cs | 2 +- Newsbot.Collector.Domain/Dto/SourceDto.cs | 5 +- .../Dto/SubscriptionDetailsDto.cs | 5 +- .../Interfaces/ISourcesRepository.cs | 19 +- .../Jobs/CodeProjectWatcherJob.cs | 10 +- .../Jobs/DiscordNotificationJob.cs | 19 +- .../Jobs/RssWatcherJob.cs | 4 +- .../Jobs/YoutubeWatcherJob.cs | 8 +- .../Jobs/CodeProjectWatcherJobTests.cs | 13 +- .../Jobs/DiscordNotificationJobTest.cs | 12 +- .../Tables/SourcesTableTests.cs | 5 +- 15 files changed, 186 insertions(+), 184 deletions(-) diff --git a/Newsbot.Collector.Api/Controllers/ArticlesController.cs b/Newsbot.Collector.Api/Controllers/ArticlesController.cs index f5408ee..502d04a 100644 --- a/Newsbot.Collector.Api/Controllers/ArticlesController.cs +++ b/Newsbot.Collector.Api/Controllers/ArticlesController.cs @@ -43,7 +43,7 @@ public class ArticlesController : ControllerBase public ArticleDetailsDto GetDetailsById(Guid id) { var item = _articles.GetById(id); - var sourceItem = _sources.GetByID(item.SourceId); + var sourceItem = _sources.GetById(item.SourceId); return ArticleDetailsDto.Convert(item, sourceItem); } diff --git a/Newsbot.Collector.Api/Controllers/SourcesController.cs b/Newsbot.Collector.Api/Controllers/SourcesController.cs index 57e244d..41bd859 100644 --- a/Newsbot.Collector.Api/Controllers/SourcesController.cs +++ b/Newsbot.Collector.Api/Controllers/SourcesController.cs @@ -3,6 +3,7 @@ using Microsoft.Extensions.Options; using Newsbot.Collector.Database.Repositories; using Newsbot.Collector.Domain.Consts; using Newsbot.Collector.Domain.Dto; +using Newsbot.Collector.Domain.Entities; using Newsbot.Collector.Domain.Interfaces; using Newsbot.Collector.Domain.Models; using Newsbot.Collector.Services.HtmlParser; @@ -39,10 +40,10 @@ public class SourcesController : ControllerBase } [HttpGet("by/type")] - public IEnumerable GetByType(string type) + public IEnumerable GetByType(string type, int page) { var res = new List(); - var temp = _sources.ListByType(type); + var temp = _sources.ListByType(type, page); foreach (var item in temp) res.Add(SourceDto.Convert(item)); return res; } @@ -51,7 +52,7 @@ public class SourcesController : ControllerBase public SourceDto NewReddit(string name) { var res = _sources.GetByNameAndType(name, SourceTypes.Reddit); - if (res.ID != Guid.Empty) return SourceDto.Convert(res); + if (res.Id != Guid.Empty) return SourceDto.Convert(res); var uri = new Uri($"https://reddit.com/r/{name}"); @@ -61,7 +62,7 @@ public class SourcesController : ControllerBase }); pageReader.Parse(); - var item = _sources.New(new SourceModel + var item = _sources.New(new SourceEntity { Site = SourceTypes.Reddit, Name = name, @@ -74,11 +75,11 @@ public class SourcesController : ControllerBase // Not all subreddits have an Icon, so we only want to add a record when it has one. if (pageReader.Data.Header.Image != "") - _icons.New(new IconModel + _icons.New(new IconEntity() { Id = Guid.NewGuid(), FileName = pageReader.Data.Header.Image, - SourceId = item.ID + SourceId = item.Id }); return SourceDto.Convert(item); } @@ -87,9 +88,9 @@ public class SourcesController : ControllerBase public SourceDto NewRss(string name, string url) { var res = _sources.GetByNameAndType(name, SourceTypes.Rss); - if (res.ID != Guid.Empty) return SourceDto.Convert(res); + if (res.Id != Guid.Empty) return SourceDto.Convert(res); - var m = new SourceModel + var m = new SourceEntity { Site = SourceTypes.Rss, Name = name, @@ -107,7 +108,7 @@ public class SourcesController : ControllerBase public SourceDto NewYoutube(string url) { var res = _sources.GetByUrl(url); - if (res.ID != Guid.Empty) return SourceDto.Convert(res); + if (res.Id != Guid.Empty) return SourceDto.Convert(res); var htmlClient = new HtmlPageReader(new HtmlPageReaderOptions { @@ -115,7 +116,7 @@ public class SourcesController : ControllerBase }); htmlClient.Parse(); - var item = _sources.New(new SourceModel + var item = _sources.New(new SourceEntity { Site = SourceTypes.YouTube, Type = SourceTypes.YouTube, @@ -127,11 +128,11 @@ public class SourcesController : ControllerBase YoutubeId = htmlClient.Data.Header.YoutubeChannelID ?? "" }); - _icons.New(new IconModel + _icons.New(new IconEntity() { Id = Guid.NewGuid(), FileName = htmlClient.Data.Header.Image, - SourceId = item.ID + SourceId = item.Id }); return SourceDto.Convert(item); @@ -141,9 +142,9 @@ public class SourcesController : ControllerBase public SourceDto NewTwitch(string name) { var res = _sources.GetByNameAndType(name, SourceTypes.Twitch); - if (res.ID != Guid.Empty) return SourceDto.Convert(res); + if (res.Id != Guid.Empty) return SourceDto.Convert(res); - var item = _sources.New(new SourceModel + var item = _sources.New(new SourceEntity { Site = SourceTypes.Twitch, Type = SourceTypes.Twitch, @@ -162,7 +163,7 @@ public class SourcesController : ControllerBase //if (!url.Contains("github.com")) return new SourceDto(); var res = _sources.GetByUrl(url); - if (res.ID != Guid.Empty) return SourceDto.Convert(res); + if (res.Id != Guid.Empty) return SourceDto.Convert(res); var slice = url.Split('/'); @@ -172,7 +173,7 @@ public class SourcesController : ControllerBase }); pageReader.Parse(); - var item = _sources.New(new SourceModel + var item = _sources.New(new SourceEntity { Site = SourceTypes.CodeProject, Type = SourceTypes.CodeProject, @@ -183,11 +184,11 @@ public class SourcesController : ControllerBase Tags = $"{slice[2]},{slice[3]},{slice[4]}" }); - _icons.New(new IconModel + _icons.New(new IconEntity() { Id = Guid.NewGuid(), FileName = pageReader.Data.Header.Image, - SourceId = item.ID + SourceId = item.Id }); return SourceDto.Convert(item); @@ -196,7 +197,7 @@ public class SourcesController : ControllerBase [HttpGet("{id}")] public SourceDto GetById(Guid id) { - var item = _sources.GetByID(id); + var item = _sources.GetById(id); return SourceDto.Convert(item); } diff --git a/Newsbot.Collector.Api/Controllers/SubscriptionsController.cs b/Newsbot.Collector.Api/Controllers/SubscriptionsController.cs index 624547b..bd6a953 100644 --- a/Newsbot.Collector.Api/Controllers/SubscriptionsController.cs +++ b/Newsbot.Collector.Api/Controllers/SubscriptionsController.cs @@ -43,8 +43,8 @@ public class SubscriptionsController : ControllerBase public SubscriptionDetailsDto GetDetailsById(Guid id) { var sub = _subscription.GetById(id); - var webhook = _discord.GetByID(sub.DiscordWebHookId); - var source = _sources.GetByID(sub.SourceId); + var webhook = _discord.GetById(sub.DiscordWebHookId); + var source = _sources.GetById(sub.SourceId); return SubscriptionDetailsDto.Convert(sub, source, webhook); } @@ -82,11 +82,11 @@ public class SubscriptionsController : ControllerBase var exists = _subscription.GetByWebhookAndSource(discordId, sourceId); if (exists.Id != Guid.Empty) return SubscriptionDto.Convert(exists); - var discord = _discord.GetByID(discordId); - if (discord.ID == Guid.Empty) return new BadRequestResult(); + var discord = _discord.GetById(discordId); + if (discord.Id == Guid.Empty) return new BadRequestResult(); - var source = _sources.GetByID(sourceId); - if (source.ID == Guid.Empty) return new BadRequestResult(); + var source = _sources.GetById(sourceId); + if (source.Id == Guid.Empty) return new BadRequestResult(); var item = _subscription.New(new SubscriptionModel { @@ -110,11 +110,11 @@ public class SubscriptionsController : ControllerBase var exists = _subscription.GetByWebhookAndSource(discordId, sourceId); if (exists.Id != Guid.Empty) return SubscriptionDto.Convert(exists); - var discord = _discord.GetByID(discordId); - if (discord.ID == Guid.Empty) return new BadRequestResult(); + var discord = _discord.GetById(discordId); + if (discord.Id == Guid.Empty) return new BadRequestResult(); - var source = _sources.GetByID(sourceId); - if (source.ID == Guid.Empty) return new BadRequestResult(); + var source = _sources.GetById(sourceId); + if (source.Id == Guid.Empty) return new BadRequestResult(); var sub = _subscription.New(new SubscriptionModel { diff --git a/Newsbot.Collector.Database/Repositories/SourcesTable.cs b/Newsbot.Collector.Database/Repositories/SourcesTable.cs index 61348cf..1ea6520 100644 --- a/Newsbot.Collector.Database/Repositories/SourcesTable.cs +++ b/Newsbot.Collector.Database/Repositories/SourcesTable.cs @@ -1,6 +1,7 @@ using System.Data; using Dapper; using Microsoft.Extensions.Configuration; +using Newsbot.Collector.Domain.Entities; using Newsbot.Collector.Domain.Interfaces; using Newsbot.Collector.Domain.Models; using Npgsql; @@ -23,157 +24,153 @@ public class SourcesTable : ISourcesRepository _connectionString = connstr; } - public SourceModel New(SourceModel model) + public SourceEntity New(SourceEntity model) { - model.ID = Guid.NewGuid(); - using var conn = OpenConnection(_connectionString); - var query = - "Insert Into Sources (ID, Site, Name, Source, Type, Value, Enabled, Url, Tags, YoutubeId) Values (@id ,@site,@name,@source,@type,@value,@enabled,@url,@tags,@youtubeid);"; - conn.Execute(query, new + model.Id = Guid.NewGuid(); + using var context = new DatabaseContext(_connectionString); + context.Sources.Add(model); + try { - id = model.ID, - model.Site, - model.Name, - model.Source, - model.Type, - model.Value, - model.Enabled, - model.Url, - model.Tags, - model.YoutubeId - }); + context.SaveChanges(); + } + catch (Exception ex) + { + Console.WriteLine($"Failed to save "); + } + return model; } - public SourceModel GetByID(Guid ID) + public SourceEntity GetById(Guid id) { - using var conn = OpenConnection(_connectionString); - var query = "Select * From Sources where ID = @id Limit 1;"; - var res = conn.Query(query, new - { - id = ID - }); - if (res.Count() == 0) return new SourceModel(); - return res.First(); + using var context = new DatabaseContext(_connectionString); + var res = context.Sources.FirstOrDefault(f => f.Id.Equals(id)); + res ??= new SourceEntity(); + return res; } - public SourceModel GetByID(string ID) + public SourceEntity GetById(string id) { - var uid = Guid.Parse(ID); - return GetByID(uid); + var uid = Guid.Parse(id); + return GetById(uid); } - public SourceModel GetByName(string Name) + public SourceEntity GetByName(string name) { - using var conn = OpenConnection(_connectionString); - var query = "Select * from Sources where name = @name Limit 1;"; - var res = conn.Query(query, new - { - name = Name - }); - - if (res.Count() == 0) return new SourceModel(); - return res.First(); + using var context = new DatabaseContext(_connectionString); + var res = context.Sources.FirstOrDefault(f => f.Name.Equals(name)); + res ??= new SourceEntity(); + return res; } - public SourceModel GetByNameAndType(string name, string type) + public SourceEntity GetByNameAndType(string name, string type) { - using var conn = OpenConnection(_connectionString); - var query = "Select * from Sources WHERE name = @name and type = @type;"; - var res = conn.Query(query, new - { - name, type - }); - - if (res.Count() == 0) return new SourceModel(); - return res.First(); + using var context = new DatabaseContext(_connectionString); + var res = context.Sources + .Where(f => f.Name.Equals(name)) + .FirstOrDefault(f => f.Type.Equals(type)); + res ??= new SourceEntity(); + return res; } - public SourceModel GetByUrl(string url) + public SourceEntity GetByUrl(string url) { - using var conn = OpenConnection(_connectionString); - var query = "Select * from Sources WHERE url = @url;"; - var res = conn.Query(query, new - { - url - }); - - if (res.ToList().Count == 0) return new SourceModel(); - - return res.First(); + using var context = new DatabaseContext(_connectionString); + var res = context.Sources + .FirstOrDefault(f => f.Url.Equals(url)); + res ??= new SourceEntity(); + return res; } - public List List(int page = 0, int count = 25) + public List List(int page = 0, int count = 100) { - using var conn = OpenConnection(_connectionString); - var query = @"Select * From Sources - Offset @page - Fetch Next @count Rows Only;"; - return conn.Query(query, new - { - page = page * count, count - }).ToList(); + using var context = new DatabaseContext(_connectionString); + var res = context.Sources + .Skip(page * count) + .Take(count) + .ToList(); + return res; } - public List ListBySource(string source, int limit = 25) + public List ListBySource(string source, int page = 0, int limit = 25) { - using var conn = OpenConnection(_connectionString); - var query = "Select * From Sources where Source = @source Limit @limit;"; - return conn.Query(query, new - { - source, limit - }).ToList(); + using var context = new DatabaseContext(_connectionString); + var res = context.Sources + .Where(f => f.Source.Equals(source)) + .Skip(page * limit) + .Take(limit) + .ToList(); + return res; } - public List ListByType(string type, int limit = 25) + public List ListByType(string type,int page = 0, int limit = 25) { - using var conn = OpenConnection(_connectionString); - var query = "Select * From Sources where Type = @type Limit @limit;"; - return conn.Query(query, new - { - type, limit - }).ToList(); + using var context = new DatabaseContext(_connectionString); + var res = context.Sources + .Where(f => f.Type.Equals(type)) + .Skip(page * limit) + .Take(limit) + .ToList(); + return res; } public int Disable(Guid id) { - using var conn = OpenConnection(_connectionString); - var query = "Update Sources Set Enabled = FALSE where ID = @id;"; - return conn.Execute(query, new + using var context = new DatabaseContext(_connectionString); + var res = GetById(id); + res.Enabled = false; + context.Sources.Update(res); + try { - id - }); + context.SaveChanges(); + return 1; + } + catch + { + return 0; + } } public int Enable(Guid id) { - using var conn = OpenConnection(_connectionString); - var query = "Update Sources Set Enabled = TRUE where ID = @id;"; - return conn.Execute(query, new + using var context = new DatabaseContext(_connectionString); + var res = GetById(id); + res.Enabled = true; + context.Sources.Update(res); + try { - id - }); + context.SaveChanges(); + return 1; + } + catch + { + return 0; + } } public void Delete(Guid id) { - using var conn = OpenConnection(_connectionString); - var query = "Delete From sources where id = @id;"; - var res = conn.Execute(query, new - { - id - }); - if (res == 0) throw new Exception("Nothing was deleted"); + using var context = new DatabaseContext(_connectionString); + var res = GetById(id); + context.Sources.Remove(res); + context.SaveChanges(); } public int UpdateYoutubeId(Guid id, string youtubeId) { - using var conn = OpenConnection(_connectionString); - var query = "Update Sources Set youtubeid = @youtubeId where ID = @id;"; - return conn.Execute(query, new + using var context = new DatabaseContext(_connectionString); + var res = GetById(id); + res.YoutubeId = youtubeId; + context.Sources.Update(res); + try { - id, youtubeId - }); + context.SaveChanges(); + return 1; + } + catch + { + return 0; + } } private IDbConnection OpenConnection(string connectionString) diff --git a/Newsbot.Collector.Domain/Dto/ArticleDetailsDto.cs b/Newsbot.Collector.Domain/Dto/ArticleDetailsDto.cs index e89280c..ca1fb6d 100644 --- a/Newsbot.Collector.Domain/Dto/ArticleDetailsDto.cs +++ b/Newsbot.Collector.Domain/Dto/ArticleDetailsDto.cs @@ -20,7 +20,7 @@ public class ArticleDetailsDto public SourceDto? Source { get; set; } - public static ArticleDetailsDto Convert(ArticlesEntity article, SourceModel source) + public static ArticleDetailsDto Convert(ArticlesEntity article, SourceEntity source) { return new ArticleDetailsDto { diff --git a/Newsbot.Collector.Domain/Dto/SourceDto.cs b/Newsbot.Collector.Domain/Dto/SourceDto.cs index 8a9e051..bd3f7a1 100644 --- a/Newsbot.Collector.Domain/Dto/SourceDto.cs +++ b/Newsbot.Collector.Domain/Dto/SourceDto.cs @@ -1,4 +1,5 @@ using System.Net.NetworkInformation; +using Newsbot.Collector.Domain.Entities; using Newsbot.Collector.Domain.Models; namespace Newsbot.Collector.Domain.Dto; @@ -16,10 +17,10 @@ public class SourceDto public string[]? Tags { get; set; } public bool Deleted { get; set; } - public static SourceDto Convert(SourceModel model) { + public static SourceDto Convert(SourceEntity model) { return new SourceDto { - ID = model.ID, + ID = model.Id, Site = model.Site, Name = model.Name, Source = model.Source, diff --git a/Newsbot.Collector.Domain/Dto/SubscriptionDetailsDto.cs b/Newsbot.Collector.Domain/Dto/SubscriptionDetailsDto.cs index bc9c9d7..a73c9cd 100644 --- a/Newsbot.Collector.Domain/Dto/SubscriptionDetailsDto.cs +++ b/Newsbot.Collector.Domain/Dto/SubscriptionDetailsDto.cs @@ -1,3 +1,4 @@ +using Newsbot.Collector.Domain.Entities; using Newsbot.Collector.Domain.Models; namespace Newsbot.Collector.Domain.Dto; @@ -10,8 +11,8 @@ public class SubscriptionDetailsDto public SourceDto? Source { get; set; } public DiscordWebHookDto? DiscordWebHook { get; set; } - public static SubscriptionDetailsDto Convert(SubscriptionModel subscription, SourceModel source, - DiscordWebHookModel discord) + public static SubscriptionDetailsDto Convert(SubscriptionModel subscription, SourceEntity source, + DiscordWebhookEntity discord) { return new SubscriptionDetailsDto { diff --git a/Newsbot.Collector.Domain/Interfaces/ISourcesRepository.cs b/Newsbot.Collector.Domain/Interfaces/ISourcesRepository.cs index c528230..9c4c843 100644 --- a/Newsbot.Collector.Domain/Interfaces/ISourcesRepository.cs +++ b/Newsbot.Collector.Domain/Interfaces/ISourcesRepository.cs @@ -1,18 +1,19 @@ +using Newsbot.Collector.Domain.Entities; using Newsbot.Collector.Domain.Models; namespace Newsbot.Collector.Domain.Interfaces; public interface ISourcesRepository { - public SourceModel New(SourceModel model); - public SourceModel GetByID(Guid ID); - public SourceModel GetByID(string ID); - public SourceModel GetByName(string name); - public SourceModel GetByNameAndType(string name, string type); - SourceModel GetByUrl(string url); - public List List(int page, int count); - public List ListBySource(string source, int limit); - public List ListByType(string type, int limit = 25); + public SourceEntity New(SourceEntity model); + public SourceEntity GetById(Guid id); + public SourceEntity GetById(string id); + public SourceEntity GetByName(string name); + public SourceEntity GetByNameAndType(string name, string type); + SourceEntity GetByUrl(string url); + public List List(int page, int count); + public List ListBySource(string source,int page, int limit); + public List ListByType(string type,int page, int limit = 25); public int Disable(Guid id); public int Enable(Guid id); public void Delete(Guid id); diff --git a/Newsbot.Collector.Services/Jobs/CodeProjectWatcherJob.cs b/Newsbot.Collector.Services/Jobs/CodeProjectWatcherJob.cs index 8b58df4..1414a08 100644 --- a/Newsbot.Collector.Services/Jobs/CodeProjectWatcherJob.cs +++ b/Newsbot.Collector.Services/Jobs/CodeProjectWatcherJob.cs @@ -61,7 +61,7 @@ public class CodeProjectWatcherJob private void Execute() { - var sources = _source.ListByType(SourceTypes.CodeProject); + var sources = _source.ListByType(SourceTypes.CodeProject, 0, 100); // query sources for things to pull var items = new List(); @@ -82,7 +82,7 @@ public class CodeProjectWatcherJob } } - public IEnumerable CheckForReleases(SourceModel source) + public IEnumerable CheckForReleases(SourceEntity source) { var url = new Uri(source.Url); var links = new List @@ -114,7 +114,7 @@ public class CodeProjectWatcherJob return new List(); } - public IEnumerable CheckForCommits(SourceModel source) + public IEnumerable CheckForCommits(SourceEntity source) { var url = new Uri(source.Url); var links = new List @@ -140,7 +140,7 @@ public class CodeProjectWatcherJob return new List(); } - private IEnumerable ProcessFeed(IEnumerable feed, SourceModel source, + private IEnumerable ProcessFeed(IEnumerable feed, SourceEntity source, bool isRelease, bool isCommit) { var items = new List(); @@ -159,7 +159,7 @@ public class CodeProjectWatcherJob var a = new ArticlesEntity { - SourceId = source.ID, + SourceId = source.Id, Tags = source.Tags, Title = item.Title.Text, Url = itemUrl, diff --git a/Newsbot.Collector.Services/Jobs/DiscordNotificationJob.cs b/Newsbot.Collector.Services/Jobs/DiscordNotificationJob.cs index ed30ba2..be60738 100644 --- a/Newsbot.Collector.Services/Jobs/DiscordNotificationJob.cs +++ b/Newsbot.Collector.Services/Jobs/DiscordNotificationJob.cs @@ -91,8 +91,8 @@ public class DiscordNotificationJob var articleDetails = _article.GetById(request.ArticleId); // Get the details of the source - var sourceDetails = _sources.GetByID(articleDetails.SourceId); - if (sourceDetails.ID == Guid.Empty) + var sourceDetails = _sources.GetById(articleDetails.SourceId); + if (sourceDetails.Id == Guid.Empty) { _logger.Error( $"{JobName} - Article ({articleDetails.Id}) was linked to a empty Source ID. Removing from the queue."); @@ -100,19 +100,19 @@ public class DiscordNotificationJob return; } - var sourceIcon = new IconModel(); + var sourceIcon = new IconEntity(); try { - sourceIcon = _icons.GetBySourceId(sourceDetails.ID); + sourceIcon = _icons.GetBySourceId(sourceDetails.Id); } catch { _logger.Warning("{JobName} - Source ID \'{SourceDetailsId}\' is missing an icon", JobName, - sourceDetails.ID); + sourceDetails.Id); } // Find all the subscriptions for that source - var allSubscriptions = _subs.ListBySourceID(sourceDetails.ID); + var allSubscriptions = _subs.ListBySourceID(sourceDetails.Id); foreach (var sub in allSubscriptions) SendSubscriptionNotification(request.Id, articleDetails, sourceDetails, sourceIcon, sub); @@ -121,8 +121,7 @@ public class DiscordNotificationJob _queue.Delete(request.Id); } - public void SendSubscriptionNotification(Guid requestId, ArticlesEntity articleDetails, SourceModel sourceDetails, - IconModel sourceIcon, SubscriptionModel sub) + public void SendSubscriptionNotification(Guid requestId, ArticlesEntity articleDetails, SourceEntity sourceDetails, IconEntity sourceIcon, SubscriptionModel sub) { // Check if the subscription code flags // If the article is a code commit and the subscription does not want them, skip. @@ -145,14 +144,14 @@ public class DiscordNotificationJob _logger.Error("Failed to post message to Discord. {ErrorMessage}", e.Message); _logger.Debug("Queue Record: {RequestId}", requestId); _logger.Debug("Article: {ArticleDetailsId}", articleDetails.Id); - _logger.Debug("Source: {SourceDetailsId}", sourceDetails.ID); + _logger.Debug("Source: {SourceDetailsId}", sourceDetails.Id); _logger.Debug("Subscription: {SubId}", sub.Id); } Thread.Sleep(3000); } - public DiscordMessage GenerateDiscordMessage(SourceModel source, ArticlesEntity article, IconModel icon) + public DiscordMessage GenerateDiscordMessage(SourceEntity source, ArticlesEntity article, IconEntity icon) { var embed = new DiscordMessageEmbed { diff --git a/Newsbot.Collector.Services/Jobs/RssWatcherJob.cs b/Newsbot.Collector.Services/Jobs/RssWatcherJob.cs index 8548006..be35362 100644 --- a/Newsbot.Collector.Services/Jobs/RssWatcherJob.cs +++ b/Newsbot.Collector.Services/Jobs/RssWatcherJob.cs @@ -60,14 +60,14 @@ public class RssWatcherJob var articles = new List(); _logger.Information($"{JobName} - Requesting sources"); - var sources = _source.ListByType(SourceTypes.Rss); + var sources = _source.ListByType(SourceTypes.Rss, 0, 100); _logger.Information("{JobName} - Got {SourcesCount} back", JobName, sources.Count); foreach (var source in sources) { _logger.Information("{JobName} - Starting to process \'{SourceName}\'", JobName, source.Name); _logger.Information($"{JobName} - Starting to request feed to be processed"); - var results = Collect(source.Url, source.ID); + var results = Collect(source.Url, source.Id); _logger.Information($"{JobName} - Collected {results.Count} posts"); articles.AddRange(results); diff --git a/Newsbot.Collector.Services/Jobs/YoutubeWatcherJob.cs b/Newsbot.Collector.Services/Jobs/YoutubeWatcherJob.cs index 8297684..2374fe5 100644 --- a/Newsbot.Collector.Services/Jobs/YoutubeWatcherJob.cs +++ b/Newsbot.Collector.Services/Jobs/YoutubeWatcherJob.cs @@ -67,11 +67,11 @@ public class YoutubeWatcherJob if (channelId == "") { channelId = GetChannelId(source.Url); - _source.UpdateYoutubeId(source.ID, channelId); + _source.UpdateYoutubeId(source.Id, channelId); } // Make sure we have a Icon for the channel - var icon = _icons.GetBySourceId(source.ID); + var icon = _icons.GetBySourceId(source.Id); if (icon.Id == Guid.Empty) Console.WriteLine("I was triggered :V"); _logger.Information($"{JobName} - Checking '{source.Name}'"); @@ -110,7 +110,7 @@ public class YoutubeWatcherJob return id; } - private List CheckFeed(string url, SourceModel source) + private List CheckFeed(string url, SourceEntity source) { var videos = new List(); @@ -137,7 +137,7 @@ public class YoutubeWatcherJob PubDate = post.PublishDate.DateTime, Thumbnail = videoDetails.Data.Header.Image, Description = videoDetails.Data.Header.Description, - SourceId = source.ID, + SourceId = source.Id, Video = "true" }; diff --git a/Newsbot.Collector.Tests/Jobs/CodeProjectWatcherJobTests.cs b/Newsbot.Collector.Tests/Jobs/CodeProjectWatcherJobTests.cs index 36ecb04..101b918 100644 --- a/Newsbot.Collector.Tests/Jobs/CodeProjectWatcherJobTests.cs +++ b/Newsbot.Collector.Tests/Jobs/CodeProjectWatcherJobTests.cs @@ -1,5 +1,6 @@ using Microsoft.Extensions.Configuration; using Newsbot.Collector.Domain.Consts; +using Newsbot.Collector.Domain.Entities; using Newsbot.Collector.Domain.Models; using Newsbot.Collector.Domain.Models.Config; using Newsbot.Collector.Services.Jobs; @@ -18,9 +19,9 @@ public class CodeProjectWatcherJobTests FeaturePullCommits = true, FeaturePullReleases = true }); - var results = client.CheckForReleases(new SourceModel + var results = client.CheckForReleases(new SourceEntity { - ID = Guid.NewGuid(), + Id = Guid.NewGuid(), Url = "https://github.com/jtom38/dvb", Type = SourceTypes.CodeProject, Site = SourceTypes.CodeProject, @@ -44,9 +45,9 @@ public class CodeProjectWatcherJobTests FeaturePullCommits = true, FeaturePullReleases = true }); - var results = client.CheckForReleases(new SourceModel + var results = client.CheckForReleases(new SourceEntity { - ID = Guid.NewGuid(), + Id = Guid.NewGuid(), Url = "https://github.com/python/cpython", Type = SourceTypes.CodeProject, Site = SourceTypes.CodeProject, @@ -70,9 +71,9 @@ public class CodeProjectWatcherJobTests FeaturePullCommits = true, FeaturePullReleases = true }); - var results = client.CheckForCommits(new SourceModel + var results = client.CheckForCommits(new SourceEntity { - ID = Guid.NewGuid(), + Id = Guid.NewGuid(), Url = "https://github.com/jtom38/dvb", Type = SourceTypes.CodeProject, Site = SourceTypes.CodeProject, diff --git a/Newsbot.Collector.Tests/Jobs/DiscordNotificationJobTest.cs b/Newsbot.Collector.Tests/Jobs/DiscordNotificationJobTest.cs index 249133e..46192b2 100644 --- a/Newsbot.Collector.Tests/Jobs/DiscordNotificationJobTest.cs +++ b/Newsbot.Collector.Tests/Jobs/DiscordNotificationJobTest.cs @@ -14,9 +14,9 @@ public class DiscordNotificationJobTest var webhookClient = new DiscordWebhookClient(uri); var client = new DiscordNotificationJob(); - var msg = client.GenerateDiscordMessage(new SourceModel + var msg = client.GenerateDiscordMessage(new SourceEntity { - ID = Guid.NewGuid(), + Id = Guid.NewGuid(), Site = "Unit Test", Source = "placeholder", Type = "a", @@ -35,7 +35,7 @@ public class DiscordNotificationJobTest Description = "Please work", AuthorName = "No one knows" }, - new IconModel + new IconEntity() { Id = Guid.NewGuid(), FileName = "https://www.redditstatic.com/desktop2x/img/favicon/android-icon-192x192.png" @@ -63,9 +63,9 @@ public class DiscordNotificationJobTest AuthorName = "No one knows", CodeIsCommit = true }, - new SourceModel + new SourceEntity { - ID = Guid.NewGuid(), + Id = Guid.NewGuid(), Site = "Unit Test", Source = "placeholder", Type = "a", @@ -74,7 +74,7 @@ public class DiscordNotificationJobTest Url = "https://github.com", Tags = "Unit, Testing" }, - new IconModel + new IconEntity() { Id = Guid.NewGuid(), FileName = "https://www.redditstatic.com/desktop2x/img/favicon/android-icon-192x192.png" diff --git a/Newsbot.Collector.Tests/Tables/SourcesTableTests.cs b/Newsbot.Collector.Tests/Tables/SourcesTableTests.cs index c514cba..9903747 100644 --- a/Newsbot.Collector.Tests/Tables/SourcesTableTests.cs +++ b/Newsbot.Collector.Tests/Tables/SourcesTableTests.cs @@ -1,4 +1,5 @@ using Newsbot.Collector.Database.Repositories; +using Newsbot.Collector.Domain.Entities; using Newsbot.Collector.Domain.Models; namespace Newsbot.Collector.Tests.Tables; @@ -9,9 +10,9 @@ public class SourcesTableTests public void NewRecordTest() { var client = new SourcesTable(""); - var m = new SourceModel + var m = new SourceEntity { - ID = Guid.NewGuid(), + Id = Guid.NewGuid(), Site = "Testing", Name = "Testing", Source = "Testing",