Skip to content

Commit

Permalink
stats.primaryKey con nombre transformado (#23)
Browse files Browse the repository at this point in the history
  • Loading branch information
diegoefe committed Nov 7, 2016
1 parent 289bb91 commit 4e5107d
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 21 deletions.
18 changes: 8 additions & 10 deletions lib/txt-to-sql.js
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ function verifyInputParams(info){
info.quote = info.outputEngine.quote;
info.transform = function(objectName) { return formatFunctions[info.opts.columnNamesFormat](objectName); };
info.nameColumn = function(columnInfo) {
var name = columnInfo.name+" "+columnInfo.typeInfo.typeName;
var name = info.quote(columnInfo.name)+" "+columnInfo.typeInfo.typeName;
if(! columnInfo.typeInfo.useLength) { return name; }
var scale = parseInt(columnInfo.maxScale!==null?columnInfo.maxScale:0);
var precision = parseInt(columnInfo.maxLength)+scale+(scale>0?1:0);
Expand Down Expand Up @@ -348,7 +348,7 @@ function verifyColumnCount(info) {
}

function transformNames(info) {
info.formatedTableName = info.transform(info.tableName);
info.quotedTableName = info.transform(info.tableName);
info.columnsInfo.forEach(function(column){ column.name=info.transform(column.name); });
return info;
}
Expand Down Expand Up @@ -498,23 +498,22 @@ function determinePrimaryKey(info) {
}

function quoteNames(info) {
info.formatedTableName = info.quote(info.formatedTableName);
info.columnsInfo.forEach(function(column){ column.name=info.quote(column.name); });
info.quotedTableName = info.quote(info.quotedTableName);
if(info.primaryKey) { info.primaryKey = info.primaryKey.map(function(pk) { return info.quote(pk); }); }
return info;
}

function generateDropTable(info) {
info.scripts=[];
if(info.opts.addDropTable) {
info.scripts.push({type:'drop table', sql: info.outputEngine.dropTable(info.formatedTableName)+';\n'});
info.scripts.push({type:'drop table', sql: info.outputEngine.dropTable(info.quotedTableName)+';\n'});
}
return info;
}

function generateCreateScript(info){
var scriptLines = [];
scriptLines.push("create table "+info.formatedTableName+" (");
scriptLines.push("create table "+info.quotedTableName+" (");
var scriptLinesForTableColumns = [];
info.columnsInfo.forEach(function(columnInfo){
scriptLinesForTableColumns.push(margin+info.nameColumn(columnInfo));
Expand All @@ -536,8 +535,8 @@ function removeIgnoredLines(info) {
}

function createInsertInto(info) {
return "insert into "+info.formatedTableName+" ("+info.columnsInfo.map(function(columnInfo){
return columnInfo.name;
return "insert into "+info.quotedTableName+" ("+info.columnsInfo.map(function(columnInfo){
return info.quote(columnInfo.name);
}).join(', ')+") values";
}

Expand Down Expand Up @@ -668,11 +667,10 @@ function finalizeStats(info) {
info.stats.textColumns = 0;
info.stats.nullColumns = 0;
info.stats.primaryKey = [];
var names = info.headers.split(info.opts.separator);
info.columnsInfo.forEach(function(column, index) {
if(column.typeInfo.isTextColumn) { ++info.stats.textColumns; }
if(column.hasNullValues) { ++info.stats.nullColumns; }
if(column.inPrimaryKey) { info.stats.primaryKey.push(names[index]); }
if(column.inPrimaryKey) { info.stats.primaryKey.push(column.name); }
});
return info;
}
Expand Down
2 changes: 1 addition & 1 deletion test/fixtures/pk-custom.result.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,4 @@ stats:
columns: 4
textColumns: 4
nullColumns: 0
primaryKey: [X,Y]
primaryKey: [x,y]
18 changes: 8 additions & 10 deletions web/txt-to-sql.js
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ function verifyInputParams(info){
info.quote = info.outputEngine.quote;
info.transform = function(objectName) { return formatFunctions[info.opts.columnNamesFormat](objectName); };
info.nameColumn = function(columnInfo) {
var name = columnInfo.name+" "+columnInfo.typeInfo.typeName;
var name = info.quote(columnInfo.name)+" "+columnInfo.typeInfo.typeName;
if(! columnInfo.typeInfo.useLength) { return name; }
var scale = parseInt(columnInfo.maxScale!==null?columnInfo.maxScale:0);
var precision = parseInt(columnInfo.maxLength)+scale+(scale>0?1:0);
Expand Down Expand Up @@ -348,7 +348,7 @@ function verifyColumnCount(info) {
}

function transformNames(info) {
info.formatedTableName = info.transform(info.tableName);
info.quotedTableName = info.transform(info.tableName);
info.columnsInfo.forEach(function(column){ column.name=info.transform(column.name); });
return info;
}
Expand Down Expand Up @@ -498,23 +498,22 @@ function determinePrimaryKey(info) {
}

function quoteNames(info) {
info.formatedTableName = info.quote(info.formatedTableName);
info.columnsInfo.forEach(function(column){ column.name=info.quote(column.name); });
info.quotedTableName = info.quote(info.quotedTableName);
if(info.primaryKey) { info.primaryKey = info.primaryKey.map(function(pk) { return info.quote(pk); }); }
return info;
}

function generateDropTable(info) {
info.scripts=[];
if(info.opts.addDropTable) {
info.scripts.push({type:'drop table', sql: info.outputEngine.dropTable(info.formatedTableName)+';\n'});
info.scripts.push({type:'drop table', sql: info.outputEngine.dropTable(info.quotedTableName)+';\n'});
}
return info;
}

function generateCreateScript(info){
var scriptLines = [];
scriptLines.push("create table "+info.formatedTableName+" (");
scriptLines.push("create table "+info.quotedTableName+" (");
var scriptLinesForTableColumns = [];
info.columnsInfo.forEach(function(columnInfo){
scriptLinesForTableColumns.push(margin+info.nameColumn(columnInfo));
Expand All @@ -536,8 +535,8 @@ function removeIgnoredLines(info) {
}

function createInsertInto(info) {
return "insert into "+info.formatedTableName+" ("+info.columnsInfo.map(function(columnInfo){
return columnInfo.name;
return "insert into "+info.quotedTableName+" ("+info.columnsInfo.map(function(columnInfo){
return info.quote(columnInfo.name);
}).join(', ')+") values";
}

Expand Down Expand Up @@ -668,11 +667,10 @@ function finalizeStats(info) {
info.stats.textColumns = 0;
info.stats.nullColumns = 0;
info.stats.primaryKey = [];
var names = info.headers.split(info.opts.separator);
info.columnsInfo.forEach(function(column, index) {
if(column.typeInfo.isTextColumn) { ++info.stats.textColumns; }
if(column.hasNullValues) { ++info.stats.nullColumns; }
if(column.inPrimaryKey) { info.stats.primaryKey.push(names[index]); }
if(column.inPrimaryKey) { info.stats.primaryKey.push(column.name); }
});
return info;
}
Expand Down

0 comments on commit 4e5107d

Please sign in to comment.