From 717ce79419255b746d9ffe8ec19c4073aff52e3c Mon Sep 17 00:00:00 2001 From: Tanci <94814382+rodtanci@users.noreply.github.com> Date: Wed, 4 Jun 2025 16:39:27 -0300 Subject: [PATCH] Update README.md --- README.md | 121 ------------------------------------------------------ 1 file changed, 121 deletions(-) diff --git a/README.md b/README.md index a8a8579..ecbd8a2 100644 --- a/README.md +++ b/README.md @@ -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