-- Trend history table for time-series charting.
-- trend_windows stores the latest snapshot per (entity, window) via upsert.
-- trend_history stores every snapshot so the frontend can plot trend evolution.

CREATE TABLE IF NOT EXISTS trend_history (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    entity_type VARCHAR(50) NOT NULL DEFAULT 'company',
    entity_id VARCHAR(100) NOT NULL,
    "window" VARCHAR(20) NOT NULL,
    trend_direction VARCHAR(20) NOT NULL DEFAULT 'neutral',
    trend_strength FLOAT DEFAULT 0.5,
    confidence FLOAT DEFAULT 0.5,
    contradiction_score FLOAT DEFAULT 0.0,
    dominant_catalysts JSONB DEFAULT '[]',
    material_risks JSONB DEFAULT '[]',
    generated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

CREATE INDEX IF NOT EXISTS idx_trend_history_lookup
    ON trend_history (entity_id, "window", generated_at DESC);

CREATE INDEX IF NOT EXISTS idx_trend_history_generated
    ON trend_history (generated_at DESC);

-- Seed history from existing trend_windows so charts aren't empty
-- on first deploy. This gives at least one data point per ticker/window.
INSERT INTO trend_history (
    entity_type, entity_id, "window", trend_direction,
    trend_strength, confidence, contradiction_score,
    dominant_catalysts, material_risks, generated_at
)
SELECT
    entity_type, entity_id, "window", trend_direction,
    trend_strength, confidence, contradiction_score,
    dominant_catalysts, material_risks, generated_at
FROM trend_windows
ON CONFLICT DO NOTHING;
