#!/bin/bash

set -e # Exit on any error

SERVER="192.168.1.3" # Change this to your server
REMOTE_PATH="/srv/zehnerkarten"
LOCAL_PATH="$(dirname "$0")/.."

echo "🚀 Deploying Zehnerkarten to $SERVER..."

# Deploy code with proper exclusions
echo "📦 Syncing code..."
rsync -av \
  --exclude='.git' \
  --exclude='log/*' \
  --exclude='tmp/*' \
  --exclude='.gems' \
  --exclude='.ruby-lsp' \
  --exclude='.claude' \
  --exclude='storage/development.sqlite3' \
  --exclude='storage/test.sqlite3' \
  --exclude='db/*.sqlite3' \
  --exclude='db/tenant_*_development.sqlite3' \
  --exclude='db/tenant_*_test.sqlite3' \
  --exclude='shell.nix' \
  --exclude='.envrc' \
  --exclude='.dev_slot.sh' \
  --exclude='zehnerkarten_old_for_reference' \
  --exclude='.kamal' \
  --exclude='Dockerfile' \
  --exclude='.dockerignore' \
  --exclude='.github' \
  --exclude='test/' \
  "$LOCAL_PATH/" "$SERVER:/tmp/zehnerkarten-deploy/"

# Fix ownership and move to final location
echo "🔧 Setting up files on server..."
ssh "$SERVER" "
  sudo rm -rf $REMOTE_PATH/* || true
  sudo cp -r /tmp/zehnerkarten-deploy/* $REMOTE_PATH/
  sudo chown -R zehnerkarten:zehnerkarten $REMOTE_PATH
  sudo rm -rf /tmp/zehnerkarten-deploy
"

# Install dependencies and setup database
echo "💎 Installing gems and setting up database..."
ssh "$SERVER" "
  cd $REMOTE_PATH
  sudo -u zehnerkarten bundle install --deployment --without development test
  sudo -u zehnerkarten RAILS_ENV=production bundle exec rails db:migrate 2>/dev/null || sudo -u zehnerkarten RAILS_ENV=production bundle exec rails db:setup
"

# Restart service
echo "🔄 Restarting service..."
ssh "$SERVER" "sudo systemctl restart zehnerkarten"

# Check status
echo "✅ Checking service status..."
ssh "$SERVER" "sudo systemctl status zehnerkarten --no-pager -l"

echo "🎉 Deployment complete! Check https://widgets.storel.xyz"

