zync-nest-library
Version:
NestJS library with database backup and file upload utilities
31 lines (29 loc) • 962 B
text/typescript
import { getDirective, MapperKind, mapSchema } from "@graphql-tools/utils";
import { defaultFieldResolver, GraphQLSchema } from "graphql";
export function deptLimitDirectiveTransformer(
schema: GraphQLSchema,
directiveName: string
) {
return mapSchema(schema, {
[MapperKind.OBJECT_FIELD]: (fieldConfig) => {
const deptLimitDirective = getDirective(
schema,
fieldConfig,
directiveName
)?.[0];
if (deptLimitDirective) {
const { resolve = defaultFieldResolver } = fieldConfig;
fieldConfig.resolve = async function (source, args, context, info) {
const result = await resolve(source, args, context, info);
const { value }: any =
fieldConfig.astNode.directives[0].arguments[0].value;
if (Array.isArray(result)) {
return result.slice(0, +value);
}
return result;
};
return fieldConfig;
}
},
});
}