GeoKnow/Jassa-Core

View on GitHub
lib/service/table_service/TableServiceQuery.js

Summary

Maintainability
A
0 mins
Test Coverage
var Class = require('../../ext/Class');
var TableService = require('./TableService');
var TableServiceUtils = require('../TableServiceUtils');
var shared = require('../../util/shared');
var Promise = shared.Promise;

var TableServiceQuery = Class.create(TableService, {
    /**
     * TODO Possibly add primaryCountLimit - i.e. a limit that is never counted beyond, even if the backend might be fast enough
     */
    initialize: function(sparqlService, query, timeoutInMillis, secondaryCountLimit) {
        this.sparqlService = sparqlService;
        this.query = query;
        this.timeoutInMillis = timeoutInMillis || 3000;
        this.secondaryCountLimit = secondaryCountLimit || 1000;
    },

    fetchSchema: function() {
        var schema = {
            colDefs: TableServiceUtils.createNgGridOptionsFromQuery(this.query),
        };

        return new Promise(function(resolve) {
            resolve(schema);
        });
    },

    fetchCount: function() {
        var result = TableServiceUtils.fetchCount(this.sparqlService, this.query, this.timeoutInMillis, this.secondaryCountLimit);
        return result;
    },

    fetchData: function(limit, offset) {
        var result = TableServiceUtils.fetchData(this.sparqlService, this.query, limit, offset);
        return result;
    },
});

module.exports = TableServiceQuery;