@Override
  public GameRoom update(Long id, GameRoomDto.Update updateDto) {
    final GameRoom gameRoom = getById(id);

    if (updateDto.getName() != null && !updateDto.getName().isEmpty()) {
      gameRoom.setName(updateDto.getName());
    }

    if (updateDto.getOwner() != null) {
      gameRoom.setOwner(updateDto.getOwner());
    }

    if (updateDto.getPlayers() != null) {
      gameRoom.getPlayers().clear();
      gameRoom.setPlayers(updateDto.getPlayers());
    }

    if (updateDto.getSetting() != null) {
      gameRoom.setSetting(updateDto.getSetting());
    }

    if (updateDto.getGameCount() != null) {
      updateDto.setGameCount(updateDto.getGameCount());
    }

    if (updateDto.getPlayerRankMap() != null) {
      gameRoom.getPlayerRankMap().clear();
      gameRoom.setPlayerRankMap(updateDto.getPlayerRankMap());
    }

    gameRoom.setUpdated(new Date());

    return update(gameRoom);
  }