public async Task UpdateCachedRecordAsync(MapRecordCache newCache) { const string query = @"INSERT INTO `worldRecordCache` VALUES (@MapId, @ClassId, @ZoneType, @ZoneId, @CurrentRecordDuration, @OldRecordDuration) ON DUPLICATE KEY UPDATE `currentWrDuration`=@CurrentRecordDuration, `oldWrDuration`=@OldRecordDuration"; var param = new { newCache.MapId, newCache.ClassId, newCache.ZoneType, newCache.ZoneId, CurrentRecordDuration = newCache.CurrentWrDuration, OldRecordDuration = newCache.OldWrDuration }; await ExecuteAsync(query, param).ConfigureAwait(false); }
public async Task <MapRecordCache> UpdateCachedWrDataAsync(MapRecordCache?cached, CachedTempusRecordBase map) { if (map is null) { throw new ArgumentNullException(nameof(map)); } var tempNewCache = cached; // Check for no data if (cached == null || !cached.CurrentWrDuration.HasValue && !cached.OldWrDuration.HasValue) { // No data tempNewCache = new MapRecordCache { MapId = map.MapInfo.Id, CurrentWrDuration = map.RecordInfo.Duration, ClassId = map.RecordInfo.Class, ZoneType = map.ZoneInfo.Type, OldWrDuration = null, ZoneId = map.ZoneInfo.Zoneindex }; await _mySql.UpdateCachedRecordAsync(tempNewCache).ConfigureAwait(false); } // Check if the cached wr duration is slower to the new record else if (cached.CurrentWrDuration.HasValue && cached.CurrentWrDuration.Value.SlowerThan(map.RecordInfo.Duration)) { tempNewCache = new MapRecordCache { MapId = map.MapInfo.Id, CurrentWrDuration = map.RecordInfo.Duration, OldWrDuration = cached.CurrentWrDuration, ClassId = map.RecordInfo.Class, ZoneType = map.ZoneInfo.Type, ZoneId = map.ZoneInfo.Zoneindex }; await _mySql.UpdateCachedRecordAsync(tempNewCache).ConfigureAwait(false); } return(tempNewCache); }