@cran/gql.jm
Version:
Cran/GraphQL Join Monster Utilities
25 lines (24 loc) • 827 B
JavaScript
import { Executable, MapperKind, createDirective, getExtension } from "@cran/gql.core";
export function withSqlJunctionInclude(name = "sqlJunctionInclude") {
return createDirective(name, {
name: "text!",
link: "text",
deps: "[text!]",
expr: "text",
}, {
[MapperKind.COMPOSITE_FIELD]([directive,], field) {
const include = {
sqlColumn: directive.link || directive.name,
};
if (directive.deps) {
include.sqlDeps = directive.deps;
}
if (directive.expr) {
include.sqlExpr = new Executable("sqlExpr", directive.expr);
}
getExtension(field, "joinMonsterIncludes", []).push([
directive.name, include,
]);
},
});
}