graphql-gene
Version:
Generates automatically an executable schema out of your ORM models
116 lines (115 loc) • 3.58 kB
JavaScript
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