Sha256: 18a2463aa9a5365906564bcbf4ff8b5bfd8497b5ecef88e52b2a1501711f3157

Contents?: true

Size: 1.75 KB

Versions: 14

Compression:

Stored size: 1.75 KB

Contents

!(angular => {
  'use strict';

  function SchemaCompleterImports(aceSqlParse, SchemaColumns, MatcherRunner, SCHEMA_MATCHERS) {

    return class SchemaCompleter {

      constructor() {
        this._columns = new SchemaColumns();
        this.loadColumnData();
      }

      loadColumnData() {
        this._columns.initCollection().then(columns => {
          this._rawColumnsData = columns;
          this._matcherRunner = new MatcherRunner(SCHEMA_MATCHERS, _.map(columns, o => o.item));
        });
      }

      isLoaded() {
        return _.exists(this._rawColumnsData) && this._rawColumnsData.length > 0;
      }

      getCompletions(editor, session, pos, prefix, callback) {
        if (prefix.length === 0) { callback(null, []); return; }

        let parsedSql = aceSqlParse(session, pos);
        let currentClause = parsedSql.currentClause;
        let isSubstring = this._makeIsSubstringFn(parsedSql.fromClause);
        let matchingTables = _(this._columns.uniqueTables).filter(isSubstring);
        let matchingSchemas = _(this._columns.uniqueSchemas).filter(isSubstring);

        if (_.exists(this._matcherRunner)) {
          let matches = this._matcherRunner.execute(currentClause, {
            tableRestrict: matchingTables,
            schemaRestrict: matchingSchemas
          }, prefix);

          callback(null, matches);
        }
      }

      // private methods

      _makeIsSubstringFn(check) {
        return string => _.exists(check) ? check.indexOf(string) > -1 : false;
      }
    };
  }


  SchemaCompleterImports.$inject = ['aceSqlParse', 'SchemaColumns', 'MatcherRunner', 'SCHEMA_MATCHERS'];
  angular.module('alephServices.schemaCompleter', ['aleph.schemaCompleterConfig'])
    .service('SchemaCompleter', SchemaCompleterImports);

}(angular));

Version data entries

14 entries across 7 versions & 1 rubygems

Version Path
aleph_analytics-0.0.6 public/assets/angular/services/lib/schema_completer.js-d04d49642967fd9f8e2c95e0df81f2ae.es6
aleph_analytics-0.0.6 app/assets/javascripts/angular/services/lib/schema_completer.js.es6
aleph_analytics-0.0.5 public/assets/angular/services/lib/schema_completer.js-d04d49642967fd9f8e2c95e0df81f2ae.es6
aleph_analytics-0.0.5 app/assets/javascripts/angular/services/lib/schema_completer.js.es6
aleph_analytics-0.0.4 app/assets/javascripts/angular/services/lib/schema_completer.js.es6
aleph_analytics-0.0.4 public/assets/angular/services/lib/schema_completer.js-d04d49642967fd9f8e2c95e0df81f2ae.es6
aleph_analytics-0.0.3 public/assets/angular/services/lib/schema_completer.js-d04d49642967fd9f8e2c95e0df81f2ae.es6
aleph_analytics-0.0.3 app/assets/javascripts/angular/services/lib/schema_completer.js.es6
aleph_analytics-0.0.2 public/assets/angular/services/lib/schema_completer.js-d04d49642967fd9f8e2c95e0df81f2ae.es6
aleph_analytics-0.0.2 app/assets/javascripts/angular/services/lib/schema_completer.js.es6
aleph_analytics-0.0.1.alpha public/assets/angular/services/lib/schema_completer.js-d04d49642967fd9f8e2c95e0df81f2ae.es6
aleph_analytics-0.0.1.alpha app/assets/javascripts/angular/services/lib/schema_completer.js.es6
aleph_analytics-0.0.0.alpha app/assets/javascripts/angular/services/lib/schema_completer.js.es6
aleph_analytics-0.0.0.alpha public/assets/angular/services/lib/schema_completer.js-d04d49642967fd9f8e2c95e0df81f2ae.es6