UNPKG

@cran/gql.jm

Version:

Cran/GraphQL Join Monster Utilities

31 lines (30 loc) 1.18 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.markComposite = exports.withSqlComposite = void 0; const graphql_1 = require("graphql"); const gql_core_1 = require("@cran/gql.core"); function withSqlComposite(name = "sqlComposite") { return (0, gql_core_1.createDirective)(name, {}, { [gql_core_1.MapperKind.COMPOSITE_TYPE](_, composite) { Object.assign((0, gql_core_1.getExtension)(composite, "joinMonster", {}), { composite: true, }); }, }); } exports.withSqlComposite = withSqlComposite; function markComposite(field, name) { if (!(0, gql_core_1.getExtension)((0, graphql_1.getNamedType)(field.type), "joinMonster", {}).composite) { return; } const ext = (0, gql_core_1.getExtension)(field, "joinMonster", {}); if (ext.composited) { return; } ext.composited = true; const expr = ext.sqlExpr; ext.sqlExpr = function composite(table, args, context, ast) { const column = expr ? expr(table, args, context, ast) : `${table}."${ext.sqlColumn || name}"`; return `to_json(${column})`; }; } exports.markComposite = markComposite;