#!/bin/bash
# =============================================================================
# Coba Synology NAS 部署 — 階段 1:裝相依服務(PostgreSQL / Qdrant)
# =============================================================================
# 在 Synology NAS 用 SSH 連進去後執行(需要 sudo)。
#
# 設計選擇(對齊使用者「永遠在這個 NAS、不用 Docker」決定):
#   - PostgreSQL  → 從 Synology 套件中心安裝(GUI)
#   - Redis       → 階段 3 的 WebSocket 用 in-process pubsub,單機夠用,不裝
#   - Qdrant      → 直接下載 Linux binary,跑 systemd service
#   - Whisper     → Python 套件,跟 FastAPI 同 venv
#   - Coba API    → systemd service 跑 uvicorn
#
# 使用前:
#   1. SSH 進 NAS(用你 Synology DSM 帳號的 SSH)
#   2. sudo -i
#   3. bash 01_install_services.sh
# =============================================================================

set -e

echo "========================================="
echo " Coba 部署:01 - 裝相依服務"
echo "========================================="

COBA_HOME="/volume1/coba"
QDRANT_DIR="$COBA_HOME/qdrant"
QDRANT_VERSION="v1.12.1"

# ---------- 1. 建專案目錄 ----------
echo
echo "[1/4] 建立專案目錄 $COBA_HOME"
mkdir -p "$COBA_HOME"/{app,uploads,qdrant_data,logs}
mkdir -p "$QDRANT_DIR"

# ---------- 2. 確認 PostgreSQL 套件已裝 ----------
echo
echo "[2/4] 檢查 PostgreSQL"
if command -v psql >/dev/null 2>&1 || [ -d /var/packages/PostgreSQL ]; then
    echo "  PostgreSQL 已安裝 ✓"
else
    echo "  ⚠️  Synology 套件中心找『PostgreSQL』(或 MariaDB)套件,點安裝"
    echo "     裝完再回來執行此腳本"
    exit 1
fi

# ---------- 3. 下載 Qdrant binary ----------
echo
echo "[3/4] 下載 Qdrant $QDRANT_VERSION Linux binary"
if [ ! -f "$QDRANT_DIR/qdrant" ]; then
    cd /tmp
    ARCH=$(uname -m)
    case "$ARCH" in
        x86_64) QARCH="x86_64-unknown-linux-gnu" ;;
        aarch64) QARCH="aarch64-unknown-linux-gnu" ;;
        *) echo "不支援架構 $ARCH"; exit 1 ;;
    esac
    URL="https://github.com/qdrant/qdrant/releases/download/${QDRANT_VERSION}/qdrant-${QARCH}.tar.gz"
    echo "  下載 $URL ..."
    curl -L -o qdrant.tar.gz "$URL"
    tar -xzf qdrant.tar.gz
    mv qdrant "$QDRANT_DIR/qdrant"
    chmod +x "$QDRANT_DIR/qdrant"
    rm qdrant.tar.gz
    echo "  Qdrant 安裝在 $QDRANT_DIR/qdrant"
else
    echo "  Qdrant 已存在 ✓"
fi

# 寫 Qdrant 設定檔
cat > "$QDRANT_DIR/config.yaml" <<EOF
service:
  http_port: 6333
  grpc_port: 6334
  host: 127.0.0.1   # 只接受本機連線(透過 Cloudflare Tunnel 對外)

storage:
  storage_path: $COBA_HOME/qdrant_data
EOF

# ---------- 4. 寫 systemd unit:Qdrant ----------
echo
echo "[4/4] 寫 systemd 服務檔"
cat > /etc/systemd/system/qdrant.service <<EOF
[Unit]
Description=Qdrant Vector Database (Coba)
After=network.target

[Service]
Type=simple
ExecStart=$QDRANT_DIR/qdrant --config-path $QDRANT_DIR/config.yaml
WorkingDirectory=$QDRANT_DIR
Restart=on-failure
RestartSec=5
User=root
StandardOutput=append:$COBA_HOME/logs/qdrant.log
StandardError=append:$COBA_HOME/logs/qdrant.err.log

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable qdrant
systemctl start qdrant

echo
echo "========================================="
echo " 完成。下一步執行 02_deploy_app.sh"
echo "========================================="
echo "確認 Qdrant 跑起來:"
echo "  systemctl status qdrant"
echo "  curl http://127.0.0.1:6333/healthz"
