graphile-upsert-plugin
This postgraphile plugin adds root level mutations for upserting with an equivalent API to the standard Create/Update mutations (upsert${Table}
) using postgres INSERT INTO ON CONFLICT UPDATE
statements. It includes:
- A single record mutation
index.js
(original)--append-plugins graphile-upsert-plugin
batch.js
, which accepts a non-empty list of records--append-plugins graphile-upsert-plugin/batch
batch-allow-empty.js
which is the same but with empty values allowed--append-plugins graphile-upsert-plugin/batch-allow-empty
The last two are the exact same, eventually the difference will just be a configuration but for now they're copy-pasted
If you add both via --append-plugins graphile-upsert-plugin,graphile-upsert-plugin/batch
, your schema should look something like:
"""All input for the upsert `Event` batch mutation."""# ... input UpsertEventBatchInput { clientMutationId: String """ The `Events` to be upserted by this mutation. Expects all records to conform to the structure of the first. """ events: [EventInput!]!} # ... type Mutation { # ... """Upserts a single `Event`.""" upsertEvent( """ The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. """ input: UpsertEventInput! ): UpsertEventPayload """Upserts a batch of `Events`.""" upsertEventBatch( """ The exclusive input argument for this mutation. An object type, make sure to see documentation for this object’s fields. """ input: UpsertEventBatchInput! ): UpsertEventBatchPayload # ...} # ...