jaydata
Version:
Cross-platform HTML5 data-management, JavaScript Language Query (JSLQ) support for OData, SQLite, WebSQL, IndexedDB, YQL and Facebook (packaged for Node.JS)
63 lines (50 loc) • 2.12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _index = require('../TypeSystem/index.js');
var _index2 = _interopRequireDefault(_index);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
(0, _index.$C)('$data.Query', null, null, {
constructor: function constructor(expression, defaultType, context) {
///<param name="context" type="$data.EntityContext" />
///<field name="expression" type="$data.Expressions.ExpressionNode" />
///<field name="context" type="$data.EntityContext" />
this.expression = expression;
this.context = context;
//TODO: expressions get as JSON string?!
this.expressions = expression;
this.defaultType = defaultType;
this.result = [];
this.rawDataList = [];
this.modelBinderConfig = {};
this.context = context;
},
rawDataList: { dataType: "Array" },
result: { dataType: "Array" },
resultType: {},
buildResultSet: function buildResultSet(ctx) {
var converter = new _index2.default.ModelBinder(this.context);
this.result = converter.call(this.rawDataList, this.modelBinderConfig);
return;
},
getEntitySets: function getEntitySets() {
var ret = [];
var ctx = this.context;
var fn = function fn(expression) {
if (expression instanceof _index2.default.Expressions.EntitySetExpression) {
if (ctx._entitySetReferences[expression.elementType.name] && ret.indexOf(ctx._entitySetReferences[expression.elementType.name]) < 0) ret.push(ctx._entitySetReferences[expression.elementType.name]);
}
if (expression.source) fn(expression.source);
if (expression.members) {
for (var i = 0; i < expression.members.length; i++) {
fn(expression.members[i].expression);
}
}
};
fn(this.expression);
return ret;
}
}, null);
exports.default = _index2.default;
module.exports = exports['default'];