made stats more efficient

This commit is contained in:
Vincent Cloutier 2023-04-02 11:29:14 -04:00
parent 000214043c
commit f3ea6b58a7

View file

@ -15,7 +15,7 @@ namespace BirdsiteLive.Services
private readonly ITwitterUserDal _twitterUserDal; private readonly ITwitterUserDal _twitterUserDal;
private readonly IFollowersDal _followersDal; private readonly IFollowersDal _followersDal;
private static CachedStatistics _cachedStatistics; private static Task<CachedStatistics> _cachedStatistics;
private readonly InstanceSettings _instanceSettings; private readonly InstanceSettings _instanceSettings;
#region Ctor #region Ctor
@ -24,28 +24,36 @@ namespace BirdsiteLive.Services
_twitterUserDal = twitterUserDal; _twitterUserDal = twitterUserDal;
_instanceSettings = instanceSettings; _instanceSettings = instanceSettings;
_followersDal = followersDal; _followersDal = followersDal;
_cachedStatistics = CreateStats();
} }
#endregion #endregion
public async Task<CachedStatistics> GetStatisticsAsync() public async Task<CachedStatistics> GetStatisticsAsync()
{ {
if (_cachedStatistics == null || var stats = await _cachedStatistics;
(DateTime.UtcNow - _cachedStatistics.RefreshedTime).TotalMinutes > 15) if ((DateTime.UtcNow - stats.RefreshedTime).TotalMinutes > 5)
{
_cachedStatistics = CreateStats();
}
return stats;
}
private async Task<CachedStatistics> CreateStats()
{ {
var twitterUserCount = await _twitterUserDal.GetTwitterUsersCountAsync(); var twitterUserCount = await _twitterUserDal.GetTwitterUsersCountAsync();
var twitterSyncLag = await _twitterUserDal.GetTwitterSyncLag(); var twitterSyncLag = await _twitterUserDal.GetTwitterSyncLag();
var fediverseUsers = await _followersDal.GetFollowersCountAsync(); var fediverseUsers = await _followersDal.GetFollowersCountAsync();
_cachedStatistics = new CachedStatistics var stats = new CachedStatistics
{ {
RefreshedTime = DateTime.UtcNow, RefreshedTime = DateTime.UtcNow,
SyncLag = twitterSyncLag, SyncLag = twitterSyncLag,
TwitterUsers = twitterUserCount, TwitterUsers = twitterUserCount,
FediverseUsers = fediverseUsers FediverseUsers = fediverseUsers
}; };
}
return _cachedStatistics; return stats;
} }
} }