UNPKG

@jmaitrehenry/elastic-builder

Version:

A JavaScript implementation of the elasticsearch Query DSL

82 lines (66 loc) 2.27 kB
'use strict'; var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var isNil = require('lodash.isnil'); var validType = ['boolean', 'composite', 'date', 'double', 'geo_point', 'ip', 'keyword', 'long', 'lookup']; var RuntimeField = function () { function RuntimeField(type, script, name) { (0, _classCallCheck3.default)(this, RuntimeField); this._body = {}; this._name = name; this._isTypeSet = false; this._isScriptSet = false; if (!isNil(type)) { this.type(type); } if (!isNil(script)) { this.script(script); } } (0, _createClass3.default)(RuntimeField, [{ key: 'name', value: function name(_name) { this._name = _name; } }, { key: 'script', value: function script(_script) { this._body.script = { source: _script }; this._isScriptSet = true; } }, { key: 'type', value: function type(_type) { var typeLower = _type.toLowerCase(); if (!validType.includes(typeLower)) { throw new Error('`type` must be one of ' + validType.join(', ')); } this._body.type = typeLower; this._isTypeSet = true; } /** * Override default `toJSON` to return DSL representation for the `script`. * * @override * @returns {Object} returns an Object which maps to the elasticsearch query DSL */ }, { key: 'toJSON', value: function toJSON() { if (!this._isTypeSet) { throw new Error('`type` should be set'); } if (!this._isScriptSet) { throw new Error('`script` should be set'); } return this._body; } }]); return RuntimeField; }(); module.exports = RuntimeField;