@cran/gql.jm
Version:
Cran/GraphQL Join Monster Utilities
24 lines (23 loc) • 850 B
JavaScript
import { markComposite } from "./withSqlComposite";
import { MapperKind, createDirective, getExtension } from "@cran/gql.core";
export function withSqlTable(name = "sqlTable") {
return createDirective(name, {
name: "text!",
key: "[text!]",
fetch: "[text!]",
}, {
[MapperKind.COMPOSITE_TYPE]([directive,], composite) {
Object.assign(getExtension(composite, "joinMonster", {}), {
sqlTable: directive.name,
uniqueKey: directive.key || "id",
alwaysFetch: directive.fetch,
});
if ("getFields" in composite) {
const fields = composite.getFields();
for (const fieldName in fields) {
markComposite(fields[fieldName], fieldName);
}
}
},
});
}