-- +goose Up
-- +goose StatementBegin

-- ─────────────────────────────────────────────────────────────────────────────
-- Separar o crédito automático de banco de horas por subtipo (HE 50% / HE 100%),
-- permitindo que o saldo disponível para compensação seja exibido e validado
-- por tipo de hora extra, não apenas como um total agregado.
-- ─────────────────────────────────────────────────────────────────────────────
ALTER TABLE banco_horas
    ADD COLUMN IF NOT EXISTS subtipo_he TEXT CHECK (subtipo_he IN ('he_50','he_100'));

-- A chave de controle de idempotência precisa considerar o subtipo: cada mês
-- agora pode ter até dois créditos automáticos (um de HE 50%, outro de HE 100%).
ALTER TABLE banco_horas_creditos_processados
    DROP CONSTRAINT IF EXISTS banco_horas_creditos_processados_pkey;

ALTER TABLE banco_horas_creditos_processados
    ADD COLUMN IF NOT EXISTS subtipo_he TEXT NOT NULL DEFAULT 'he_50' CHECK (subtipo_he IN ('he_50','he_100'));

ALTER TABLE banco_horas_creditos_processados
    ADD PRIMARY KEY (tenant_id, funcionario_id, mes, subtipo_he);

-- +goose StatementEnd

-- +goose Down
-- +goose StatementBegin
ALTER TABLE banco_horas_creditos_processados
    DROP CONSTRAINT IF EXISTS banco_horas_creditos_processados_pkey;
ALTER TABLE banco_horas_creditos_processados
    DROP COLUMN IF EXISTS subtipo_he;
ALTER TABLE banco_horas_creditos_processados
    ADD PRIMARY KEY (tenant_id, funcionario_id, mes);

ALTER TABLE banco_horas
    DROP COLUMN IF EXISTS subtipo_he;
-- +goose StatementEnd
