Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Diminui idas ao banco de dados na criação e edição de conteúdos, e na edição de usuários #1729

Merged
merged 8 commits into from
Jun 25, 2024

Conversation

Rafatcb
Copy link
Collaborator

@Rafatcb Rafatcb commented Jun 21, 2024

Mudanças realizadas

Realizei algumas alterações como tentativa de melhoria de desempenho na criação e edição de um conteúdo.

  1. Na criação de conteúdo, busquei o parent na query de criação ao invés de buscar separadamente.
  2. No creditOrDebitTabCoins, mudar a ordem dos ifs evita uma consulta no banco de dados quando o conteúdo não é relevante. Além disso, buscar o conteúdo pai diretamente com SQL permite obter apenas o campo desejado (owner_id), ao invés de trazer todos os campos da tabela e ainda calcular os TabCoins do conteúdo.
  3. Também em creditOrDebitTabCoins, buscar o pai no banco de dados apenas caso newContent.parent_owner_id seja undefined permite evitar buscar o pai duas vezes no create.
  4. No PATCH, é possível definir metadata.id ao criar o event, removendo a necessidade do uso do event.updateMetadata. Além disso, ao aceitar receber um options.oldContent no content.update, evitamos buscar duas vezes o mesmo conteúdo durante o PATCH.

Talvez alguma mudança seja desnecessária, possa ter uma interface melhor, ou ainda exista alguma melhoria que não percebi. Estou aberto a sugestões.

Tipo de mudança

  • Refatoração

Checklist:

  • As modificações não geram novos logs de erro ou aviso (warning).
  • Tanto os novos testes quanto os antigos estão passando localmente.

When creating a content, avoid an extra call to the database to check if the `parent_id` exists by
defining the `path` directly in the `INSERT` and validating it afterwards.
…fields from parent

In `creditOrDebitTabCoins`, changing the order of `if`s prevents a database query when the content
is not relevant. Furthermore, searching the parent content directly with SQL allows to obtain only
the desired field (`owner_id`), instead of bringing up all the fields from the table and also
calculating the content's TabCoins.
@Rafatcb Rafatcb added back Envolve modificações no backend refatoração Melhoria no código que não modifica o comportamento externo labels Jun 21, 2024
Copy link

vercel bot commented Jun 21, 2024

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
tabnews ✅ Ready (Inspect) Visit Preview 💬 Add feedback Jun 24, 2024 10:26pm

Copy link
Collaborator

@aprendendofelipe aprendendofelipe left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Boa @Rafatcb! 💪

Fiz alguns comentários, e subi commits com algumas das sugestões (não todas), mas pode remover o que você achar que não faz sentido.

E ao remover a updateMetadata na criação de conteúdo, eu percebi que dava para eliminar totalmente essa função do sistema, então já removi também do patch de usuários. Se achar que isso faz sentido, talvez compense editar o nome do PR, ou criamos outro, se achar melhor separar.

models/content.js Outdated Show resolved Hide resolved
models/content.js Outdated Show resolved Hide resolved
models/content.js Outdated Show resolved Hide resolved
models/content.js Outdated Show resolved Hide resolved
models/content.js Outdated Show resolved Hide resolved
@Rafatcb Rafatcb changed the title Diminui idas ao banco de dados na criação e edição de conteúdo Diminui idas ao banco de dados na criação e edição de conteúdos, e na edição de usuários Jun 21, 2024
@Rafatcb
Copy link
Collaborator Author

Rafatcb commented Jun 21, 2024

Ótimas melhorias, não percebi que poderíamos passar o id para o controller no POST 👍. Podemos deixar neste PR mesmo, já alterei o título.

@aprendendofelipe aprendendofelipe merged commit c781819 into main Jun 25, 2024
7 checks passed
@aprendendofelipe aprendendofelipe deleted the refactor/database-communication-contents branch June 25, 2024 11:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
back Envolve modificações no backend refatoração Melhoria no código que não modifica o comportamento externo
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants