Пример #1
0
        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);
        }
Пример #2
0
        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);
        }