From 8146b6ea5a0d12874fdba93c7c4dc9354f186cd9 Mon Sep 17 00:00:00 2001 From: Nicolas Constant Date: Fri, 22 Jan 2021 20:18:42 -0500 Subject: [PATCH] added LastSync to TwitterUser (wip) --- .../DbInitializerPostgresDal.cs | 41 ++++++++++++------- .../Models/SyncTwitterUser.cs | 6 ++- .../DbInitializerPostgresDalTests.cs | 2 +- 3 files changed, 33 insertions(+), 16 deletions(-) diff --git a/src/DataAccessLayers/BirdsiteLive.DAL.Postgres/DataAccessLayers/DbInitializerPostgresDal.cs b/src/DataAccessLayers/BirdsiteLive.DAL.Postgres/DataAccessLayers/DbInitializerPostgresDal.cs index c6d5c81..a50e05b 100644 --- a/src/DataAccessLayers/BirdsiteLive.DAL.Postgres/DataAccessLayers/DbInitializerPostgresDal.cs +++ b/src/DataAccessLayers/BirdsiteLive.DAL.Postgres/DataAccessLayers/DbInitializerPostgresDal.cs @@ -23,7 +23,7 @@ namespace BirdsiteLive.DAL.Postgres.DataAccessLayers public class DbInitializerPostgresDal : PostgresBase, IDbInitializerDal { private readonly PostgresTools _tools; - private readonly Version _currentVersion = new Version(1,0); + private readonly Version _currentVersion = new Version(2, 0); private const string DbVersionType = "db-version"; #region Ctor @@ -32,7 +32,7 @@ namespace BirdsiteLive.DAL.Postgres.DataAccessLayers _tools = tools; } #endregion - + public async Task GetCurrentDbVersionAsync() { var query = $"SELECT * FROM {_settings.DbVersionTableName} WHERE type = @type"; @@ -65,17 +65,7 @@ namespace BirdsiteLive.DAL.Postgres.DataAccessLayers return _currentVersion; } - public Tuple[] GetMigrationPatterns() - { - return new Tuple[0]; - } - - public Task MigrateDbAsync(Version from, Version to) - { - throw new NotImplementedException(); - } - - public async Task InitDbAsync() + public async Task InitDbAsync() { // Create version table var createVersion = $@"CREATE TABLE {_settings.DbVersionTableName} @@ -124,14 +114,37 @@ namespace BirdsiteLive.DAL.Postgres.DataAccessLayers await _tools.ExecuteRequestAsync(createCachedTweets); // Insert version to db + var firstVersion = new Version(1, 0); using (var dbConnection = Connection) { dbConnection.Open(); await dbConnection.ExecuteAsync( $"INSERT INTO {_settings.DbVersionTableName} (type,major,minor) VALUES(@type,@major,@minor)", - new { type = DbVersionType, major = _currentVersion.Major, minor = _currentVersion.Minor }); + new { type = DbVersionType, major = firstVersion.Major, minor = firstVersion.Minor }); } + + return firstVersion; + } + + public Tuple[] GetMigrationPatterns() + { + return new[] + { + new Tuple(new Version(1,0), new Version(2,0)) + }; + } + + public async Task MigrateDbAsync(Version from, Version to) + { + if (from == new Version(1, 0) && to == new Version(2, 0)) + { + var addLastSync = $@"ALTER TABLE {_settings.TwitterUserTableName} ADD lastSync TIMESTAMP (2) WITHOUT TIME ZONE"; + await _tools.ExecuteRequestAsync(addLastSync); + return new Version(2, 0); + } + + throw new NotImplementedException(); } public async Task DeleteAllAsync() diff --git a/src/DataAccessLayers/BirdsiteLive.DAL/Models/SyncTwitterUser.cs b/src/DataAccessLayers/BirdsiteLive.DAL/Models/SyncTwitterUser.cs index 8061fc8..59be0a5 100644 --- a/src/DataAccessLayers/BirdsiteLive.DAL/Models/SyncTwitterUser.cs +++ b/src/DataAccessLayers/BirdsiteLive.DAL/Models/SyncTwitterUser.cs @@ -1,4 +1,6 @@ -namespace BirdsiteLive.DAL.Models +using System; + +namespace BirdsiteLive.DAL.Models { public class SyncTwitterUser { @@ -7,5 +9,7 @@ public long LastTweetPostedId { get; set; } public long LastTweetSynchronizedForAllFollowersId { get; set; } + + public DateTime LastSync { get; set; } } } \ No newline at end of file diff --git a/src/Tests/BirdsiteLive.DAL.Postgres.Tests/DataAccessLayers/DbInitializerPostgresDalTests.cs b/src/Tests/BirdsiteLive.DAL.Postgres.Tests/DataAccessLayers/DbInitializerPostgresDalTests.cs index 7fc5383..9ede041 100644 --- a/src/Tests/BirdsiteLive.DAL.Postgres.Tests/DataAccessLayers/DbInitializerPostgresDalTests.cs +++ b/src/Tests/BirdsiteLive.DAL.Postgres.Tests/DataAccessLayers/DbInitializerPostgresDalTests.cs @@ -35,11 +35,11 @@ namespace BirdsiteLive.DAL.Postgres.Tests.DataAccessLayers [TestMethod] public async Task InitDbAsync() { + var mandatory = new Version(1, 0); var dal = new DbInitializerPostgresDal(_settings, _tools); await dal.InitDbAsync(); var current = await dal.GetCurrentDbVersionAsync(); - var mandatory = dal.GetMandatoryDbVersion(); Assert.IsNotNull(current); Assert.AreEqual(mandatory.Minor, current.Minor); Assert.AreEqual(mandatory.Major, current.Major);