save last sync
This commit is contained in:
parent
8146b6ea5a
commit
b4c01ad326
8 changed files with 25 additions and 18 deletions
|
@ -24,7 +24,7 @@ namespace BirdsiteLive.Services
|
||||||
|
|
||||||
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
||||||
{
|
{
|
||||||
await _databaseInitializer.DbInitAsync();
|
await _databaseInitializer.InitAndMigrateDbAsync();
|
||||||
await _statusPublicationPipeline.ExecuteAsync(stoppingToken);
|
await _statusPublicationPipeline.ExecuteAsync(stoppingToken);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,19 +75,20 @@ namespace BirdsiteLive.DAL.Postgres.DataAccessLayers
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task UpdateTwitterUserAsync(int id, long lastTweetPostedId, long lastTweetSynchronizedForAllFollowersId)
|
public async Task UpdateTwitterUserAsync(int id, long lastTweetPostedId, long lastTweetSynchronizedForAllFollowersId, DateTime lastSync)
|
||||||
{
|
{
|
||||||
if(id == default) throw new ArgumentException("id");
|
if(id == default) throw new ArgumentException("id");
|
||||||
if(lastTweetPostedId == default) throw new ArgumentException("lastTweetPostedId");
|
if(lastTweetPostedId == default) throw new ArgumentException("lastTweetPostedId");
|
||||||
if(lastTweetSynchronizedForAllFollowersId == default) throw new ArgumentException("lastTweetSynchronizedForAllFollowersId");
|
if(lastTweetSynchronizedForAllFollowersId == default) throw new ArgumentException("lastTweetSynchronizedForAllFollowersId");
|
||||||
|
if(lastSync == default) throw new ArgumentException("lastSync");
|
||||||
var query = $"UPDATE {_settings.TwitterUserTableName} SET lastTweetPostedId = @lastTweetPostedId, lastTweetSynchronizedForAllFollowersId = @lastTweetSynchronizedForAllFollowersId WHERE id = @id";
|
|
||||||
|
var query = $"UPDATE {_settings.TwitterUserTableName} SET lastTweetPostedId = @lastTweetPostedId, lastTweetSynchronizedForAllFollowersId = @lastTweetSynchronizedForAllFollowersId, lastSync = @lastSync WHERE id = @id";
|
||||||
|
|
||||||
using (var dbConnection = Connection)
|
using (var dbConnection = Connection)
|
||||||
{
|
{
|
||||||
dbConnection.Open();
|
dbConnection.Open();
|
||||||
|
|
||||||
await dbConnection.QueryAsync(query, new { id, lastTweetPostedId, lastTweetSynchronizedForAllFollowersId });
|
await dbConnection.QueryAsync(query, new { id, lastTweetPostedId, lastTweetSynchronizedForAllFollowersId, lastSync = lastSync.ToUniversalTime() });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
using System.Threading.Tasks;
|
using System;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using BirdsiteLive.DAL.Models;
|
using BirdsiteLive.DAL.Models;
|
||||||
|
|
||||||
namespace BirdsiteLive.DAL.Contracts
|
namespace BirdsiteLive.DAL.Contracts
|
||||||
|
@ -8,7 +9,7 @@ namespace BirdsiteLive.DAL.Contracts
|
||||||
Task CreateTwitterUserAsync(string acct, long lastTweetPostedId);
|
Task CreateTwitterUserAsync(string acct, long lastTweetPostedId);
|
||||||
Task<SyncTwitterUser> GetTwitterUserAsync(string acct);
|
Task<SyncTwitterUser> GetTwitterUserAsync(string acct);
|
||||||
Task<SyncTwitterUser[]> GetAllTwitterUsersAsync();
|
Task<SyncTwitterUser[]> GetAllTwitterUsersAsync();
|
||||||
Task UpdateTwitterUserAsync(int id, long lastTweetPostedId, long lastTweetSynchronizedForAllFollowersId);
|
Task UpdateTwitterUserAsync(int id, long lastTweetPostedId, long lastTweetSynchronizedForAllFollowersId, DateTime lastSync);
|
||||||
Task DeleteTwitterUserAsync(string acct);
|
Task DeleteTwitterUserAsync(string acct);
|
||||||
Task<int> GetTwitterUsersCountAsync();
|
Task<int> GetTwitterUsersCountAsync();
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@ namespace BirdsiteLive.DAL
|
||||||
{
|
{
|
||||||
public interface IDatabaseInitializer
|
public interface IDatabaseInitializer
|
||||||
{
|
{
|
||||||
Task DbInitAsync();
|
Task InitAndMigrateDbAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
public class DatabaseInitializer : IDatabaseInitializer
|
public class DatabaseInitializer : IDatabaseInitializer
|
||||||
|
@ -21,7 +21,7 @@ namespace BirdsiteLive.DAL
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
public async Task DbInitAsync()
|
public async Task InitAndMigrateDbAsync()
|
||||||
{
|
{
|
||||||
var currentVersion = await _dbInitializerDal.GetCurrentDbVersionAsync();
|
var currentVersion = await _dbInitializerDal.GetCurrentDbVersionAsync();
|
||||||
var mandatoryVersion = _dbInitializerDal.GetMandatoryDbVersion();
|
var mandatoryVersion = _dbInitializerDal.GetMandatoryDbVersion();
|
||||||
|
|
|
@ -14,7 +14,8 @@ namespace BirdsiteLive.DAL.Postgres.Tests.DataAccessLayers
|
||||||
public async Task TestInit()
|
public async Task TestInit()
|
||||||
{
|
{
|
||||||
var dal = new DbInitializerPostgresDal(_settings, _tools);
|
var dal = new DbInitializerPostgresDal(_settings, _tools);
|
||||||
await dal.InitDbAsync();
|
var init = new DatabaseInitializer(dal);
|
||||||
|
await init.InitAndMigrateDbAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestCleanup]
|
[TestCleanup]
|
||||||
|
|
|
@ -16,7 +16,8 @@ namespace BirdsiteLive.DAL.Postgres.Tests.DataAccessLayers
|
||||||
public async Task TestInit()
|
public async Task TestInit()
|
||||||
{
|
{
|
||||||
var dal = new DbInitializerPostgresDal(_settings, _tools);
|
var dal = new DbInitializerPostgresDal(_settings, _tools);
|
||||||
await dal.InitDbAsync();
|
var init = new DatabaseInitializer(dal);
|
||||||
|
await init.InitAndMigrateDbAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestCleanup]
|
[TestCleanup]
|
||||||
|
|
|
@ -14,7 +14,8 @@ namespace BirdsiteLive.DAL.Postgres.Tests.DataAccessLayers
|
||||||
public async Task TestInit()
|
public async Task TestInit()
|
||||||
{
|
{
|
||||||
var dal = new DbInitializerPostgresDal(_settings, _tools);
|
var dal = new DbInitializerPostgresDal(_settings, _tools);
|
||||||
await dal.InitDbAsync();
|
var init = new DatabaseInitializer(dal);
|
||||||
|
await init.InitAndMigrateDbAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestCleanup]
|
[TestCleanup]
|
||||||
|
@ -70,13 +71,15 @@ namespace BirdsiteLive.DAL.Postgres.Tests.DataAccessLayers
|
||||||
|
|
||||||
var updatedLastTweetId = 1600L;
|
var updatedLastTweetId = 1600L;
|
||||||
var updatedLastSyncId = 1550L;
|
var updatedLastSyncId = 1550L;
|
||||||
await dal.UpdateTwitterUserAsync(result.Id, updatedLastTweetId, updatedLastSyncId);
|
var now = DateTime.Now;
|
||||||
|
await dal.UpdateTwitterUserAsync(result.Id, updatedLastTweetId, updatedLastSyncId, now);
|
||||||
|
|
||||||
result = await dal.GetTwitterUserAsync(acct);
|
result = await dal.GetTwitterUserAsync(acct);
|
||||||
|
|
||||||
Assert.AreEqual(acct, result.Acct);
|
Assert.AreEqual(acct, result.Acct);
|
||||||
Assert.AreEqual(updatedLastTweetId, result.LastTweetPostedId);
|
Assert.AreEqual(updatedLastTweetId, result.LastTweetPostedId);
|
||||||
Assert.AreEqual(updatedLastSyncId, result.LastTweetSynchronizedForAllFollowersId);
|
Assert.AreEqual(updatedLastSyncId, result.LastTweetSynchronizedForAllFollowersId);
|
||||||
|
Assert.IsTrue(Math.Abs((now.ToUniversalTime() - result.LastSync).Milliseconds) < 100);
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
|
|
|
@ -31,7 +31,7 @@ namespace BirdsiteLive.DAL.Tests
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
var dbInitializer = new DatabaseInitializer(dbInitializerDal.Object);
|
var dbInitializer = new DatabaseInitializer(dbInitializerDal.Object);
|
||||||
await dbInitializer.DbInitAsync();
|
await dbInitializer.InitAndMigrateDbAsync();
|
||||||
|
|
||||||
#region Validations
|
#region Validations
|
||||||
dbInitializerDal.VerifyAll();
|
dbInitializerDal.VerifyAll();
|
||||||
|
@ -69,7 +69,7 @@ namespace BirdsiteLive.DAL.Tests
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
var dbInitializer = new DatabaseInitializer(dbInitializerDal.Object);
|
var dbInitializer = new DatabaseInitializer(dbInitializerDal.Object);
|
||||||
await dbInitializer.DbInitAsync();
|
await dbInitializer.InitAndMigrateDbAsync();
|
||||||
|
|
||||||
#region Validations
|
#region Validations
|
||||||
dbInitializerDal.VerifyAll();
|
dbInitializerDal.VerifyAll();
|
||||||
|
@ -122,7 +122,7 @@ namespace BirdsiteLive.DAL.Tests
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
var dbInitializer = new DatabaseInitializer(dbInitializerDal.Object);
|
var dbInitializer = new DatabaseInitializer(dbInitializerDal.Object);
|
||||||
await dbInitializer.DbInitAsync();
|
await dbInitializer.InitAndMigrateDbAsync();
|
||||||
|
|
||||||
#region Validations
|
#region Validations
|
||||||
dbInitializerDal.VerifyAll();
|
dbInitializerDal.VerifyAll();
|
||||||
|
@ -171,7 +171,7 @@ namespace BirdsiteLive.DAL.Tests
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
var dbInitializer = new DatabaseInitializer(dbInitializerDal.Object);
|
var dbInitializer = new DatabaseInitializer(dbInitializerDal.Object);
|
||||||
await dbInitializer.DbInitAsync();
|
await dbInitializer.InitAndMigrateDbAsync();
|
||||||
|
|
||||||
#region Validations
|
#region Validations
|
||||||
dbInitializerDal.VerifyAll();
|
dbInitializerDal.VerifyAll();
|
||||||
|
@ -227,7 +227,7 @@ namespace BirdsiteLive.DAL.Tests
|
||||||
var dbInitializer = new DatabaseInitializer(dbInitializerDal.Object);
|
var dbInitializer = new DatabaseInitializer(dbInitializerDal.Object);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await dbInitializer.DbInitAsync();
|
await dbInitializer.InitAndMigrateDbAsync();
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Reference in a new issue