prisma-parse-selected-fields

Parse selected fields of AST in GraphQL server and Prisma ORM.

Usage no npm install needed!

<script type="module">
  import prismaParseSelectedFields from 'https://cdn.skypack.dev/prisma-parse-selected-fields';
</script>

README

Prisma Parse Selected Fields Build Status

Prisma Parse Selected Fields supports parsing selected fields of AST in GraphQL server and Prisma ORM.

Interfaces:

interface ParseFieldsOptions {
   includeFields: string[]
   excludeFields: string[]
}
interface Options {
   parseFieldsOptions?: ParseFieldsOptions
   graphQLFieldsOptions?: GraphQLFieldsOptions
}

Functions:

/**
 * @method convertSelectedFields Convert AST object to select object in Prisma.
 * @param selectFields any
 * @returns any
 */
function convertSelectedFields(selectFields: any): any
/**
 * @method deleteFields Delete specified fields in the object
 * @param obj any
 * @param parseFieldsOptions ParseFieldsOptions
 * @returns any
 */
function deleteFields(obj: any, parseFieldsOptions?: ParseFieldsOptions): any
/**
 * @method parseSelectedFields Convert AST of info object to select object in Prisma.
 * @param info Info
 * @param options Options | undefined
 * @returns any
 */
function parseSelectedFields(info: Info, options?: Options): any

Example:

// ES6
...
import { GraphQLResolveInfo as Info } from 'graphql'
import { parseSelectedFields } from "prisma-parse-selected-fields";

async function resolver(root: any, args: any, { prisma }: any, info: Info): Promise<prisma.User> {
   const select = parseSelectedFields(info)

   return await prisma.user.findMany({
      ....
      where: {...},
      select: select,
      ...
   })
}