1
resposta

Criar item em duas tabelas usando uma única mutation

Do ponto de vista "boas práticas", posso criar items em varias tabelas usando uma única mutation? Por exemplo, em um ERP com entry e entry_items, onde, varios itens estarão dentro de uma entrada a ideia seria passar para a mutation tudo junto, assim:

{
  "entry": {
    "total": 100,
    "user_id": 2,
    "items": [
      {
        "Product": {
          "name": "Calça colorida",
          "desc": "Calça colorida",
          "SKU": "Calça colorida"
        },
        "quantity": 10
      },
      {
        "Product": {
          "name": "Calça colorida 2",
          "desc": "Calça colorida 2",
          "SKU": "Calça colorida 2"
        },
        "quantity": 10
      },
      {
        "Product": {
          "id":"25",
          "name": "Calça colorida 2",
          "desc": "Calça colorida 2",
          "SKU": "Calça colorida 2"
        },
        "quantity": 10
      }
    ]
  }}

Ou o certo é uma mutation por tabela e o front que trata essa diferença?

1 resposta

Oi, Gabriela! Tudo bem?

Desculpa a demora por um retorno.

Do ponto de vista das boas práticas, geralmente é recomendado que cada mutation seja responsável por manipular uma única tabela. Isso ajuda a manter a separação de preocupações e torna o código mais fácil de entender e dar manutenção.

No exemplo fornecido, com as tabelas "entry" e "entry_items", seria mais aconselhável ter duas mutações separadas: uma para criar a entrada (entry) e outra para criar os itens da entrada (entry_items). Dessa forma, o front-end seria responsável por chamar as duas mutações sequencialmente, passando os dados necessários para cada uma.

A primeira mutação seria responsável por criar a entrada com as informações gerais, como o total e o ID do usuário. Em seguida, a segunda mutação seria chamada para criar os itens da entrada, passando os dados de cada item, como o nome, descrição, SKU e quantidade.

Essa abordagem ajuda a manter a responsabilidade única de cada mutação e torna o código mais modular e fácil de entender. Além disso, se houver a necessidade de modificar ou adicionar funcionalidades específicas para cada tabela no futuro, será mais simples realizar essas alterações em mutações separadas, em vez de ter uma única mutação que precisa tratar diferentes casos para diferentes tabelas.

Espero ter ajudado na compreensão do problema. Caso tenha ficado alguma dúvida, sinta-se à vontade em comunicar, estou à disposição!

Um forte abraço e bons estudos!

Caso este post tenha te ajudado, por favor, marcar como solucionado ✓