@grapi/server
Version:
Grapi Schema Generator For GraphQL Server
113 lines (112 loc) • 3.57 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const pluralize = __importStar(require("pluralize"));
const constants_1 = require("../constants");
const lodash_1 = require("../lodash");
const mutation_1 = require("../plugins/mutation");
class Model {
name;
fields;
namings;
dataSource;
resolver = {};
metadata = {};
createMutationFactory = new mutation_1.MutationFactory();
updateMutationFactory = new mutation_1.MutationFactory();
constructor({ name, fields }) {
this.name = name;
const key = pluralize.singular(name.toLowerCase());
this.namings = {
plural: pluralize.plural(key),
singular: key,
capitalSingular: (0, lodash_1.capitalize)(key),
};
this.fields = fields || {};
}
appendField(name, field) {
this.fields[name] = field;
}
getField(name) {
return this.fields[name];
}
getFields() {
return this.fields;
}
getName() {
return this.name;
}
getNamings() {
return this.namings;
}
getTypename() {
return this.namings.capitalSingular;
}
getUniqueFields() {
return (0, lodash_1.pickBy)(this.getFields(), field => field.isUnique());
}
getMetadata(key) {
return this.metadata[key];
}
setMetadata(key, value) {
return this.metadata[key] = value;
}
setFieldResolver(field, resolver) {
this.resolver[field] = resolver;
}
overrideResolver(resolver) {
this.resolver = resolver;
}
mergeResolver(resolver) {
this.resolver = {
...this.resolver,
...resolver,
};
}
getResolver() {
return (0, lodash_1.isEmpty)(this.resolver) ? null : this.resolver;
}
setDataSource(dataSource) {
this.dataSource = dataSource;
}
getDataSource() {
return this.dataSource;
}
getDirectives(action, directivesOnAction = '') {
(0, lodash_1.forOwn)(this.getMetadata(constants_1.MODEL_DIRECTIVES) || {}, (actions, directive) => {
if ((0, lodash_1.find)(actions, { value: action })) {
directivesOnAction = directivesOnAction.concat(` @${directive}`);
}
});
return directivesOnAction;
}
getCreateMutationFactory = () => {
return this.createMutationFactory;
};
getUpdateMutationFactory = () => {
return this.updateMutationFactory;
};
}
exports.default = Model;