rocketseat-education / course-saas-next-rbac

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Rota: Encerrar organização

lucasmilhoranca opened this issue · comments

Ao tentar excluir uma organização por meio da operação prisma.organization.delete, ocorre um erro pois toda organização possui no mínimo uma ou mais associações na tabela members, que representa o relacionamento muitos para muitos entre usuários e organizações. Isso ocorre porque a tentativa de exclusão de uma organização que possui membros relacionados viola a restrição de chave estrangeira na tabela members_organization_id_fkey.

Passos para Reproduzir:

Tente excluir uma organização que possui membros associados utilizando a operação prisma.organization.delete.
Observe que a operação falha e lança um erro devido à violação de chave estrangeira.
Mensagem de Erro:

"PrismaClientKnownRequestError: Invalid prisma.organization.delete() invocation in /shutdown-organization.ts:46:35"

Solução Proposta:

Uma solução proposta para resolver esse problema é excluir primeiro os membros associados à organização utilizando a operação prisma.member.deleteMany, e então excluir a organização utilizando a operação prisma.organization.delete.

await prisma.member.deleteMany({
  where: {
    organizationId: organization.id,
  },
});

await prisma.organization.delete({
  where: {
    id: organization.id,
  },
});

Nota Adicional:

Esta solução garante que todas as associações de membros da organização sejam excluídas antes de tentar excluir a organização em si, evitando assim a violação de chave estrangeira na tabela members_organization_id_fkey.