-- +goose Up
-- +goose StatementBegin

-- ─────────────────────────────────────────────────────────────────────────────
-- CATALOGO_ITENS: adicionar campos de variações, serviços e dados ricos de estoque
-- ─────────────────────────────────────────────────────────────────────────────
ALTER TABLE catalogo_itens
  ADD COLUMN IF NOT EXISTS genero             TEXT    DEFAULT '',
  ADD COLUMN IF NOT EXISTS tamanhos           TEXT[]  DEFAULT '{}',
  ADD COLUMN IF NOT EXISTS cores              JSONB   DEFAULT '[]',
  ADD COLUMN IF NOT EXISTS servicos           TEXT[]  DEFAULT '{}',
  ADD COLUMN IF NOT EXISTS saldo_estoque      INTEGER DEFAULT 0,
  ADD COLUMN IF NOT EXISTS usa_grade          BOOLEAN DEFAULT false,
  ADD COLUMN IF NOT EXISTS grade_itens        JSONB   DEFAULT '[]';

COMMENT ON COLUMN catalogo_itens.genero    IS 'masculino, feminino, infantil, unissex';
COMMENT ON COLUMN catalogo_itens.tamanhos  IS 'array de tamanhos disponíveis: PP,P,M,G,GG,XGG,34..50,2..16';
COMMENT ON COLUMN catalogo_itens.cores     IS 'array de objetos {id,nome,hex_cor} das cores disponíveis';
COMMENT ON COLUMN catalogo_itens.servicos  IS 'tipos de acabamento: silk, bordado, sublimacao, dtf, aplique, nenhum';
COMMENT ON COLUMN catalogo_itens.grade_itens IS 'grade completa [{cor_id,cor_nome,hex_cor,tamanho,saldo}]';

-- ─────────────────────────────────────────────────────────────────────────────
-- PROPOSTA_ITENS / ORCAMENTO_ITENS: enriquecer o JSONB de itens
-- Os itens ficam no campo JSONB "itens" das tabelas propostas (já existente).
-- Criamos uma view que facilita consultas ricas sobre itens.
-- ─────────────────────────────────────────────────────────────────────────────

-- Nenhuma DDL adicional necessária para os itens — eles já são JSONB livre.
-- O enriquecimento é feito na camada de aplicação (campos novos no objeto JSON).
-- Campos adicionados por item no JSONB:
--   tamanho       TEXT   -- ex: "M", "38", "G"
--   cor           TEXT   -- nome da cor ex: "Azul Royal"
--   cor_hex       TEXT   -- ex: "#1E3A8A"
--   cor_id        UUID   -- referência à estoque_categorias
--   servico       TEXT   -- silk | bordado | sublimacao | dtf | aplique | nenhum
--   genero        TEXT   -- masculino | feminino | infantil | unissex
--   tipo_peca     TEXT   -- camiseta | calca | jaleco | etc
--   obs_item      TEXT   -- observação específica do item

-- +goose StatementEnd

-- +goose Down
-- +goose StatementBegin
ALTER TABLE catalogo_itens
  DROP COLUMN IF EXISTS genero,
  DROP COLUMN IF EXISTS tamanhos,
  DROP COLUMN IF EXISTS cores,
  DROP COLUMN IF EXISTS servicos,
  DROP COLUMN IF EXISTS saldo_estoque,
  DROP COLUMN IF EXISTS usa_grade,
  DROP COLUMN IF EXISTS grade_itens;
-- +goose StatementEnd
