UNPKG

@avonjs/avonjs

Version:

A fluent Node.js API generator.

36 lines (35 loc) 1.66 kB
"use strict"; 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;