This plugin allows you to expose only a single direction of connections exposed by foreign key constraints.
With the following schema
create table classroom (
id int primary key
);
create table teacher (
id int primary key,
classroom_id int not null references classroom(id)
);
in the GraphQL generated, the Teacher
type will have a classroomByClassroomId
field, and the
Classroom
type will have a teachersByClassroomId
field.
By using the foreignFieldDirection
smart tag, you can choose to expose only one of those two
fields.
For example, via a smart comment
comment on constraint teacher_classroom_id_fkey on teacher is E'@foreignFieldDirection forward';
With the following schema
create table classroom (
id int primary key
);
create table classroom_other_info (
id int primary key references classroom(id)
);
in the GraphQL generated, the Classroom
type will have a classroomOtherInfoById
field and a
classroomOtherInfosById
field. Setting the foreign field direction to forward only will omit both
these fields on Classroom
.
This is a simple plugin. You can just copy it into your project and modify as needed. You can install it using npm or yarn:
yarn add postgraphile-plugin-foreign-field-direction
const { ForeignFieldDirectionPlugin } = require('postgraphile-plugin-foreign-field-direction')
forward
and backward
are the only valid arguments for the foreignFieldDirection
smart tag.
Any other value, including a blank value, will set throw an error and prevent the GQL schema from
compiling.
The forward
argument indicates that you want to expose a traversal only FROM the table on which
the constraint is defined.
The backward
argument indicates that you want to expose a traversal only TO the table on which
the constraint is defined.
This plugin has no dependencies. It was tested with Postgraphile v4.12.9.