@0xobelisk/graphql-server
Version:
Tookit for interacting with dubhe graphql server
42 lines • 1.67 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.QueryFilterPlugin = void 0;
// Query filter plugin - only keep useful table-related queries
const QueryFilterPlugin = (builder) => {
// Filter query fields
builder.hook('GraphQLObjectType:fields', (fields, build, context) => {
const { scope: { isRootQuery } } = context;
if (!isRootQuery) {
return fields;
}
// Define query types to keep
const allowedQueries = new Set();
// Get all table-related queries
Object.keys(fields).forEach((fieldName) => {
// Keep PostGraphile required system fields
if (['query', 'nodeId', 'node'].includes(fieldName)) {
allowedQueries.add(fieldName);
}
// Keep store table-related queries
if (fieldName.match(/^(allStore|store)/i)) {
allowedQueries.add(fieldName);
}
// Keep table_fields table queries
if (fieldName.match(/^(allTable|table)/i)) {
allowedQueries.add(fieldName);
}
});
// Filter fields, only keep allowed queries
const filteredFields = {};
Object.keys(fields).forEach((fieldName) => {
if (allowedQueries.has(fieldName)) {
filteredFields[fieldName] = fields[fieldName];
}
});
// console.log('🔍 Filtered query fields:', Object.keys(filteredFields));
return filteredFields;
});
};
exports.QueryFilterPlugin = QueryFilterPlugin;
exports.default = exports.QueryFilterPlugin;
//# sourceMappingURL=query-filter.js.map