UNPKG

join-monster

Version:

A GraphQL to SQL query execution layer for batch data fetching.

38 lines (37 loc) 1.23 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _generatorics = _interopRequireDefault(require("generatorics")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } class AliasNamespace { constructor(minify, aliasPrefix) { this.minify = !!minify; this.aliasPrefix = aliasPrefix ?? ''; this.mininym = _generatorics.default.baseNAll('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ#$'); this.usedTableAliases = new Set(); this.columnAssignments = {}; } generate(type, name) { if (this.minify) { if (type === 'table') { return `${this.aliasPrefix}${this.mininym.next().value.join('')}`; } if (!this.columnAssignments[name]) { this.columnAssignments[name] = this.mininym.next().value.join(''); } return this.columnAssignments[name]; } if (type === 'column') { return name; } name = this.aliasPrefix + name.replace(/\s+/g, '').replace(/[^a-zA-Z0-9]/g, '_').slice(0, 10); while (this.usedTableAliases.has(name)) { name += '$'; } this.usedTableAliases.add(name); return name; } } exports.default = AliasNamespace;