#!/bin/bash
# Скрипт автоматического обновления сайта
set -e # Останавливаемся при любой ошибке

PROJECT_DIR="/var/www/radionica3d"

echo "==== DEPLOY STARTING: $(date) ===="
cd $PROJECT_DIR

# 1. Забираем код
echo "git pull..."
# Force clean generated files and lockfile to avoid conflicts
git checkout package-lock.json src/locales/translations.admin.json src/locales/translations.user.json
git pull origin master

# 2. Обновляем зависимости
echo "installing dependencies..."
npm install --legacy-peer-deps

# 3. Синхронизируем переводы
echo "generating translations..."
npm run i18n:generate

# 4. Собираем фронтенд
echo "building frontend..."
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
NEW_DIST_DIR="dist_$TIMESTAMP"

# Строим сразу в новую папку через переменную окружения
VITE_OUT_DIR=$NEW_DIST_DIR npm run build

# Обработка перехода от папки к симлинку (на случай если 'dist' еще папка)
if [ -d "dist" ] && [ ! -L "dist" ]; then
    echo "Found legacy dist directory, backing it up..."
    mv dist dist_legacy_backup
fi

# Атомарно переключаем симлинк 'dist' на новую папку
ln -sfn $NEW_DIST_DIR dist_tmp
mv -T dist_tmp dist

# Удаляем старые сборки (оставляем 5 последних)
ls -dt dist_* | grep -E '^dist_[0-9]{8}_[0-9]{6}$' | tail -n +6 | xargs -r rm -rf || true

# 5. Обновляем бэкенд
echo "updating backend..."
./backend/venv/bin/pip install -r backend/requirements.txt
echo "running database migrations..."
mkdir -p backups
mysqldump --no-tablespaces -h ${DB_HOST:-localhost} -u ${DB_USER:-radionica} -p${DB_PASS:-NY9B9VLifDC9ehZ} ${DB_NAME:-radionica3d} > backups/db_pre_migration_$(date +%Y%m%d_%H%M%S).sql
./backend/venv/bin/python3 backend/run_migrations.py

# 6. Перезапуск
echo "restarting services..."
sudo chown -R www-data:www-data $PROJECT_DIR
sudo systemctl restart radionica-backend
cp /var/www/radionica3d/nginx.conf /etc/nginx/sites-available/radionica3d
sudo systemctl reload nginx

echo "==== DEPLOY FINISHED: $(date) ===="
