alasql
Version:
AlaSQL.js - JavaScript SQL database library for relational and graph data manipulation with support of localStorage, IndexedDB, and Excel
83 lines (72 loc) • 2.21 kB
JavaScript
/*
//
// Select run-time part for Alasql.js
// Date: 03.11.2014
// (c) 2014, Andrey Gershun
//
*/
yy.Select.prototype.compileDefCols = function(query, databaseid) {
// console.log('defcols');
var defcols = {};
if(this.from) {
this.from.forEach(function(fr){
if(fr instanceof yy.Table) {
var alias = fr.as || fr.tableid;
// console.log(alasql.databases[fr.databaseid || databaseid]);
// console.log(alasql.databases[fr.databaseid || databaseid].tables, fr.tableid);
//console.log(alasql.databases[fr.databaseid || databaseid].tables, fr.tableid);
//console.log(alasql.databases);
var table = alasql.databases[fr.databaseid || databaseid].tables[fr.tableid];
//console.log(table);
if(table.columns) {
table.columns.forEach(function(col){
if(defcols[col.columnid]) {
defcols[col.columnid] = '-'; // Ambigous
} else {
defcols[col.columnid] = alias;
}
});
}
} else if(fr instanceof yy.Select) {
} else if(fr instanceof yy.Search) {
} else if(fr instanceof yy.ParamValue) {
} else if(fr instanceof yy.VarValue) {
} else if(fr instanceof yy.FuncValue) {
} else if(fr instanceof yy.FromData) {
} else {
throw new Error('Unknown type of FROM clause');
};
});
};
if(this.joins) {
this.joins.forEach(function(jn){
// console.log(jn);
if(jn.table) {
var alias = jn.table.tableid;
if(jn.as) alias = jn.as;
var alias = jn.as || jn.table.tableid;
var table = alasql.databases[jn.table.databaseid || databaseid].tables[jn.table.tableid];
// console.log(jn.table.tableid, jn.table.databaseid);
if(table.columns) {
table.columns.forEach(function(col){
if(defcols[col.columnid]) {
defcols[col.columnid] = '-'; // Ambigous
} else {
defcols[col.columnid] = alias;
}
});
}
} else if(jn.select) {
} else if(jn.param) {
} else if(jn.func) {
} else {
throw new Error('Unknown type of FROM clause');
};
});
};
// for(var k in defcols) {
// if(defcols[k] == '-') defcols[k] = undefined;
// }
// console.log(defcols);
return defcols;
}