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}`); } }