naystack
Version:
A stack built with tight Next + Drizzle + GraphQL
117 lines (115 loc) • 2.93 kB
JavaScript
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __decorateClass = (decorators, target, key, kind) => {
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
for (var i = decorators.length - 1, decorator; i >= 0; i--)
if (decorator = decorators[i])
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
if (kind && result) __defProp(target, key, result);
return result;
};
// src/graphql/utils.ts
import {
Arg,
Authorized,
Ctx,
FieldResolver,
Mutation,
Query,
Resolver,
Root
} from "type-graphql";
function query(fn, options) {
return { ...options, fn };
}
function field(fn, options) {
return { ...options, fn };
}
function QueryLibrary(queries) {
let GeneratedResolver = class {
};
GeneratedResolver = __decorateClass([
Resolver()
], GeneratedResolver);
for (const key in queries) {
const def = queries[key];
if (!def) continue;
Object.defineProperty(GeneratedResolver.prototype, key, {
value: async function(ctx, data) {
return def.fn(ctx, data);
},
writable: false
});
const descriptor = Object.getOwnPropertyDescriptor(
GeneratedResolver.prototype,
key
);
if (def.mutation) {
Mutation(() => def.output, def.outputOptions)(
GeneratedResolver.prototype,
key,
descriptor
);
} else {
Query(() => def.output, def.outputOptions)(
GeneratedResolver.prototype,
key,
descriptor
);
}
Ctx()(GeneratedResolver.prototype, key, 0);
if (def.input) {
Arg("input", () => def.input || String, def.inputOptions)(
GeneratedResolver.prototype,
key,
1
);
}
}
return GeneratedResolver;
}
function FieldLibrary(type, queries) {
let GeneratedResolver = class {
};
GeneratedResolver = __decorateClass([
Resolver(() => type)
], GeneratedResolver);
for (const key in queries) {
const def = queries[key];
if (!def) continue;
Object.defineProperty(GeneratedResolver.prototype, key, {
value: async function(root, ctx, input) {
return def.fn(root, ctx, input);
},
writable: false
});
const descriptor = Object.getOwnPropertyDescriptor(
GeneratedResolver.prototype,
key
);
if (def.authorized) {
Authorized()(GeneratedResolver, key);
}
Root()(GeneratedResolver.prototype, key, 0);
FieldResolver(() => def.output, def.outputOptions)(
GeneratedResolver.prototype,
key,
descriptor
);
Ctx()(GeneratedResolver.prototype, key, 1);
if (def.input) {
Arg("input", () => def.input || String, def.inputOptions)(
GeneratedResolver.prototype,
key,
2
);
}
}
return GeneratedResolver;
}
export {
FieldLibrary,
QueryLibrary,
field,
query
};