diff --git a/fundtracker/fundtracker-backup.sh b/fundtracker/fundtracker-backup.sh index 316306f..f182d25 100755 --- a/fundtracker/fundtracker-backup.sh +++ b/fundtracker/fundtracker-backup.sh @@ -29,7 +29,7 @@ # OMV -> System -> Scheduled Jobs # # Backup destination: /export/kingdezignsnas-16/Public/07 - Projects/NAS16/fundtracker -# Script location: /usr/scripts/fundtracker-backup.sh +# Script location: /usr/scripts/fundtracker/fundtracker-backup.sh # ============================================================================= set -uo pipefail @@ -65,12 +65,14 @@ DATE=$(date +%Y-%m-%d) TIMESTAMP=$(date +%Y-%m-%d_%H-%M-%S) REPORT_TIME=$(date "+%Y-%m-%d %H:%M:%S") -ARCHIVE_NAME="fundtracker-backup-${TIMESTAMP}.tar.gz" - TMP_DIR="${TMP_BASE}/fundtracker-${TIMESTAMP}" LOG_FILE="${BACKUP_ROOT}/backup.log" +# Variable placeholder for version (populated dynamically during run) +SITE_VERSION="unknown" +ARCHIVE_NAME="fundtracker-backup-${TIMESTAMP}.tar.gz" + # ----------------------------------------------------------------------------- # STATUS TRACKING # ----------------------------------------------------------------------------- @@ -146,7 +148,6 @@ log_section "FundTracker Backup Starting" ARCHIVE_SIZE="N/A" BACKUP_COUNT=0 -FINAL_ARCHIVE="${BACKUP_ROOT}/${ARCHIVE_NAME}" # ----------------------------------------------------------------------------- # PRE-FLIGHT CHECK 1 — NAS16 STORAGE @@ -251,9 +252,41 @@ fi if [ "$OVERALL_STATUS" = "FAILED" ]; then log "Pre-flight checks failed. Backup will not proceed." + FINAL_ARCHIVE="${BACKUP_ROOT}/${ARCHIVE_NAME}" else + # ========================================================================= + # QUERY SITE VERSION FROM DATABASE + # ========================================================================= + + log_section "Retrieving site version from database" + + QUERY_VERSION=$(docker exec "$DB_CONTAINER" psql -U "$DB_USER" -d "$DB_NAME" -t -A -c \ + "SELECT version_number FROM project_versions WHERE status = 'deployed' ORDER BY deployed_at DESC NULLS LAST LIMIT 1;" 2>/dev/null || true) + + QUERY_VERSION="$(echo "${QUERY_VERSION}" | xargs)" + + if [ -n "$QUERY_VERSION" ]; then + SITE_VERSION="$QUERY_VERSION" + ARCHIVE_NAME="fundtracker-v${SITE_VERSION}-backup-${TIMESTAMP}.tar.gz" + log "Deployed site version detected: v${SITE_VERSION}" + + add_section_row \ + "Project Version Check" \ + "OK" \ + "Detected deployed version v${SITE_VERSION}" + else + log "WARNING: Could not retrieve deployed version from 'project_versions' table. Using default naming." + + add_section_row \ + "Project Version Check" \ + "WARNING" \ + "Version query returned empty; falling back to standard naming" + fi + + FINAL_ARCHIVE="${BACKUP_ROOT}/${ARCHIVE_NAME}" + # Create temporary working directory mkdir -p "$TMP_DIR" @@ -270,9 +303,6 @@ else DB_DUMP="${DB_DIR}/fundtracker.sql" # pg_dump runs inside the PostgreSQL container. - # - # This is the same method documented by the FundTracker project itself. - # # No database password is stored in this backup script. if docker exec "$DB_CONTAINER" \ @@ -373,6 +403,9 @@ Host: Backup date: $(date) +Site Version: + v${SITE_VERSION} + Project source: ${PROJECT_DIR} @@ -563,7 +596,7 @@ MANIFEST_EOF log_section "Rotating old FundTracker backups" BACKUP_LIST=$(ls -1t \ - "${BACKUP_ROOT}"/fundtracker-backup-*.tar.gz \ + "${BACKUP_ROOT}"/fundtracker-*.tar.gz \ 2>/dev/null || true) BACKUP_COUNT=$(echo "$BACKUP_LIST" | grep -c . || true) @@ -609,9 +642,10 @@ fi log_section "FundTracker Backup Complete" -log "Archive: ${FINAL_ARCHIVE:-N/A}" -log "Size: ${ARCHIVE_SIZE:-N/A}" -log "Status: ${OVERALL_STATUS}" +log "Site Version: ${SITE_VERSION}" +log "Archive: ${FINAL_ARCHIVE:-N/A}" +log "Size: ${ARCHIVE_SIZE:-N/A}" +log "Status: ${OVERALL_STATUS}" # ============================================================================= # EMAIL STATUS BANNER @@ -849,6 +883,13 @@ $ARCHIVE_CARD + +Site Version +v$SITE_VERSION + + + + Project Files $PROJECT_DIR @@ -969,5 +1010,3 @@ if [ "$OVERALL_STATUS" = "FAILED" ]; then else exit 0 fi -``` -