@cran/gql.jm
Version:
Cran/GraphQL Join Monster Utilities
28 lines (27 loc) • 1.05 kB
JavaScript
import { Executable, getExtension } from "@cran/gql.core";
function extendJunctionInclude(includes) {
return function include(args, context) {
return Object.fromEntries(includes.map(function mapIncludes([field, { sqlColumn, sqlDeps, sqlExpr, },]) {
return [field, {
sqlColumn,
sqlDeps,
sqlExpr: sqlExpr instanceof Function
? sqlExpr(args, context) : undefined,
},];
}));
};
}
export function extendJunction(field, args) {
// eslint-disable-next-line no-return-assign
return Object.assign(getExtension(field, "joinMonster", {}).junction = {
sqlTable: new Executable("sqlTable", args.name),
}, {
include: extendJunctionInclude(getExtension(field, "joinMonsterIncludes", [])),
where: args.where
? new Executable("where", args.where)
: undefined,
orderBy: args.order
? new Executable("orderBy", args.order)
: undefined,
});
}