Files
homeplay-old/src/lib/fragment.ts

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}`;
}