public async Task <List <GameServerStatusStatsDto> > GetGameServerStatusStats(GameServerStatusStatsFilterModel filterModel) { if (filterModel == null) { throw new NullReferenceException(nameof(filterModel)); } var query = new TableQuery <GameServerStatusStatsEntity>().ApplyFilter(filterModel); var results = new List <GameServerStatusStatsDto>(); TableContinuationToken continuationToken = null; do { var queryResult = await _statsTable.ExecuteQuerySegmentedAsync(query, continuationToken); foreach (var entity in queryResult) { var gameServerStatusStatsDto = new GameServerStatusStatsDto { ServerId = Guid.Parse(entity.PartitionKey), GameType = entity.GameType, PlayerCount = entity.PlayerCount, MapName = entity.MapName, Timestamp = entity.Timestamp }; results.Add(gameServerStatusStatsDto); } continuationToken = queryResult.ContinuationToken; } while (continuationToken != null); switch (filterModel.Order) { case GameServerStatusStatsFilterModel.OrderBy.TimestampAsc: results = results.OrderBy(s => s.Timestamp).ToList(); break; case GameServerStatusStatsFilterModel.OrderBy.TimestampDesc: results = results.OrderByDescending(s => s.Timestamp).ToList(); break; } return(results); }
public async Task UpdateEntry(GameServerStatusStatsDto model) { var gameServerStatusStats = new GameServerStatusStatsEntity { PartitionKey = model.ServerId.ToString(), GameType = model.GameType, PlayerCount = model.PlayerCount, MapName = model.MapName }; if (string.IsNullOrWhiteSpace(gameServerStatusStats.RowKey)) { gameServerStatusStats.RowKey = Guid.NewGuid().ToString(); } var operation = TableOperation.InsertOrMerge(gameServerStatusStats); await _statsTable.ExecuteAsync(operation); }