private async Task UpdateTeamRankings(
            int teamId,
            int score,
            CancellationToken cancellationToken = default)
        {
            try
            {
                Entities.Rank rank = await _context.Ranks
                                     .FirstOrDefaultAsync(r => r.TeamId == teamId);

                if (rank == null)
                {
                    throw new ArgumentException($"Invalid team Id { teamId }.");
                }

                rank.Points += score;

                await _context.SaveChangesAsync(cancellationToken);
            }
            catch (ServiceException)
            {
                throw;
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Erorr deleting Match.");
                throw Conversion.ConvertException(ex);
            }
        }
        public async Task <int> CreateTeamAsync(
            CreateTeamRequest request,
            CancellationToken cancellationToken = default)
        {
            try
            {
                if (request == null)
                {
                    throw new ArgumentNullException(nameof(request));
                }

                if (string.IsNullOrEmpty(request.Name))
                {
                    throw new ArgumentException();
                }

                bool isNameTaken = await _context.Teams.AnyAsync(t => t.Name == request.Name);

                if (isNameTaken)
                {
                    throw new ArgumentException("There is already team with the same name.");
                }

                var teamEntity = new Entities.Team
                {
                    Name = request.Name
                };

                var rankEntity = new Entities.Rank
                {
                    // Starting points
                    Points = 0,
                };

                teamEntity.Rank = rankEntity;

                _context.Teams.Add(teamEntity);

                await _context.SaveChangesAsync(cancellationToken);

                return(teamEntity.Id);
            }
            catch (ServiceException)
            {
                throw;
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Error creating team.");
                throw Conversion.ConvertException(ex);
            }
        }