From 76174802425f08b880065bf68135571803ac3897 Mon Sep 17 00:00:00 2001 From: Rafael Lopes Date: Thu, 23 Jul 2026 17:28:14 -0300 Subject: [PATCH] FIX: importFromMeta resolve conflito de nome com templates locais existentes ON CONFLICT (name) DO UPDATE atualiza meta info em templates locais com mesmo nome mas sem meta_template_name. Remove catch silencioso e loga falhas de importacao. --- .../whatsapp-template.repository.ts | 14 ++++++-- .../whatsapp/whatsapp-template.service.ts | 34 +++++++++++-------- 2 files changed, 30 insertions(+), 18 deletions(-) diff --git a/src/modules/whatsapp/repositories/whatsapp-template.repository.ts b/src/modules/whatsapp/repositories/whatsapp-template.repository.ts index ba4481e..5721ef5 100644 --- a/src/modules/whatsapp/repositories/whatsapp-template.repository.ts +++ b/src/modules/whatsapp/repositories/whatsapp-template.repository.ts @@ -188,7 +188,15 @@ export class WhatsappTemplateRepository { CASE WHEN $7 = 'APPROVED' THEN CURRENT_TIMESTAMP ELSE NULL END, CURRENT_TIMESTAMP ) - ON CONFLICT (meta_template_name) WHERE meta_template_name IS NOT NULL DO NOTHING`, + ON CONFLICT (name) DO UPDATE SET + meta_template_name = EXCLUDED.meta_template_name, + meta_template_id = EXCLUDED.meta_template_id, + meta_status = EXCLUDED.meta_status, + content = CASE WHEN whatsapp_templates.meta_template_name IS NULL THEN EXCLUDED.content ELSE whatsapp_templates.content END, + status = CASE WHEN EXCLUDED.meta_status = 'APPROVED' THEN 'approved' ELSE whatsapp_templates.status END, + meta_approved_at = CASE WHEN EXCLUDED.meta_status = 'APPROVED' THEN CURRENT_TIMESTAMP ELSE whatsapp_templates.meta_approved_at END, + updated_at = CURRENT_TIMESTAMP + WHERE whatsapp_templates.meta_template_name IS NULL`, [ input.metaTemplateName, input.content, @@ -204,8 +212,8 @@ export class WhatsappTemplateRepository { ], ); return (result.rowCount || 0) > 0; - } catch { - return false; + } catch (err: any) { + throw new Error(`importFromMeta "${input.metaTemplateName}": ${err.message}`); } } diff --git a/src/modules/whatsapp/whatsapp-template.service.ts b/src/modules/whatsapp/whatsapp-template.service.ts index 09b8045..f159e7e 100644 --- a/src/modules/whatsapp/whatsapp-template.service.ts +++ b/src/modules/whatsapp/whatsapp-template.service.ts @@ -142,22 +142,26 @@ export class WhatsappTemplateService { } const parsed = this.parseComponents(t.components || []); - const wasInserted = await this.repo.importFromMeta({ - metaTemplateId: metaId, - metaTemplateName: t.name, - metaStatus: t.status, - language: t.language || 'pt_BR', - category: this.normalizeCategory(t.category), - content: parsed.content, - headerType: parsed.headerType, - headerText: parsed.headerText, - footerText: parsed.footerText, - buttonsJson: parsed.buttons?.length ? JSON.stringify(parsed.buttons) : null, - }); + try { + const wasInserted = await this.repo.importFromMeta({ + metaTemplateId: metaId, + metaTemplateName: t.name, + metaStatus: t.status, + language: t.language || 'pt_BR', + category: this.normalizeCategory(t.category), + content: parsed.content, + headerType: parsed.headerType, + headerText: parsed.headerText, + footerText: parsed.footerText, + buttonsJson: parsed.buttons?.length ? JSON.stringify(parsed.buttons) : null, + }); - if (wasInserted) { - imported++; - this.logger.log(`[Meta Templates] Importado: "${t.name}" (${t.status})`); + if (wasInserted) { + imported++; + this.logger.log(`[Meta Templates] Importado: "${t.name}" (${t.status})`); + } + } catch (importErr: any) { + this.logger.warn(`[Meta Templates] Falha ao importar "${t.name}": ${importErr.message}`); } }