-- Migration 092: Store Intelligence Cache
-- Pre-computed store intelligence data refreshed by analytics_refresh task
-- Eliminates costly aggregation queries on /intelligence/stores endpoint

CREATE TABLE IF NOT EXISTS store_intelligence_cache (
  dispensary_id INTEGER PRIMARY KEY REFERENCES dispensaries(id) ON DELETE CASCADE,

  -- Basic counts
  sku_count INTEGER NOT NULL DEFAULT 0,
  brand_count INTEGER NOT NULL DEFAULT 0,
  snapshot_count INTEGER NOT NULL DEFAULT 0,

  -- Pricing
  avg_price_rec NUMERIC(10,2),
  avg_price_med NUMERIC(10,2),
  min_price NUMERIC(10,2),
  max_price NUMERIC(10,2),

  -- Category breakdown (JSONB for flexibility)
  category_counts JSONB DEFAULT '{}',

  -- Timestamps
  last_crawl_at TIMESTAMPTZ,
  last_refresh_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),

  -- Metadata
  created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

-- Index for fast lookups
CREATE INDEX IF NOT EXISTS idx_store_intelligence_cache_refresh
ON store_intelligence_cache (last_refresh_at DESC);

COMMENT ON TABLE store_intelligence_cache IS 'Pre-computed store intelligence metrics, refreshed by analytics_refresh task';
COMMENT ON COLUMN store_intelligence_cache.category_counts IS 'JSON object mapping category_raw to product count';
