Update README.md

This commit is contained in:
Tanci 2025-06-04 16:39:27 -03:00 committed by GitHub
parent 14f8521c6c
commit 717ce79419
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

121
README.md
View File

@ -154,127 +154,6 @@ Antes de iniciar, certifique-se de que você já tem instalado:
);
```
## 🛠️ OBRIGATORIO ❗ - 🚨 CORREÇÃO NO BANCO DE DADOS DO CHATWOOT ⚠️
### Após aplicar esta correção é recomendavel recriar as etiquetas (marcadores).
- Foi notado que os ID da tabela "labels" não condizia com os id ta tabela "tags" sendo assim criei algumas funções e triggers que corrigem esse problema.
6. **Criação das Funções de Replicação, Exclusão e Atualização**
***Cria na raiz do banco de dados***
**Função para replicar inserções:**
```sql
CREATE OR REPLACE FUNCTION public.replicate_label_to_tags()
RETURNS trigger
LANGUAGE 'plpgsql'
COST 100
VOLATILE NOT LEAKPROOF
AS $BODY$
BEGIN
-- Verifica se já existe um registro em tags para este label_id
IF NOT EXISTS (
SELECT 1
FROM public.tags
WHERE labels_id = NEW.id
) THEN
INSERT INTO public.tags (labels_id, name, account_id)
VALUES (NEW.id, NEW.title, NEW.account_id);
END IF;
RETURN NEW;
END;
$BODY$;
ALTER FUNCTION public.replicate_label_to_tags()
OWNER TO postgres;
```
**Função para replicar exclusões:**
```sql
CREATE OR REPLACE FUNCTION public.delete_label_from_tags()
RETURNS trigger
LANGUAGE 'plpgsql'
COST 100
VOLATILE NOT LEAKPROOF
AS $BODY$
BEGIN
DELETE FROM public.tags
WHERE labels_id = OLD.id;
RETURN OLD;
END;
$BODY$;
ALTER FUNCTION public.delete_label_from_tags()
OWNER TO postgres;
```
**Função para replicar atualizações:**
```sql
CREATE OR REPLACE FUNCTION public.update_label_to_tag()
RETURNS trigger
LANGUAGE 'plpgsql'
COST 100
VOLATILE NOT LEAKPROOF
AS $BODY$
BEGIN
UPDATE public.tags
SET name = NEW.title,
account_id = NEW.account_id -- opcional, se quiser atualizar também a conta
WHERE labels_id = NEW.id;
RETURN NEW;
END;
$BODY$;
ALTER FUNCTION public.update_label_to_tag()
OWNER TO postgres;
```
6. **Criação dos Indices e Triger**
**Esse índice garante que não possa haver duas tags com o mesmo nome (name) dentro da mesma conta (account_id). Ou seja, é uma restrição de unicidade por conta, impedindo duplicações acidentais.**
```sql
-- 1) Remova o índice antigo (se existir)
DROP INDEX IF EXISTS public.index_tags_on_name;
-- 2) Crie o novo índice único incluindo account_id
CREATE UNIQUE INDEX IF NOT EXISTS index_tags_on_name_account
ON public.tags
USING btree (
name COLLATE pg_catalog."default" ASC NULLS LAST,
account_id ASC NULLS LAST
)
TABLESPACE pg_default;
```
**Sempre que uma nova etiqueta (label) for criada, deletada ou removida no Chatwoot, esse gatilho automaticamente chama uma função que copia ou sincroniza essa etiqueta com a tabela de tags, que provavelmente é usada de forma mais genérica no sistema (como busca, filtros, etc.).**
```sql
CREATE OR REPLACE TRIGGER trg_delete_label_from_tags
AFTER DELETE
ON public.labels
FOR EACH ROW
EXECUTE FUNCTION public.delete_label_from_tags();
CREATE OR REPLACE TRIGGER trigger_replicate_label_to_tags
AFTER INSERT
ON public.labels
FOR EACH ROW
EXECUTE FUNCTION public.replicate_label_to_tags();
CREATE OR REPLACE TRIGGER trigger_update_label_to_tag
AFTER UPDATE
ON public.labels
FOR EACH ROW
EXECUTE FUNCTION public.update_label_to_tag();
```
---
### Passo 3: Importar Workflows no n8n