UNPKG

pg-template-tag

Version:

ECMAScript 6 (2015) template tag function to write queries for node-postgres.

90 lines (77 loc) 2.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); exports.default = SQLTag; exports.sqlLiteral = sqlLiteral; exports.join = join; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var SqlLiteral = function () { function SqlLiteral(parts, values) { _classCallCheck(this, SqlLiteral); this._parts = parts; this._values = values; } _createClass(SqlLiteral, [{ key: "_resolve", value: function _resolve() { if (this._resolved === undefined) { var context = { fragments: new Map(), values: [] }; var text = this._resolveFor(context); this._resolved = { text: text, values: context.values }; } return this._resolved; } }, { key: "_resolveFor", value: function _resolveFor(context) { var _this = this; var fragment = context.fragments.get(this); if (fragment === undefined) { fragment = this._parts.reduce(function (prev, curr, i) { var child = _this._values[i - 1]; var mid = void 0; if (child instanceof SqlLiteral) { mid = child._resolveFor(context); } else { context.values.push(child); mid = '$' + context.values.length; } return prev + mid + curr; }); context.fragments.set(this, fragment); } return fragment; } }, { key: "text", get: function get() { return this._resolve().text; } }, { key: "values", get: function get() { return this._resolve().values; } }]); return SqlLiteral; }(); function SQLTag(parts) { for (var _len = arguments.length, values = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { values[_key - 1] = arguments[_key]; } return new SqlLiteral(parts, values); } function sqlLiteral(value) { return new SqlLiteral([value]); } function join(array, separator) { separator = separator || ","; var parts = [""]; for (var i = 0; i < array.length - 1; i++) { parts.push(separator); } parts.push(""); return new SqlLiteral(parts, array); }