Skip to content

Commit

Permalink
Disable backward pagination of functions by default (#2158)
Browse files Browse the repository at this point in the history
  • Loading branch information
benjie authored Aug 16, 2024
2 parents dc64350 + 46ce046 commit b54dd33
Show file tree
Hide file tree
Showing 26 changed files with 147 additions and 544 deletions.
9 changes: 9 additions & 0 deletions .changeset/lemon-ears-grab.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
"graphile-build-pg": patch
"postgraphile": patch
---

🚨 Amber preset no longer enables backward pagination options (`before`, `last`)
on functions by default - add `+backwards` behavior to these functions to
enable. If you're using the V4 preset you should be unaffected by this change
because it enables `+backwards` by default.
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,15 @@ export const PgFirstLastBeforeAfterArgsPlugin: GraphileConfig.Plugin = {
version: version,

schema: {
entityBehavior: {
pgResource: {
provides: ["default"],
before: ["inferred", "override"],
callback(behavior) {
return ["resource:connection:backwards", behavior];
},
},
},
hooks: {
GraphQLObjectType_fields_field_args: commonFn,
GraphQLInterfaceType_fields_field_args: commonFn,
Expand Down Expand Up @@ -84,6 +93,14 @@ function commonFn(

const Cursor = getTypeByName("Cursor");

const canPaginateBackwards =
isPgFieldConnection &&
(!pgResource ||
build.behavior.pgResourceMatches(
pgResource,
"resource:connection:backwards",
));

return extend(
args,
{
Expand All @@ -110,7 +127,7 @@ function commonFn(
[],
),
},
...(isPgFieldConnection
...(canPaginateBackwards
? {
last: {
description: build.wrapDescription(
Expand Down Expand Up @@ -162,7 +179,7 @@ function commonFn(
[],
),
},
...(isPgFieldConnection
...(canPaginateBackwards
? {
before: {
description: build.wrapDescription(
Expand All @@ -187,6 +204,10 @@ function commonFn(
[],
),
},
}
: null),
...(isPgFieldConnection
? {
after: {
description: build.wrapDescription(
"Read all values in the set after (below) this cursor.",
Expand Down
22 changes: 22 additions & 0 deletions graphile-build/graphile-build-pg/src/plugins/PgProceduresPlugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -673,4 +673,26 @@ export const PgProceduresPlugin: GraphileConfig.Plugin = {
},
},
}),
schema: {
entityBehavior: {
pgResource: {
provides: ["default"],
before: [
// By running before this, we actually override it because it
// prefixes further back in the behavior chain
"PgFirstLastBeforeAfterArgsPlugin",
"inferred",
"override",
],
callback(behavior, resource) {
if (resource.parameters) {
// Default to no backwards pagination for functions
return ["-resource:connection:backwards", behavior];
} else {
return behavior;
}
},
},
},
},
};
Original file line number Diff line number Diff line change
Expand Up @@ -6667,7 +6667,7 @@ const registry = makeRegistry({
tags: {
sortable: true,
filterable: true,
behavior: ["-queryField -mutationField typeField", "-filter -order", "filter filterBy", "orderBy order"]
behavior: ["-queryField -mutationField typeField", "-filter -order", "filter filterBy", "orderBy order resource:connection:backwards"]
}
},
description: undefined
Expand Down Expand Up @@ -6703,7 +6703,7 @@ const registry = makeRegistry({
tags: {
sortable: true,
filterable: true,
behavior: ["-queryField -mutationField typeField", "-filter -order", "filter filterBy", "orderBy order"]
behavior: ["-queryField -mutationField typeField", "-filter -order", "filter filterBy", "orderBy order resource:connection:backwards"]
}
},
description: undefined
Expand Down Expand Up @@ -7307,7 +7307,7 @@ const registry = makeRegistry({
notNull: true,
sortable: true,
filterable: true,
behavior: ["-queryField -mutationField typeField", "-filter -order", "filter filterBy", "orderBy order"]
behavior: ["-queryField -mutationField typeField", "-filter -order", "filter filterBy", "orderBy order resource:connection:backwards"]
},
singleOutputParameterName: "o1"
},
Expand Down Expand Up @@ -7338,7 +7338,7 @@ const registry = makeRegistry({
},
tags: {
sortable: true,
behavior: ["-queryField -mutationField typeField", "-filter -order", "orderBy order"]
behavior: ["-queryField -mutationField typeField", "-filter -order", "orderBy order resource:connection:backwards"]
}
},
description: "The first name of the person."
Expand Down Expand Up @@ -7860,7 +7860,7 @@ const registry = makeRegistry({
tags: {
sortable: true,
filterable: true,
behavior: ["queryField -mutationField -typeField", "-filter -order", "filter filterBy", "orderBy order"]
behavior: ["queryField -mutationField -typeField", "-filter -order", "filter filterBy", "orderBy order resource:connection:backwards"]
}
},
description: undefined
Expand Down Expand Up @@ -7938,7 +7938,7 @@ const registry = makeRegistry({
},
tags: {
sortable: true,
behavior: ["-queryField -mutationField typeField", "-filter -order", "orderBy order"]
behavior: ["-queryField -mutationField typeField", "-filter -order", "orderBy order resource:connection:backwards"]
}
},
description: undefined
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6667,7 +6667,7 @@ const registry = makeRegistry({
tags: {
sortable: true,
filterable: true,
behavior: ["-queryField -mutationField typeField", "-filter -order", "filter filterBy", "orderBy order"]
behavior: ["-queryField -mutationField typeField", "-filter -order", "filter filterBy", "orderBy order resource:connection:backwards"]
}
},
description: undefined
Expand Down Expand Up @@ -6703,7 +6703,7 @@ const registry = makeRegistry({
tags: {
sortable: true,
filterable: true,
behavior: ["-queryField -mutationField typeField", "-filter -order", "filter filterBy", "orderBy order"]
behavior: ["-queryField -mutationField typeField", "-filter -order", "filter filterBy", "orderBy order resource:connection:backwards"]
}
},
description: undefined
Expand Down Expand Up @@ -7307,7 +7307,7 @@ const registry = makeRegistry({
notNull: true,
sortable: true,
filterable: true,
behavior: ["-queryField -mutationField typeField", "-filter -order", "filter filterBy", "orderBy order"]
behavior: ["-queryField -mutationField typeField", "-filter -order", "filter filterBy", "orderBy order resource:connection:backwards"]
},
singleOutputParameterName: "o1"
},
Expand Down Expand Up @@ -7338,7 +7338,7 @@ const registry = makeRegistry({
},
tags: {
sortable: true,
behavior: ["-queryField -mutationField typeField", "-filter -order", "orderBy order"]
behavior: ["-queryField -mutationField typeField", "-filter -order", "orderBy order resource:connection:backwards"]
}
},
description: "The first name of the person."
Expand Down Expand Up @@ -7860,7 +7860,7 @@ const registry = makeRegistry({
tags: {
sortable: true,
filterable: true,
behavior: ["queryField -mutationField -typeField", "-filter -order", "filter filterBy", "orderBy order"]
behavior: ["queryField -mutationField -typeField", "-filter -order", "filter filterBy", "orderBy order resource:connection:backwards"]
}
},
description: undefined
Expand Down Expand Up @@ -7938,7 +7938,7 @@ const registry = makeRegistry({
},
tags: {
sortable: true,
behavior: ["-queryField -mutationField typeField", "-filter -order", "orderBy order"]
behavior: ["-queryField -mutationField typeField", "-filter -order", "orderBy order resource:connection:backwards"]
}
},
description: undefined
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4184,7 +4184,7 @@ const registry = makeRegistry({
notNull: true,
sortable: true,
filterable: true,
behavior: ["-queryField -mutationField typeField", "-filter -order", "filter filterBy", "orderBy order"]
behavior: ["-queryField -mutationField typeField", "-filter -order", "filter filterBy", "orderBy order resource:connection:backwards"]
},
singleOutputParameterName: "o1"
},
Expand Down Expand Up @@ -4215,7 +4215,7 @@ const registry = makeRegistry({
},
tags: {
sortable: true,
behavior: ["-queryField -mutationField typeField", "-filter -order", "orderBy order"]
behavior: ["-queryField -mutationField typeField", "-filter -order", "orderBy order resource:connection:backwards"]
}
},
description: "The first name of the person."
Expand Down Expand Up @@ -4740,7 +4740,7 @@ const registry = makeRegistry({
tags: {
sortable: true,
filterable: true,
behavior: ["queryField -mutationField -typeField", "-filter -order", "filter filterBy", "orderBy order"]
behavior: ["queryField -mutationField -typeField", "-filter -order", "filter filterBy", "orderBy order resource:connection:backwards"]
}
},
description: undefined
Expand Down Expand Up @@ -4818,7 +4818,7 @@ const registry = makeRegistry({
},
tags: {
sortable: true,
behavior: ["-queryField -mutationField typeField", "-filter -order", "orderBy order"]
behavior: ["-queryField -mutationField typeField", "-filter -order", "orderBy order resource:connection:backwards"]
}
},
description: undefined
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4182,7 +4182,7 @@ const registry = makeRegistry({
notNull: true,
sortable: true,
filterable: true,
behavior: ["-queryField -mutationField typeField", "-filter -order", "filter filterBy", "orderBy order"]
behavior: ["-queryField -mutationField typeField", "-filter -order", "filter filterBy", "orderBy order resource:connection:backwards"]
},
singleOutputParameterName: "o1"
},
Expand Down Expand Up @@ -4213,7 +4213,7 @@ const registry = makeRegistry({
},
tags: {
sortable: true,
behavior: ["-queryField -mutationField typeField", "-filter -order", "orderBy order"]
behavior: ["-queryField -mutationField typeField", "-filter -order", "orderBy order resource:connection:backwards"]
}
},
description: "The first name of the person."
Expand Down Expand Up @@ -4738,7 +4738,7 @@ const registry = makeRegistry({
tags: {
sortable: true,
filterable: true,
behavior: ["queryField -mutationField -typeField", "-filter -order", "filter filterBy", "orderBy order"]
behavior: ["queryField -mutationField -typeField", "-filter -order", "filter filterBy", "orderBy order resource:connection:backwards"]
}
},
description: undefined
Expand Down Expand Up @@ -4816,7 +4816,7 @@ const registry = makeRegistry({
},
tags: {
sortable: true,
behavior: ["-queryField -mutationField typeField", "-filter -order", "orderBy order"]
behavior: ["-queryField -mutationField typeField", "-filter -order", "orderBy order resource:connection:backwards"]
}
},
description: undefined
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6674,7 +6674,7 @@ const registry = makeRegistry({
tags: {
sortable: true,
filterable: true,
behavior: ["-queryField -mutationField typeField", "-filter -order", "filter filterBy", "orderBy order"]
behavior: ["-queryField -mutationField typeField", "-filter -order", "filter filterBy", "orderBy order resource:connection:backwards"]
}
},
description: undefined
Expand Down Expand Up @@ -6710,7 +6710,7 @@ const registry = makeRegistry({
tags: {
sortable: true,
filterable: true,
behavior: ["-queryField -mutationField typeField", "-filter -order", "filter filterBy", "orderBy order"]
behavior: ["-queryField -mutationField typeField", "-filter -order", "filter filterBy", "orderBy order resource:connection:backwards"]
}
},
description: undefined
Expand Down Expand Up @@ -7341,7 +7341,7 @@ const registry = makeRegistry({
notNull: true,
sortable: true,
filterable: true,
behavior: ["-queryField -mutationField typeField", "-filter -order", "filter filterBy", "orderBy order"]
behavior: ["-queryField -mutationField typeField", "-filter -order", "filter filterBy", "orderBy order resource:connection:backwards"]
},
singleOutputParameterName: "o1"
},
Expand Down Expand Up @@ -7372,7 +7372,7 @@ const registry = makeRegistry({
},
tags: {
sortable: true,
behavior: ["-queryField -mutationField typeField", "-filter -order", "orderBy order"]
behavior: ["-queryField -mutationField typeField", "-filter -order", "orderBy order resource:connection:backwards"]
}
},
description: "The first name of the person."
Expand Down Expand Up @@ -7894,7 +7894,7 @@ const registry = makeRegistry({
tags: {
sortable: true,
filterable: true,
behavior: ["queryField -mutationField -typeField", "-filter -order", "filter filterBy", "orderBy order"]
behavior: ["queryField -mutationField -typeField", "-filter -order", "filter filterBy", "orderBy order resource:connection:backwards"]
}
},
description: undefined
Expand Down Expand Up @@ -7972,7 +7972,7 @@ const registry = makeRegistry({
},
tags: {
sortable: true,
behavior: ["-queryField -mutationField typeField", "-filter -order", "orderBy order"]
behavior: ["-queryField -mutationField typeField", "-filter -order", "orderBy order resource:connection:backwards"]
}
},
description: undefined
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6668,7 +6668,7 @@ const registry = makeRegistry({
tags: {
sortable: true,
filterable: true,
behavior: ["-queryField -mutationField typeField", "-filter -order", "filter filterBy", "orderBy order"]
behavior: ["-queryField -mutationField typeField", "-filter -order", "filter filterBy", "orderBy order resource:connection:backwards"]
}
},
description: undefined
Expand Down Expand Up @@ -6704,7 +6704,7 @@ const registry = makeRegistry({
tags: {
sortable: true,
filterable: true,
behavior: ["-queryField -mutationField typeField", "-filter -order", "filter filterBy", "orderBy order"]
behavior: ["-queryField -mutationField typeField", "-filter -order", "filter filterBy", "orderBy order resource:connection:backwards"]
}
},
description: undefined
Expand Down Expand Up @@ -7335,7 +7335,7 @@ const registry = makeRegistry({
notNull: true,
sortable: true,
filterable: true,
behavior: ["-queryField -mutationField typeField", "-filter -order", "filter filterBy", "orderBy order"]
behavior: ["-queryField -mutationField typeField", "-filter -order", "filter filterBy", "orderBy order resource:connection:backwards"]
},
singleOutputParameterName: "o1"
},
Expand Down Expand Up @@ -7366,7 +7366,7 @@ const registry = makeRegistry({
},
tags: {
sortable: true,
behavior: ["-queryField -mutationField typeField", "-filter -order", "orderBy order"]
behavior: ["-queryField -mutationField typeField", "-filter -order", "orderBy order resource:connection:backwards"]
}
},
description: "The first name of the person."
Expand Down Expand Up @@ -7888,7 +7888,7 @@ const registry = makeRegistry({
tags: {
sortable: true,
filterable: true,
behavior: ["queryField -mutationField -typeField", "-filter -order", "filter filterBy", "orderBy order"]
behavior: ["queryField -mutationField -typeField", "-filter -order", "filter filterBy", "orderBy order resource:connection:backwards"]
}
},
description: undefined
Expand Down Expand Up @@ -7966,7 +7966,7 @@ const registry = makeRegistry({
},
tags: {
sortable: true,
behavior: ["-queryField -mutationField typeField", "-filter -order", "orderBy order"]
behavior: ["-queryField -mutationField typeField", "-filter -order", "orderBy order resource:connection:backwards"]
}
},
description: undefined
Expand Down
Loading

0 comments on commit b54dd33

Please sign in to comment.