diff --git a/SharpRss/DbAccess.cs b/SharpRss/DbAccess.cs index 8e56700..79c011c 100644 --- a/SharpRss/DbAccess.cs +++ b/SharpRss/DbAccess.cs @@ -4,6 +4,7 @@ using System.Data; using System.IO; using System.Linq; using System.Threading.Tasks; +using Argotic.Syndication; using Dapper; using Microsoft.Data.Sqlite; using Serilog; @@ -160,8 +161,36 @@ namespace SharpRss await cmd.ExecuteNonQueryAsync(); } await transaction.CommitAsync(); + await FetchFeedItemsAsync(feedModels.Select(x => x.Url).ToArray()); return resultModel; } + + public static async Task FetchFeedItemsAsync(string[]? feedUrls = null) + { + await using SqliteConnection dbc = new SqliteConnection(ConnectionString); + dbc.Open(); + HashSet dbFeeds = new HashSet(); + string query = $"SELECT * FROM {FeedTable}"; + if (feedUrls != null) + { + List? feedUrlsFormatted = feedUrls.Select(s => $"'{s}'").ToList(); + query = $"SELECT * FROM {FeedTable} WHERE url IN(({string.Join(", ", feedUrlsFormatted)}))"; + } + await using SqliteCommand fetchCmd = new SqliteCommand(query, dbc); + await using SqliteDataReader reader = await fetchCmd.ExecuteReaderAsync(); + while (reader.Read()) + { + dbFeeds.Add(await ReaderToFeedModel(reader)); + } + HashSet feedItems = new HashSet(); + foreach (var dbFeed in dbFeeds) + { + GenericSyndicationFeed syndication = new GenericSyndicationFeed(); + syndication.Load(dbFeed.OriginalDocument); + } + //TODO: Rewrite some stuff... + } + public static async Task RemoveFeedAsync(FeedModel feedModel) { bool result = false;