# Copyright 2017 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
echo "Creating App Engine app"
gcloud app create --region "us-central"

echo "Making bucket: gs://$DEVSHELL_PROJECT_ID-media"
gsutil mb gs://$DEVSHELL_PROJECT_ID-media

echo "Exporting GCLOUD_PROJECT and GCLOUD_BUCKET"
export GCLOUD_PROJECT=$DEVSHELL_PROJECT_ID
export GCLOUD_BUCKET=$DEVSHELL_PROJECT_ID-media

echo "Installing dependencies"
mvn clean install

echo "Creating Datastore entities"
mvn exec:java@create-entities

echo "Creating Cloud Pub/Sub topic"
gcloud pubsub topics create feedback

echo "Creating Cloud Spanner Instance, Database, and Table"
gcloud spanner instances create quiz-instance --config=regional-us-central1 --description="Quiz instance" --nodes=1
gcloud spanner databases create quiz-database --instance quiz-instance --ddl "CREATE TABLE Feedback ( feedbackId STRING(100) NOT NULL, email STRING(100), quiz STRING(20), feedback STRING(MAX), rating INT64, score FLOAT64, timestamp INT64 ) PRIMARY KEY (feedbackId);"

echo "Enabling Cloud Functions API"
gcloud services enable cloudfunctions.googleapis.com

echo "Enabling Cloud Build API"
gcloud services enable cloudbuild.googleapis.com

echo "Enabling App Engine API"
gcloud services enable appengine.googleapis.com

echo "Creating Cloud Function"
gcloud functions deploy process-feedback --runtime nodejs14 --allow-unauthenticated --trigger-topic feedback --source ./function --stage-bucket $GCLOUD_BUCKET --entry-point subscribe

echo "Deploying to App Engine"
sed -i -e "s/\[GCLOUD_PROJECT\]/$DEVSHELL_PROJECT_ID/g" ./src/main/appengine/app.yaml
mvn clean compile appengine:deploy

echo "Project ID: $DEVSHELL_PROJECT_ID"