UNPKG

graphql-gene

Version:

Generates automatically an executable schema out of your ORM models

116 lines (115 loc) 3.58 kB
import { AND_OR_OPERATORS as _, BASIC_GRAPHQL_TYPE_VALUES as g, QUERY_ORDER_VALUES as R, PAGE_ARG_DEFAULT as A, PER_PAGE_ARG_DEFAULT as S } from "./constants.js"; import { createTypeDefLines as p, getDefaultFieldLinesObject as l, getReturnTypeName as $ } from "./utils/index.js"; const N = [ "String", "Int", "Float", "Boolean", "Date", "DateTime" ]; function G(e) { const n = O(e.graphqlType, e.fieldKey), f = I(e.graphqlType, e.fieldKey), s = { ...e.isList ? { page: "Int", perPage: "Int" } : { id: "String" }, locale: "String", where: n, order: `[${f}!]` }; Object.entries(s).forEach(([t, c]) => { e.fieldLineConfig.argsDef[t] = e.fieldLineConfig.argsDef[t] || /* @__PURE__ */ new Set([]); let D = c; t === "page" && (D += ` = ${A}`), t === "perPage" && (D += ` = ${S}`), e.fieldLineConfig.argsDef[t].add(D); }); } function O(e, n) { return T(e, n, "WhereOptions"); } function I(e, n) { return T(e, n, "SelectOrder"); } function T(e, n, f) { const s = (t) => `${t[0].toUpperCase()}${t.substring(1)}`; return [e, f, n].map(s).join(""); } function m(e) { return `GeneOperator${e}Input`; } function h(e) { const n = { 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 } : {} }, f = {}; return Object.entries(n).forEach(([s, t]) => { f[s] = { ...l(), ...f[s], typeDef: t }; }), f; } function U(e) { const n = O(e.graphqlType, e.fieldKey), f = I(e.graphqlType, e.fieldKey), s = n in e.typeDefLines, t = f in e.typeDefLines; if (s && t || (s || (p(e.typeDefLines, "input", n), _.forEach((i) => { e.typeDefLines[n].lines[i] = { ...l(), ...e.typeDefLines[n].lines[i] }, e.typeDefLines[n].lines[i].typeDef = `[${n}!]`; })), t || p(e.typeDefLines, "enum", f), e.fieldType && g.includes(e.fieldType))) return; if (!(e.fieldType in e.typeDefLines)) throw new Error(`Cannot find "${e.fieldType}" definition used as "returnType".`); const c = (i) => N.find((y) => y === $(i)), D = /* @__PURE__ */ new Set([]); Object.entries(e.typeDefLines[e.fieldType].lines).forEach( ([i, y]) => { e.typeDefLines[n].lines[i] = { ...l(), ...e.typeDefLines[n].lines[i] }; const u = { ...l(), ...y }, L = c(u.typeDef); let d = ""; if (L) { const r = m(L); D.add([r, L]), d = r; } else if (u.typeDef in e.typeDefLines) { for (const r in e.typeDefLines[u.typeDef].lines) if (r === "id") { const a = c( e.typeDefLines[u.typeDef].lines[r].typeDef ); if (a) { const E = m(a); D.add([E, a]), d = E; } break; } } D.forEach(([r, a]) => { r in e.typeDefLines || (p(e.typeDefLines, "input", r), e.typeDefLines[r].lines = h(a)); }), d ? e.typeDefLines[n].lines[i].typeDef = d : delete e.typeDefLines[n].lines[i], R.forEach((r) => { const a = `${i}_${r}`; e.typeDefLines[f].lines[a] = l(); }); } ); } export { N as VALID_RETURN_TYPES_FOR_WHERE, U as generateDefaultQueryFilterTypeDefs, T as generateGraphqlTypeName, h as generateOperatorInputLines, m as getOperatorInputName, I as getQueryOrderEnumName, O as getWhereOptionsInputName, G as populateArgsDefForDefaultResolver }; //# sourceMappingURL=defaultResolver.js.map