@stormzx/sqlbuilder
Version:
A simple sql builder.
76 lines (55 loc) • 2.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _condition = _interopRequireDefault(require("./_condition"));
var _lodash = _interopRequireWildcard(require("lodash"));
var _utils = require("../../utils");
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
class JoinFragment extends _condition.default {
#builder = null;
#table;
#called = false;
#type;
constructor(builder) {
super();
this.#builder = builder;
}
get priority() {
return 300;
}
join(tablename, as) {
return this.#join('', tablename, as);
}
leftJoin(tablename, as) {
return this.#join('left', tablename, as);
}
rightJoin(tablename, as) {
return this.#join('right', tablename, as);
}
innerJoin(tablename, as) {
return this.#join('inner', tablename, as);
}
#join(type, tablename, as) {
let target = this.#builder.getFragment('join');
if (target.#called) {
target = new JoinFragment(this.#builder);
this.#builder.setFragment('join', target);
return target.#join(...arguments);
}
this.#called = true;
this.#type = type;
this.#table = (0, _utils.table)(tablename, as);
return this;
}
on() {
return this.and(...arguments);
}
get sql() {
return `${this.#type} join ${this.#table} on ${super.sql}`.replace(/^\s+/, '');
}
}
exports.default = JoinFragment;