#!/bin/bash
set -e

# ============================================
# Maya Global Backend - GKE Build, Push & Deploy
# Region: asia-southeast1 (Singapore)
# ============================================

REGION="asia-southeast1"
PROJECT_ID="mayaresearchgcp"
REPO_NAME="maya-global-backend"
CLUSTER_NAME="maya-global-backend"
IMAGE_URI="${REGION}-docker.pkg.dev/${PROJECT_ID}/${REPO_NAME}/${REPO_NAME}"
IMAGE_TAG="${1:-latest}"

SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"

echo "============================================"
echo "Maya Global Backend - GKE Deployment"
echo "============================================"
echo "Image:   ${IMAGE_URI}:${IMAGE_TAG}"
echo "Region:  ${REGION}"
echo "Cluster: ${CLUSTER_NAME}"
echo "============================================"

# Step 1: Build Docker image
echo ""
echo "Building Docker image..."
cd "$PROJECT_ROOT"
docker build -t "${IMAGE_URI}:${IMAGE_TAG}" -f deployments/docker/Dockerfile .

# Step 2: Configure Docker for Artifact Registry
echo ""
echo "Configuring Docker for Artifact Registry..."
gcloud auth configure-docker ${REGION}-docker.pkg.dev --quiet

# Step 3: Push to Artifact Registry
echo ""
echo "Pushing image..."
docker push "${IMAGE_URI}:${IMAGE_TAG}"

# Step 4: Ensure correct kubectl context
echo ""
echo "Updating kubeconfig..."
gcloud container clusters get-credentials ${CLUSTER_NAME} --zone ${REGION}-a --project ${PROJECT_ID}

# Step 5: Deploy
echo ""
echo "Deploying to GKE..."
kubectl apply -f "${SCRIPT_DIR}/deployment.yaml"
kubectl apply -f "${SCRIPT_DIR}/managed-cert.yaml"
kubectl apply -f "${SCRIPT_DIR}/ingress.yaml"

# Step 6: Restart rollout to pull new image
echo ""
echo "Restarting deployment rollout..."
kubectl rollout restart deployment/maya-global-backend

echo ""
echo "Waiting for rollout..."
kubectl rollout status deployment/maya-global-backend --timeout=300s

echo ""
echo "============================================"
echo "Deployment complete!"
echo "============================================"
kubectl get pods -l app=maya-global-backend | head -15
echo ""
kubectl get svc maya-global-backend
echo ""
kubectl get hpa maya-global-backend-hpa
