#!/bin/bash # Momentry Release Package — Deploy Script # Usage: bash deploy.sh [--db-only] [--skip-video] set -euo pipefail DIR="$(cd "$(dirname "$0")" && pwd)" UUID=$(basename "$DIR") PG_BIN="${PG_BIN:-/Users/accusys/pgsql/18.3/bin}" DB_NAME="${DB_NAME:-momentry}" DB_USER="${DB_USER:-accusys}" DEMO_DIR="${DEMO_DIR:-/Users/accusys/momentry/var/sftpgo/data/demo}" OUTPUT_DIR="${OUTPUT_DIR:-/Users/accusys/momentry/output_dev}" echo "=== Momentry Package Deploy ===" echo "UUID: $UUID" echo "Time: $(date '+%Y-%m-%d %H:%M:%S')" echo "" # 1. Verify package integrity echo "[1/5] Verifying package..." REQUIRED_FILES=("data.sql" "file_info.json") MISSING=0 for f in "${REQUIRED_FILES[@]}"; do if [ ! -f "$DIR/$f" ]; then echo " ❌ Missing: $f" MISSING=1 fi done if [ $MISSING -eq 1 ]; then echo "ERROR: Package incomplete" exit 1 fi echo " ✅ Package verified" # 2. Import data.sql echo "[2/5] Importing DB data..." "$PG_BIN/psql" -U "$DB_USER" -d "$DB_NAME" -f "$DIR/data.sql" 2>&1 | tail -3 echo " ✅ Data imported" # 3. Copy video to demo dir VIDEO_FILE=$(ls "$DIR"/*.mp4 "$DIR"/*.mov "$DIR"/*.avi "$DIR"/*.mkv 2>/dev/null | head -1) if [ -n "$VIDEO_FILE" ]; then VIDEO_NAME=$(basename "$VIDEO_FILE") DEST="$DEMO_DIR/$VIDEO_NAME" if [ ! -f "$DEST" ]; then cp "$VIDEO_FILE" "$DEST" echo "[3/5] Video copied: $VIDEO_NAME → $DEMO_DIR" else echo "[3/5] Video already in demo dir, skipping" fi else echo "[3/5] No video file in package, skipping" fi # 4. Copy output files echo "[4/5] Copying output files..." COPIED=0 for f in "$DIR"/*.json "$DIR"/*.sqlite "$DIR"/*.sqlite; do if [ -f "$f" ]; then FNAME=$(basename "$f") if [ "$FNAME" != "file_info.json" ] && [ "$FNAME" != "package.json" ]; then cp "$f" "$OUTPUT_DIR/$FNAME" COPIED=$((COPIED + 1)) fi fi done echo " ✅ $COPIED files copied to $OUTPUT_DIR" # 5. Verify deployment echo "[5/5] Verifying deployment..." CHUNKS=$("$PG_BIN/psql" -U "$DB_USER" -d "$DB_NAME" -t -A -c "SELECT COUNT(*) FROM dev.chunk WHERE file_uuid='$UUID' AND chunk_type='sentence'" 2>/dev/null || echo "?") FACES=$("$PG_BIN/psql" -U "$DB_USER" -d "$DB_NAME" -t -A -c "SELECT COUNT(*) FROM dev.face_detections WHERE file_uuid='$UUID'" 2>/dev/null || echo "?") echo "" echo "=== Deploy Complete ===" echo " UUID: $UUID" echo " Chunks: $CHUNKS" echo " Faces: $FACES" echo " Output: $OUTPUT_DIR/" echo "" echo "Next: trigger pipeline processing" echo " curl -X POST http://localhost:3003/api/v1/file/$UUID/process" echo "" echo "Or open the offline report:" echo " python3 render_offline_report.py $OUTPUT_DIR/$UUID.sqlite"