PostGraphile

尝试增加一个隐藏维度:


drop schema z cascade;
create schema z;
set search_path to z;

create function z() returns int language sql stable as $$
  select current_setting('jwt.claims.z')::int;
$$;

create table z (
  id serial primary key,
  key text unique not null,
  note text
);

create table g (
  z int references z default z(),
  id text,
  primary key (z, id),
  note text
);

create table u (
  z int references z default z(),
  id text,
  primary key (z, id),
  phone text
);

create table gu (
  z int references z default z(),
  g text,
  u text,
  primary key (z, g, u),
  foreign key (z, g) references g on update cascade,
  foreign key (z, u) references u on update cascade,
  ts timestamptz default now()
);


set search_path to public;

create view g as select id, note from z.g where z = z.z();
create view u as select id, phone from z.u where z = z.z();
create view gu as select g, u from z.gu where z = z.z();
comment on view g is '
@primaryKey id
';
comment on view u is '
@primaryKey id
';
comment on view gu is '
@primaryKey g,u
';

.psqlrc

set jwt.claims.z to 3;