graphql-gene
Version:
Generates automatically an executable schema out of your ORM models
3 lines (2 loc) • 2.93 kB
JavaScript
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const D=require("./constants.cjs"),s=require("./utils/index.cjs"),I=["String","Int","Float","Boolean","Date","DateTime"];function R(e){const t=g(e.graphqlType,e.fieldKey),i=O(e.graphqlType,e.fieldKey),a={...e.isList?{page:"Int",perPage:"Int"}:{id:"String"},locale:"String",where:t,order:`[${i}!]`};Object.entries(a).forEach(([n,c])=>{e.fieldLineConfig.argsDef[n]=e.fieldLineConfig.argsDef[n]||new Set([]);let l=c;n==="page"&&(l+=` = ${D.PAGE_ARG_DEFAULT}`),n==="perPage"&&(l+=` = ${D.PER_PAGE_ARG_DEFAULT}`),e.fieldLineConfig.argsDef[n].add(l)})}function g(e,t){return T(e,t,"WhereOptions")}function O(e,t){return T(e,t,"SelectOrder")}function T(e,t,i){const a=n=>`${n[0].toUpperCase()}${n.substring(1)}`;return[e,i,t].map(a).join("")}function E(e){return`GeneOperator${e}Input`}function _(e){const t={eq:e,ne:e,in:`[${e}]`,notIn:`[${e}]`,null:"Boolean",...e==="String"?{like:e,notLike:e}:["Int","Float","Date","DateTime"].includes(e)?{lt:e,lte:e,gt:e,gte:e}:{}},i={};return Object.entries(t).forEach(([a,n])=>{i[a]={...s.getDefaultFieldLinesObject(),...i[a],typeDef:n}}),i}function A(e){const t=g(e.graphqlType,e.fieldKey),i=O(e.graphqlType,e.fieldKey),a=t in e.typeDefLines,n=i in e.typeDefLines;if(a&&n||(a||(s.createTypeDefLines(e.typeDefLines,"input",t),D.AND_OR_OPERATORS.forEach(f=>{e.typeDefLines[t].lines[f]={...s.getDefaultFieldLinesObject(),...e.typeDefLines[t].lines[f]},e.typeDefLines[t].lines[f].typeDef=`[${t}!]`})),n||s.createTypeDefLines(e.typeDefLines,"enum",i),e.fieldType&&D.BASIC_GRAPHQL_TYPE_VALUES.includes(e.fieldType)))return;if(!(e.fieldType in e.typeDefLines))throw new Error(`Cannot find "${e.fieldType}" definition used as "returnType".`);const c=f=>I.find(L=>L===s.getReturnTypeName(f)),l=new Set([]);Object.entries(e.typeDefLines[e.fieldType].lines).forEach(([f,L])=>{e.typeDefLines[t].lines[f]={...s.getDefaultFieldLinesObject(),...e.typeDefLines[t].lines[f]};const d={...s.getDefaultFieldLinesObject(),...L},p=c(d.typeDef);let y="";if(p){const r=E(p);l.add([r,p]),y=r}else if(d.typeDef in e.typeDefLines){for(const r in e.typeDefLines[d.typeDef].lines)if(r==="id"){const u=c(e.typeDefLines[d.typeDef].lines[r].typeDef);if(u){const m=E(u);l.add([m,u]),y=m}break}}l.forEach(([r,u])=>{r in e.typeDefLines||(s.createTypeDefLines(e.typeDefLines,"input",r),e.typeDefLines[r].lines=_(u))}),y?e.typeDefLines[t].lines[f].typeDef=y:delete e.typeDefLines[t].lines[f],D.QUERY_ORDER_VALUES.forEach(r=>{const u=`${f}_${r}`;e.typeDefLines[i].lines[u]=s.getDefaultFieldLinesObject()})})}exports.VALID_RETURN_TYPES_FOR_WHERE=I;exports.generateDefaultQueryFilterTypeDefs=A;exports.generateGraphqlTypeName=T;exports.generateOperatorInputLines=_;exports.getOperatorInputName=E;exports.getQueryOrderEnumName=O;exports.getWhereOptionsInputName=g;exports.populateArgsDefForDefaultResolver=R;
//# sourceMappingURL=defaultResolver.cjs.map