-- +goose Up
-- +goose StatementBegin

-- ha_nodes-Erweiterung für Cluster-Phase-3-Foundation. Diese Spalten
-- machen die Cluster-UI aussagekräftig auch im Single-Node-Modus und
-- bereiten Multi-Node-Drift-Detection vor (analog mail-gateway).
--
-- version:     edgeguard-api-Version des Peers (aus /healthz).
-- config_hash: deterministischer Hash über replizierbare DB-Tabellen.
--              Drift-Banner triggert wenn nodes verschiedene Werte haben.
-- mgmt_ip:     Management-IP (nicht VIP) — separat von public_ip + api_url.
-- status:      online | offline | joining | leaving | unknown.

ALTER TABLE ha_nodes
    ADD COLUMN IF NOT EXISTS version     TEXT,
    ADD COLUMN IF NOT EXISTS config_hash TEXT,
    ADD COLUMN IF NOT EXISTS mgmt_ip     INET,
    ADD COLUMN IF NOT EXISTS status      TEXT NOT NULL DEFAULT 'unknown';

ALTER TABLE ha_nodes
    DROP CONSTRAINT IF EXISTS ha_nodes_status_check;
ALTER TABLE ha_nodes
    ADD CONSTRAINT ha_nodes_status_check
        CHECK (status IN ('online', 'offline', 'joining', 'leaving', 'unknown'));

CREATE INDEX IF NOT EXISTS idx_ha_nodes_status ON ha_nodes (status);

-- +goose StatementEnd

-- +goose Down
-- +goose StatementBegin
ALTER TABLE ha_nodes
    DROP CONSTRAINT IF EXISTS ha_nodes_status_check;
ALTER TABLE ha_nodes
    DROP COLUMN IF EXISTS status,
    DROP COLUMN IF EXISTS mgmt_ip,
    DROP COLUMN IF EXISTS config_hash,
    DROP COLUMN IF EXISTS version;
-- +goose StatementEnd
