#!/usr/bin/env bash
set -euo pipefail

APP_USER="${APP_USER:-skola}"
APP_DIR="${APP_DIR:-/opt/skola/current}"
BRANCH="${BRANCH:-main}"

if [[ $EUID -ne 0 ]]; then
  echo "Run this script with sudo: sudo bash deploy/ec2/deploy.sh"
  exit 1
fi

if [[ ! -d "$APP_DIR/.git" ]]; then
  echo "$APP_DIR is not a git repository. Clone the Bitbucket repo there first."
  exit 1
fi

echo "Pulling $BRANCH in $APP_DIR..."
sudo -u "$APP_USER" git -C "$APP_DIR" fetch --all --prune
sudo -u "$APP_USER" git -C "$APP_DIR" checkout "$BRANCH"
sudo -u "$APP_USER" git -C "$APP_DIR" pull --ff-only origin "$BRANCH"

echo "Installing dependencies and building API..."
sudo -u "$APP_USER" npm --prefix "$APP_DIR" ci
sudo -u "$APP_USER" npm --prefix "$APP_DIR" run build:api

echo "Applying database schema..."
sudo -u "$APP_USER" npm --prefix "$APP_DIR" run db:setup

echo "Restarting Skola API..."
systemctl restart skola-api
systemctl reload nginx

echo "Checking health..."
curl --fail --silent --show-error http://127.0.0.1:4000/health
echo
echo "Deploy complete."
