29 lines
733 B
TypeScript
29 lines
733 B
TypeScript
import { gql } from "apollo-server-micro";
|
|
import { DocumentNode } from "graphql";
|
|
|
|
type FragmentDefinition<T> = {
|
|
query:DocumentNode;
|
|
name:string;
|
|
needsInclude:boolean;
|
|
}
|
|
|
|
export const createFragment = <T>(params:{
|
|
query:DocumentNode;
|
|
name:string;
|
|
needsInclude?:boolean;
|
|
}):FragmentDefinition<T> => {
|
|
return {
|
|
...params,
|
|
needsInclude: typeof params.needsInclude === 'undefined' ? true : params.needsInclude
|
|
}
|
|
}
|
|
|
|
export const includeFragment = <T>(fragment:FragmentDefinition<T>) => {
|
|
if(!fragment.needsInclude) return '';
|
|
return fragment.query;
|
|
}
|
|
|
|
export const extendFragment = <T>(fragment:FragmentDefinition<T>) => {
|
|
if(!fragment.needsInclude) return fragment.query;
|
|
return `...${fragment.name}`;
|
|
} |