Setting proper query for multiple custom admin filters

This is my final working piece of code:

function  wpr_manager_filter($query) {
  global $pagenow;
  global $typenow;

  $current_page = isset( $_GET['post_type'] ) ? $_GET['post_type'] : '';

  if ( is_admin()
    && 'properties' == $typenow
    && 'edit.php' == $pagenow
  )
  {
    $queryParamsCounter = 0;
    if (isset( $_GET['city-filter'] ) && $_GET['city-filter'] != '-1')
    {
      $cityId = (int)$_GET['city-filter'];
      $queryParamsCounter++;
    }
    if (isset( $_GET['visibility-filter'] ) && $_GET['visibility-filter'] != '-1')
    {
      $queryParamsCounter++;
      $visibility = (int)$_GET['visibility-filter'];
    }

    $meta_query = array();

    if ($queryParamsCounter > 1) {
      $meta_query['relation'] = 'AND';
    }

    if (isset($cityId)) {
      $meta_query[] =       array(
        'key'     => 'city',
        'value'   => $cityId,
        'compare' => '=',
        'type'    => 'NUMERIC',
      );
    }
    if (isset($visibility)) {
      $meta_query[] = array(
        'key'     => 'visibility',
        'value'   => $visibility,
        'compare' => '=',
        'type'    => 'NUMERIC',
      );
    }

    $query->set( 'meta_query', $meta_query);
  }
}

May someone else find it useful in the future.