@cran/gql.jm
Version:
Cran/GraphQL Join Monster Utilities
23 lines (22 loc) • 974 B
JavaScript
import { Executable, MapperKind, createDirective } from "@cran/gql.core";
export function withSqlResolverRaw(name = "sqlResolverRaw") {
return createDirective(name, {
query: "text!",
field: "text",
value: "text",
}, {
[]([directive,], field) {
field.resolve = async function resolver(source, args, context, info) {
const sql = new Executable("sqlResolverRawQuery", directive.query)(source, args, context, info);
if (context.ctx?.queries) {
context.ctx.queries.push(sql);
}
const { rows, } = await context.query(sql);
const result = directive.field
? rows[0]?.[directive.field] : rows;
return directive.value
? new Executable("sqlResolverRawValue", directive.value)(result, args, context, info) : result;
};
},
});
}