Sha256: 3c6ae7ce11a81098d4550e4ad9ebfce36495e0486c2f4e0c123bf5ee01ade4f7

Contents?: true

Size: 1.82 KB

Versions: 18

Compression:

Stored size: 1.82 KB

Contents

!(angular => {
  'use strict';

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

    return class SchemaCompleter {

      constructor() {
        this.identifierRegexps = [/[a-zA-Z_0-9\$\-\u00A2-\uFFFF]/, /\./]
        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) {
        let parsedSql = aceSqlParse(session, pos);
        let currentClause = parsedSql.currentClause;
        let isSubstring = this._makeIsSubstringFn(parsedSql.fromClause);
        let matchingTables = []
        if (prefix != '') {
          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

18 entries across 9 versions & 1 rubygems

Version Path
aleph_analytics-0.4.9.pre.dev app/assets/javascripts/angular/services/lib/schema_completer.js.es6
aleph_analytics-0.4.9.pre.dev public/assets/angular/services/lib/schema_completer.js-45c62c500021d3e3a74d931c5a8d3dc2.es6
aleph_analytics-0.4.8 app/assets/javascripts/angular/services/lib/schema_completer.js.es6
aleph_analytics-0.4.8 public/assets/angular/services/lib/schema_completer.js-45c62c500021d3e3a74d931c5a8d3dc2.es6
aleph_analytics-0.4.7 public/assets/angular/services/lib/schema_completer.js-45c62c500021d3e3a74d931c5a8d3dc2.es6
aleph_analytics-0.4.7 app/assets/javascripts/angular/services/lib/schema_completer.js.es6
aleph_analytics-0.4.4 app/assets/javascripts/angular/services/lib/schema_completer.js.es6
aleph_analytics-0.4.4 public/assets/angular/services/lib/schema_completer.js-45c62c500021d3e3a74d931c5a8d3dc2.es6
aleph_analytics-0.4.2 public/assets/angular/services/lib/schema_completer.js-45c62c500021d3e3a74d931c5a8d3dc2.es6
aleph_analytics-0.4.2 app/assets/javascripts/angular/services/lib/schema_completer.js.es6
aleph_analytics-0.4.1 public/assets/angular/services/lib/schema_completer.js-45c62c500021d3e3a74d931c5a8d3dc2.es6
aleph_analytics-0.4.1 app/assets/javascripts/angular/services/lib/schema_completer.js.es6
aleph_analytics-0.3.0 public/assets/angular/services/lib/schema_completer.js-45c62c500021d3e3a74d931c5a8d3dc2.es6
aleph_analytics-0.3.0 app/assets/javascripts/angular/services/lib/schema_completer.js.es6
aleph_analytics-0.2.0 app/assets/javascripts/angular/services/lib/schema_completer.js.es6
aleph_analytics-0.2.0 public/assets/angular/services/lib/schema_completer.js-45c62c500021d3e3a74d931c5a8d3dc2.es6
aleph_analytics-0.1.0 public/assets/angular/services/lib/schema_completer.js-45c62c500021d3e3a74d931c5a8d3dc2.es6
aleph_analytics-0.1.0 app/assets/javascripts/angular/services/lib/schema_completer.js.es6