@avonjs/avonjs
Version:
A fluent Node.js API generator.
36 lines (35 loc) • 1.66 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.guessRelationForKey = exports.guessRelation = exports.guessForeignKey = void 0;
const pluralize_1 = require("pluralize");
const Avon_1 = __importDefault(require("../Avon"));
const Exceptions_1 = require("../Exceptions");
const node_assert_1 = __importDefault(require("node:assert"));
/**
* Guess foreign-key name for the given resource.
*/
const guessForeignKey = (resource) => {
const keyName = resource.constructor.name.replace(/[A-Z]/g, (matched, offset) => (offset > 0 ? '_' : '') + matched.toLowerCase());
return `${keyName}_id`;
};
exports.guessForeignKey = guessForeignKey;
/**
* Guess relation name for the given resource.
*/
const guessRelation = (resource, pluralize = false) => {
const relation = resource.constructor.name.replace(/[A-Z]/g, (matched, offset) => (offset > 0 ? matched : matched.toLowerCase()));
return pluralize ? (0, pluralize_1.plural)(relation) : (0, pluralize_1.singular)(relation);
};
exports.guessRelation = guessRelation;
/**
* Guess relation name for the given resource name.
*/
const guessRelationForKey = (resource, pluralize = false) => {
const relatedResource = Avon_1.default.resourceForKey(resource);
(0, node_assert_1.default)(relatedResource, new Exceptions_1.RuntimeException(`Resource '${resource}' not found for relationship ${resource}`));
return (0, exports.guessRelation)(relatedResource, pluralize);
};
exports.guessRelationForKey = guessRelationForKey;