github.com/thiagoyeds/go-cloud@v0.26.0/docstore/gcpfirestore/create_indexes.sh (about)

     1  #!/usr/bin/env bash
     2  # Copyright 2019 The Go Cloud Development Kit Authors
     3  #
     4  # Licensed under the Apache License, Version 2.0 (the "License");
     5  # you may not use this file except in compliance with the License.
     6  # You may obtain a copy of the License at
     7  #
     8  #     https://www.apache.org/licenses/LICENSE-2.0
     9  #
    10  # Unless required by applicable law or agreed to in writing, software
    11  # distributed under the License is distributed on an "AS IS" BASIS,
    12  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  # See the License for the specific language governing permissions and
    14  # limitations under the License.
    15  
    16  # Creates the Firestore indexes needed for tests.
    17  # Takes one argument: the GCP project ID.
    18  #
    19  # If an index already exists, this script will fail. To re-create the index, delete
    20  # it from the UI at https://firebase.corp.google.com/project/$project_id/database/firestore/indexes.
    21  
    22  # https://coderwall.com/p/fkfaqq/safer-bash-scripts-with-set-euxo-pipefail
    23  # Except we want to keep going if there is a failure, and x is too verbose.
    24  set -uo pipefail
    25  
    26  project_id="${1:-}"
    27  if [[ -z "$project_id" ]]; then
    28    echo "usage: create_indexes.sh PROJECT" 1>&2
    29    exit 64
    30  fi
    31  
    32  echo "Creating indexes for $project_id"
    33  echo "UI at https://firebase.corp.google.com/project/$project_id/database/firestore/indexes"
    34  
    35  collection=docstore-test-2
    36  
    37  function create_index() {
    38     gcloud --project "$project_id" beta firestore indexes composite create --collection-group "$collection" \
    39      --field-config field-path=$1,order=$2 --field-config field-path=$3,order=$4
    40  }
    41  
    42  set -x
    43  
    44  create_index Player ascending Score ascending
    45  create_index Game   ascending Score ascending
    46  create_index Player ascending Time  ascending
    47  create_index Game   ascending Player ascending
    48  create_index Game   ascending Player descending