Graphql - Is there a way how to insert two tables at the same time, but the second table is dependent on the return of from the first table?
Asked Answered
V

1

6

i am new to graphql and i am having this issue and don't know how to solve it.

for example i have two tables: book and book_author;

book has book_id and name book_author has book_author_id, book_id, author_name

that two tables needs to be inserted values at a single request but the book_author table needs the book_id which from the book table it self with be generated.

can someone help me with this? help is much appreciated.

expected result is when calling post request or upon inserting.

for ex. the system generated book_id bk123, the book_id in the table book_author should be the same too.

Valvate answered 26/8, 2019 at 13:31 Comment(0)
H
10

It is possible - the important documentation is here: https://hasura.io/docs/latest/graphql/core/databases/postgres/mutations/multiple-mutations/#insert-an-object-and-a-nested-object-in-the-same-mutation

mutation {
  insert_book_author(objects: {book: {data: {name: "New Book"}}, author_name: "Sarah"}) {
    affected_rows
    returning {
      book_author_id
      book {
        book_id
        name
      }
    }
  }
}

Notice how an id is not specified in the nested book object. Hasura will automatically fill that in upon insert.

add a book table

add a book_author table, with foreign key to book

add an object relationship between book and book_author

run a mutation with nested objects

Heller answered 26/8, 2019 at 19:36 Comment(1)
thank you @Heller this really worked!!!!!! i applied it already on my codes. thank youValvate

© 2022 - 2024 — McMap. All rights reserved.