jaydata
Version:
Cross-platform HTML5 data-management, JavaScript Language Query (JSLQ) support for OData, SQLite, WebSQL, IndexedDB, YQL and Facebook (packaged for Node.JS)
34 lines (29 loc) • 1.41 kB
JavaScript
;
var _core = require('../../../../core.js');
var _core2 = _interopRequireDefault(_core);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
(0, _core.$C)('$data.storageProviders.oData.oDataPagingCompiler', _core2.default.Expressions.EntityExpressionVisitor, null, {
constructor: function constructor(provider) {
this.provider = provider;
},
compile: function compile(expression, context) {
this.Visit(expression, context);
},
VisitPagingExpression: function VisitPagingExpression(expression, context) {
var pagingContext = { data: "" };
this.Visit(expression.amount, pagingContext);
switch (expression.nodeType) {
case _core2.default.Expressions.ExpressionType.Skip:
context['$skip'] = pagingContext.data;break;
case _core2.default.Expressions.ExpressionType.Take:
context['$top'] = pagingContext.data;break;
default:
_core.Guard.raise("Not supported nodeType");break;
}
},
VisitConstantExpression: function VisitConstantExpression(expression, context) {
var typeName = _core.Container.resolveName(expression.type);
var converter = this.provider.fieldConverter.escape[typeName];
context.data += converter ? converter(expression.value) : expression.value;
}
});