UNPKG

alasql

Version:

AlaSQL.js - JavaScript SQL database library for relational and graph data manipulation with support of localStorage, IndexedDB, and Excel

64 lines (57 loc) 1.61 kB
/* // // CREATE TABLE for Alasql.js // Date: 03.11.2014 // (c) 2014, Andrey Gershun // */ yy.CreateIndex = function (params) { return yy.extend(this, params); } yy.CreateIndex.prototype.toString = function() { var s = 'CREATE'; if(this.unique) s+=' UNIQUE'; s += ' INDEX ' + this.indexid + " ON "+this.table.toString(); s += "("+this.columns.toString()+")"; return s; } // CREATE TABLE yy.CreateIndex.prototype.execute = function (databaseid,params,cb) { // var self = this; var db = alasql.databases[databaseid]; var tableid = this.table.tableid; var table = db.tables[tableid]; var indexid = this.indexid; if(this.unique) { var rightfns = this.columns.map(function(colid){return "r[\'"+colid+"\']"}).join("+'`'+"); table.uniqdefs[indexid] = { rightfns: rightfns }; var ux = table.uniqs[indexid] = {}; if(table.data.length > 0) { for(var i=0, ilen=table.data.length; i<ilen;i++) { var addr = rightfns(table.data[i]); if(!ux[addr]) { ux[addr] = {num:0}; }; ux[addr].num++; } } } else { var rightfns = this.columns.map(function(colid){return "r[\'"+colid+"\']"}).join("+'`'+"); var hh = hash(rightfns); table.inddefs[indexid] = {rightfns:rightfns, hh:hh}; table.indices[hh] = {}; var ix = table.indices[hh] = {}; if(table.data.length > 0) { for(var i=0, ilen=table.data.length; i<ilen;i++) { var addr = rightfns(table.data[i]); if(!ix[addr]) { ix[addr] = []; }; ix[addr].push(table.data[i]); } } }; var res = 1; if(cb) res = cb(res); return res; };