From f6b0c13ce81e4dfce884e78cd7d3a668bdc4ee4e Mon Sep 17 00:00:00 2001 From: Nicolas Constant Date: Sat, 20 Nov 2021 16:03:27 -0500 Subject: [PATCH] prioritize newly created accounts in sync + test --- .../TwitterUserPostgresDal.cs | 2 +- .../TwitterUserPostgresDalTests.cs | 34 +++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/src/DataAccessLayers/BirdsiteLive.DAL.Postgres/DataAccessLayers/TwitterUserPostgresDal.cs b/src/DataAccessLayers/BirdsiteLive.DAL.Postgres/DataAccessLayers/TwitterUserPostgresDal.cs index 48b8455..11214d4 100644 --- a/src/DataAccessLayers/BirdsiteLive.DAL.Postgres/DataAccessLayers/TwitterUserPostgresDal.cs +++ b/src/DataAccessLayers/BirdsiteLive.DAL.Postgres/DataAccessLayers/TwitterUserPostgresDal.cs @@ -88,7 +88,7 @@ namespace BirdsiteLive.DAL.Postgres.DataAccessLayers public async Task GetAllTwitterUsersAsync(int maxNumber) { - var query = $"SELECT * FROM {_settings.TwitterUserTableName} ORDER BY lastSync ASC LIMIT @maxNumber"; + var query = $"SELECT * FROM {_settings.TwitterUserTableName} ORDER BY lastSync ASC NULLS FIRST LIMIT @maxNumber"; using (var dbConnection = Connection) { diff --git a/src/Tests/BirdsiteLive.DAL.Postgres.Tests/DataAccessLayers/TwitterUserPostgresDalTests.cs b/src/Tests/BirdsiteLive.DAL.Postgres.Tests/DataAccessLayers/TwitterUserPostgresDalTests.cs index 68a060f..0b007b6 100644 --- a/src/Tests/BirdsiteLive.DAL.Postgres.Tests/DataAccessLayers/TwitterUserPostgresDalTests.cs +++ b/src/Tests/BirdsiteLive.DAL.Postgres.Tests/DataAccessLayers/TwitterUserPostgresDalTests.cs @@ -1,5 +1,6 @@ using System; using System.Diagnostics; +using System.Linq; using System.Threading.Tasks; using System.Xml; using BirdsiteLive.DAL.Postgres.DataAccessLayers; @@ -231,6 +232,39 @@ namespace BirdsiteLive.DAL.Postgres.Tests.DataAccessLayers Assert.IsFalse(result[0].LastTweetSynchronizedForAllFollowersId == default); } + [TestMethod] + public async Task GetAllTwitterUsers_Top_NotInit() + { + // Create accounts + var dal = new TwitterUserPostgresDal(_settings); + for (var i = 0; i < 1000; i++) + { + var acct = $"myid{i}"; + var lastTweetId = i+10; + + await dal.CreateTwitterUserAsync(acct, lastTweetId); + } + + // Update accounts + var now = DateTime.UtcNow; + var allUsers = await dal.GetAllTwitterUsersAsync(); + foreach (var acc in allUsers) + { + var lastSync = now.AddDays(acc.LastTweetPostedId); + acc.LastSync = lastSync; + await dal.UpdateTwitterUserAsync(acc); + } + + // Create a not init account + await dal.CreateTwitterUserAsync("not_init", -1); + + var result = await dal.GetAllTwitterUsersAsync(10); + + Assert.IsTrue(result.Any(x => x.Acct == "myid0")); + Assert.IsTrue(result.Any(x => x.Acct == "myid8")); + Assert.IsTrue(result.Any(x => x.Acct == "not_init")); + } + [TestMethod] public async Task GetAllTwitterUsers_Limited() {