feat(codegen): allow fire-and-forget delete hooks (clientMutationId default) #695
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This PR introduces an optional-selection “fire-and-forget” path for table delete hooks only. When no selection is provided, delete hooks will default to selecting just
clientMutationId(a PostGraphile-standard field on CRUD payloads), rather than entity fields.What changed (scoped to delete hooks):
selection.fields(unchanged typed path){ clientMutationId: string }in the payloadselectionas optional and uses:select: args.select ?? { clientMutationId: true }Rationale:
clientMutationIdcommunicates that this path intentionally returns no entity data.{ id: true }). This remains removed project-wide.Files of interest:
Note: This PR is based off the latest remove-default-selects branch. It will include its already-reviewed diffs (workflows path ignores, makage bump, etc.) when merged into main.
Review & Testing Checklist for Human (3–5 items)
selection.fieldsand returns typed entity payload{ clientMutationId: string }select: args.select ?? { clientMutationId: true }Recommended manual test plan:
pnpm buildpnpm test(should be all green; 3 snapshots updated relative to previous behavior)mutations/useDelete*Mutation.tsoutputs for:selectionin the implementation signature{ clientMutationId: true }Notes
clientMutationId.