-- migrations/professional_pricing.sql
-- Fase 1: Precificação — tabela de preços padrão por profissional
-- Execute no Supabase SQL Editor

-- ─────────────────────────────────────────────────────────────
-- 1. Campo price em agenda_eventos
-- ─────────────────────────────────────────────────────────────
ALTER TABLE agenda_eventos
  ADD COLUMN IF NOT EXISTS price numeric(10,2);

-- ─────────────────────────────────────────────────────────────
-- 2. Tabela de preços por profissional
--    Chave: owner_id + determined_commitment_id (NULL = padrão)
-- ─────────────────────────────────────────────────────────────
CREATE TABLE IF NOT EXISTS professional_pricing (
  id                        uuid DEFAULT gen_random_uuid() PRIMARY KEY,
  owner_id                  uuid NOT NULL REFERENCES auth.users(id) ON DELETE CASCADE,
  tenant_id                 uuid NOT NULL,
  determined_commitment_id  uuid REFERENCES determined_commitments(id) ON DELETE SET NULL,
  -- NULL = preço padrão (fallback quando não há match por tipo)
  price                     numeric(10,2) NOT NULL,
  notes                     text,
  created_at                timestamptz DEFAULT now(),
  updated_at                timestamptz DEFAULT now(),

  CONSTRAINT professional_pricing_owner_commitment_key
    UNIQUE (owner_id, determined_commitment_id)
);

-- Índice por tenant (listagens do admin)
CREATE INDEX IF NOT EXISTS professional_pricing_tenant_idx
  ON professional_pricing (tenant_id);

-- ─────────────────────────────────────────────────────────────
-- 3. RLS
-- ─────────────────────────────────────────────────────────────
ALTER TABLE professional_pricing ENABLE ROW LEVEL SECURITY;

-- Terapeuta lê e escreve seus próprios preços
DROP POLICY IF EXISTS "professional_pricing: owner full access" ON professional_pricing;
CREATE POLICY "professional_pricing: owner full access"
  ON professional_pricing
  FOR ALL
  USING  (owner_id = auth.uid())
  WITH CHECK (owner_id = auth.uid());

-- ─────────────────────────────────────────────────────────────
-- 4. updated_at automático
-- ─────────────────────────────────────────────────────────────
CREATE OR REPLACE FUNCTION update_professional_pricing_updated_at()
RETURNS TRIGGER LANGUAGE plpgsql AS $$
BEGIN
  NEW.updated_at = now();
  RETURN NEW;
END;
$$;

DROP TRIGGER IF EXISTS trg_professional_pricing_updated_at ON professional_pricing;
CREATE TRIGGER trg_professional_pricing_updated_at
  BEFORE UPDATE ON professional_pricing
  FOR EACH ROW EXECUTE FUNCTION update_professional_pricing_updated_at();
