-- Promotion log table for tracking discovery → dispensary promotions
-- Tracks validation and promotion actions for audit/review

CREATE TABLE IF NOT EXISTS dutchie_promotion_log (
  id SERIAL PRIMARY KEY,
  discovery_id INTEGER REFERENCES dutchie_discovery_locations(id) ON DELETE SET NULL,
  dispensary_id INTEGER REFERENCES dispensaries(id) ON DELETE SET NULL,
  action VARCHAR(50) NOT NULL, -- 'validated', 'rejected', 'promoted_create', 'promoted_update', 'skipped'
  state_code VARCHAR(10),
  store_name VARCHAR(255),
  validation_errors TEXT[], -- Array of error messages if rejected
  field_changes JSONB, -- Before/after snapshot of changed fields
  triggered_by VARCHAR(100) DEFAULT 'auto', -- 'auto', 'manual', 'api'
  created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);

-- Indexes for efficient querying
CREATE INDEX IF NOT EXISTS idx_promotion_log_discovery_id ON dutchie_promotion_log(discovery_id);
CREATE INDEX IF NOT EXISTS idx_promotion_log_dispensary_id ON dutchie_promotion_log(dispensary_id);
CREATE INDEX IF NOT EXISTS idx_promotion_log_action ON dutchie_promotion_log(action);
CREATE INDEX IF NOT EXISTS idx_promotion_log_state_code ON dutchie_promotion_log(state_code);
CREATE INDEX IF NOT EXISTS idx_promotion_log_created_at ON dutchie_promotion_log(created_at DESC);

COMMENT ON TABLE dutchie_promotion_log IS 'Audit log for discovery location validation and promotion to dispensaries';
