-
-
Notifications
You must be signed in to change notification settings - Fork 598
Closed
Closed
Copy link
Labels
Description
CREATE TABLE xyz (
id int4 GENERATED ALWAYS AS IDENTITY( INCREMENT BY 1 MINVALUE 1 MAXVALUE 2147483647 START 1 CACHE 1 NO CYCLE) NOT NULL,
username varchar NOT NULL,
favourites varchar NOT NULL,
store_id varchar NOT NULL,
realm text NULL
)
PARTITION BY LIST (store_id);
CREATE UNIQUE INDEX xyz_idx ON ONLY xyz USING btree (username, store_id, favourites);
COMMENT ON TABLE xyz IS '@name xyz
\n@omit\nupdate,delete\nTable alias for Postgraphile';
CREATE TABLE xyz_0596117 PARTITION OF xyz FOR VALUES IN ('0596117');
CREATE UNIQUE INDEX 596117_username_store_id_favourites_idx ON xyz_0596117 USING btree (username, store_id, favourites);
COMMENT ON TABLE xyz596117 IS '@omit';
this is m,y postgraphile code
const express = require("express");
const { postgraphile } = require("postgraphile");
const app = express();
const jwt = require("express-jwt");
const jwksRsa = require("jwks-rsa");
const cors = require("cors");
app.use(express.json({ limit: "10mb" }));
app.use(express.urlencoded({ limit: "10mb" }));
require("dotenv").config();
app.use(function (req, res, next) {
next();
});
app.use(cors());
const authErrors = (err, req, res, next) => {
if (err.name === "UnauthorizedError") {
res.status(err.status).json({ errors: [{ message: err.message }] });
res.end();
} else {
console.log(err.message);
}
};
app.use("/shield/graphql", authErrors, (req, res, next) => {
let realm = req.headers["realm"];
const JWKS_URI = process.env.KEYCLOAK_URL_RESOLVER.concat(
realm,
"/protocol/openid-connect/certs"
);
const ISSUER = process.env.KEYCLOAK_URL_RESOLVER.concat(realm);
const options = {
secret: jwksRsa.expressJwtSecret({
cache: true,
rateLimit: false,
jwksRequestsPerMinute: 5,
jwksUri: JWKS_URI,
}),
aud: "account",
iss: ISSUER,
algorithms: ["RS256"],
};
return jwt(options)(req, res, next);
});
app.use(
postgraphile(process.env.DATABASE_URL, process.env.SCHEMA.split(","), {
pgSettings(req) {
var group = req.user.groupname;
const settings = {};
settings["role"] = req.user.realm_access.roles[0];
console.log("defaultrole", req.user.realm_access.roles[0]);
settings["jwt.claim.storeid"] = req.headers["storeid"];
settings["jwt.claim.provenance"] = req.headers["provenance"];
settings["jwt.claim.realm"] = req.headers["realm"];
settings["jwt.claim.username"] = req.user.preferred_username;
console.log("jwt.claim.username", req.user.preferred_username);
const groupname = req.user.groupname;
const ids = groupname.map((item) => item.split("/").pop()).join(",");
settings["jwt.claim.accessiblestore"] = ids;
return settings;
},
graphqlRoute: "/shield/graphql",
graphiqlRoute: "/shield/graphiql",
eventStreamRoute: "/shield/graphql/stream",
ownerConnectionString: process.env.OWNER_CONNECTION_STRING,
watchPg: true,
graphiql: true,
enhanceGraphiql: true,
pgUsePartitionParents: true,
enableCors: false,
disableWarning: true,
appendPlugins: [
require("@graphile-contrib/pg-simplify-inflector"),
require("postgraphile-plugin-connection-filter"),
],
})
);
app.listen(process.env.PORT);
I need to show parent tables only postgraphile