#!/bin/bash

# Update Nextcloud
# Place in /etc/cron.daily and make executable with: chmod +x /etc/cron.daily/nextcloud-update

user=www-data
phpversion=php8.4
path=/var/www/nextcloud
logfile="/var/log/nextcloud-update.log"

ncc() {
  sudo -u "$user" "$phpversion" "$path/occ" "$@"
}

updater() {
  sudo -u "$user" "$phpversion" "$path/updater/updater.phar" "$@"
}

{
  echo "===== $(date): Nextcloud Update Start ====="

  updater --no-backup --no-interaction

  subcommands=(
    "db:add-missing-primary-keys"
    "db:add-missing-indices"
    "db:add-missing-columns"
    "db:convert-filecache-bigint"
    "files:scan-app-data"
    "upgrade"
  )

  for cmd in "${subcommands[@]}"; do
    echo "Running: occ $cmd"
    ncc -n $cmd
  done

  # App Updates
  echo "Updating apps..."
  apps=$(ncc app:list | grep -Po 'Enabled:\s*\K.*' | tr -d ' ' | tr ',' '\n')
  for app in $apps; do
    echo "Updating app: $app"
    ncc app:update "$app"
  done

  echo "===== $(date): Nextcloud Update Finished ====="
} >> "$logfile" 2>&1
