# Fix: SQL logic error: no such column: uuid

## Masalah

```
❌ DB Error: SQL logic error: no such column: uuid (1)
```

Database SQLite yang sudah ada belum punya kolom `uuid`.

---

## Solusi Cepat (Manual Fix di VPS)

**Jalankan di VPS untuk tambahkan kolom `uuid`:**

```bash
sqlite3 /opt/webhook-service/data/webhook.db "
ALTER TABLE webhook_queue ADD COLUMN uuid TEXT;
CREATE UNIQUE INDEX IF NOT EXISTS idx_webhook_uuid ON webhook_queue(uuid) WHERE uuid IS NOT NULL;
"
```

**Lalu restart service:**

```bash
sudo systemctl restart webhook-service
sudo systemctl status webhook-service
```

**Expected:** Service start tanpa error ✅

---

## Solusi Permanent (Rebuild & Deploy)

**1. Build ulang binary (di Windows):**

```powershell
cd c:\Users\MSahrul\Documents\PROJECT\lims\golang-webhook-service
$env:GOOS = "linux"; $env:GOARCH = "amd64"; go build -o webhook-service .
```

**2. Upload ke VPS:**

```powershell
scp webhook-service root@202.155.95.172:/tmp/
```

**3. Di VPS - Deploy:**

```bash
# Stop service
sudo systemctl stop webhook-service

# Tambahkan kolom uuid (jika belum ada)
sqlite3 /opt/webhook-service/data/webhook.db "
ALTER TABLE webhook_queue ADD COLUMN uuid TEXT;
CREATE UNIQUE INDEX IF NOT EXISTS idx_webhook_uuid ON webhook_queue(uuid) WHERE uuid IS NOT NULL;
" 2>/dev/null || echo "Column mungkin sudah ada, skip"

# Ganti binary
sudo cp /tmp/webhook-service /opt/webhook-service/
sudo chmod +x /opt/webhook-service/webhook-service
sudo chown www-data:www-data /opt/webhook-service/webhook-service

# Start service
sudo systemctl start webhook-service
sudo systemctl status webhook-service
```

**Expected:** Service start tanpa error ✅

---

## Verifikasi

**Cek apakah kolom uuid sudah ada:**

```bash
sqlite3 /opt/webhook-service/data/webhook.db "
SELECT sql FROM sqlite_master WHERE type='table' AND name='webhook_queue';
"
```

**Expected:** Kolom `uuid TEXT` ada di CREATE TABLE statement.

**Cek apakah index sudah ada:**

```bash
sqlite3 /opt/webhook-service/data/webhook.db "
SELECT name FROM sqlite_master WHERE type='index' AND name='idx_webhook_uuid';
"
```

**Expected:** `idx_webhook_uuid`

---

## Catatan

**Binary baru sudah include migration yang lebih robust:**
- Check dulu apakah kolom sudah ada sebelum ALTER TABLE
- Tidak akan error jika kolom sudah ada
- Log jelas: "✅ Added uuid column to webhook_queue"

**Tapi untuk database yang sudah ada:** Perlu manual ALTER TABLE sekali, setelah itu migration otomatis akan handle.

---

**Pilih salah satu:**
- **Solusi cepat:** Manual ALTER TABLE di VPS (langsung jalan)
- **Solusi permanent:** Rebuild + deploy (lebih robust untuk future)
