Repository navigation
Blindagem do Decoder
JoaoSilva edited this page Oct 1, 2026
·
2 revisions
O banco pode trazer categorias novas ou chaves ausentes sem quebrar a lista de ofertas.
-
enum Categoriacom as 9 oficiais:ALIMENTOS,CARNES,HORTIFRUTI,PADARIA,BEBIDAS,HIGIENE,LIMPEZA,FRIOS_LATICINIOS,PET. -
init(from:)manual: normaliza com.uppercased()e aplica fallback?? .alimentos— categoria desconhecida vira ALIMENTOS em vez de descartar o item. -
Retrocompatibilidade HORTIFRUTI (commit
68a27c7): harmoniza variações antigas sem quebrar decode. -
Opcionais resilientes:
validade: String?,loja?,supermercadoId?— ausência não falha a lista. -
FirebaseServicecomtry?+compactMap: item defeituoso é descartado silenciosamente (nil), a coleção sobrevive.
produto_id, produto_nome → produto, imagem_url → imagemURL, supermercado_id → supermercadoId, loja, validade, categoria, preco, unidade, expira_em → expiraEm.
whereField("expira_em", isGreaterThanOrEqualTo: agora) exclui expiradas e documentos sem o campo. estaValida refiltra o resultado; opcionais do modelo não removem essa restrição do servidor. Consulte Estado-Atual.