code cleanup
This commit is contained in:
parent
9b3be6a7a9
commit
69a2362890
@ -112,9 +112,7 @@ export class Engine {
|
||||
});
|
||||
}
|
||||
private createHandlebarsHelpers() {
|
||||
Handlebars.registerHelper("curly", open => {
|
||||
return open ? "{" : "}";
|
||||
});
|
||||
Handlebars.registerHelper("curly", open => (open ? "{" : "}"));
|
||||
Handlebars.registerHelper("toEntityName", str => {
|
||||
let retStr = "";
|
||||
switch (this.Options.convertCaseEntity) {
|
||||
@ -173,38 +171,20 @@ export class Engine {
|
||||
}
|
||||
return retStr;
|
||||
});
|
||||
Handlebars.registerHelper("toLowerCase", str => {
|
||||
return str.toLowerCase();
|
||||
});
|
||||
Handlebars.registerHelper("toLowerCase", str => str.toLowerCase());
|
||||
Handlebars.registerHelper("toLazy", str => {
|
||||
if (this.Options.lazy) return `Promise<${str}>`;
|
||||
else return str;
|
||||
});
|
||||
Handlebars.registerHelper({
|
||||
eq: function(v1, v2) {
|
||||
return v1 === v2;
|
||||
},
|
||||
ne: function(v1, v2) {
|
||||
return v1 !== v2;
|
||||
},
|
||||
lt: function(v1, v2) {
|
||||
return v1 < v2;
|
||||
},
|
||||
gt: function(v1, v2) {
|
||||
return v1 > v2;
|
||||
},
|
||||
lte: function(v1, v2) {
|
||||
return v1 <= v2;
|
||||
},
|
||||
gte: function(v1, v2) {
|
||||
return v1 >= v2;
|
||||
},
|
||||
and: function(v1, v2) {
|
||||
return v1 && v2;
|
||||
},
|
||||
or: function(v1, v2) {
|
||||
return v1 || v2;
|
||||
}
|
||||
eq: (v1, v2) => v1 === v2,
|
||||
ne: (v1, v2) => v1 !== v2,
|
||||
lt: (v1, v2) => v1 < v2,
|
||||
gt: (v1, v2) => v1 > v2,
|
||||
lte: (v1, v2) => v1 <= v2,
|
||||
gte: (v1, v2) => v1 >= v2,
|
||||
and: (v1, v2) => v1 && v2,
|
||||
or: (v1, v2) => v1 || v2
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -9,12 +9,9 @@ export class NamingStrategy extends AbstractNamingStrategy {
|
||||
dbModel: DatabaseModel
|
||||
): string {
|
||||
let isRelationToMany = relation.isOneToMany || relation.isManyToMany;
|
||||
let ownerEntity = dbModel.entities.filter(v => {
|
||||
return v.EntityName == relation.ownerTable;
|
||||
})[0];
|
||||
let referencedEntity = dbModel.entities.filter(v => {
|
||||
return v.EntityName == relation.relatedTable;
|
||||
})[0];
|
||||
let ownerEntity = dbModel.entities.find(
|
||||
v => v.EntityName == relation.ownerTable
|
||||
)!;
|
||||
|
||||
let columnName =
|
||||
columnOldName[0].toLowerCase() +
|
||||
|
@ -14,7 +14,6 @@ export function LogError(
|
||||
);
|
||||
if (isABug && !errObject) errObject = new Error().stack;
|
||||
if (!!errObject) console.error(errObject);
|
||||
// process.abort();
|
||||
}
|
||||
export function packageVersion() {
|
||||
return `${(<any>packagejson).name}@${(<any>packagejson).version}`;
|
||||
|
@ -17,37 +17,27 @@ export abstract class AbstractDriver {
|
||||
let newName = this.namingStrategy.columnName(column.tsName);
|
||||
entity.Indexes.forEach(index => {
|
||||
index.columns
|
||||
.filter(column2 => {
|
||||
return column2.name == column.tsName;
|
||||
})
|
||||
.forEach(column2 => {
|
||||
column2.name = newName;
|
||||
});
|
||||
.filter(column2 => column2.name == column.tsName)
|
||||
.forEach(column2 => (column2.name = newName));
|
||||
});
|
||||
dbModel.entities.forEach(entity2 => {
|
||||
entity2.Columns.forEach(column2 => {
|
||||
column2.relations
|
||||
.filter(relation => {
|
||||
return (
|
||||
.filter(
|
||||
relation =>
|
||||
relation.relatedTable ==
|
||||
entity.EntityName &&
|
||||
relation.relatedColumn == column.tsName
|
||||
);
|
||||
})
|
||||
.map(v => {
|
||||
v.relatedColumn = newName;
|
||||
});
|
||||
)
|
||||
.map(v => (v.relatedColumn = newName));
|
||||
column2.relations
|
||||
.filter(relation => {
|
||||
return (
|
||||
.filter(
|
||||
relation =>
|
||||
relation.relatedTable ==
|
||||
entity.EntityName &&
|
||||
relation.ownerColumn == column.tsName
|
||||
);
|
||||
})
|
||||
.map(v => {
|
||||
v.ownerColumn = newName;
|
||||
});
|
||||
)
|
||||
.map(v => (v.ownerColumn = newName));
|
||||
});
|
||||
});
|
||||
|
||||
@ -75,43 +65,43 @@ export abstract class AbstractDriver {
|
||||
dbModel.entities.forEach(entity => {
|
||||
entity.Columns.forEach(column => {
|
||||
column.relations.forEach(relation => {
|
||||
if (true || !relation.isOwner) {
|
||||
let newName = this.namingStrategy.relationName(
|
||||
column.tsName,
|
||||
relation,
|
||||
dbModel
|
||||
);
|
||||
dbModel.entities.forEach(entity2 => {
|
||||
entity2.Columns.forEach(column2 => {
|
||||
column2.relations.forEach(relation2 => {
|
||||
if (
|
||||
relation2.relatedTable ==
|
||||
entity.EntityName &&
|
||||
relation2.ownerColumn == column.tsName
|
||||
) {
|
||||
relation2.ownerColumn = newName;
|
||||
}
|
||||
if (
|
||||
relation2.relatedTable ==
|
||||
entity.EntityName &&
|
||||
relation2.relatedColumn == column.tsName
|
||||
) {
|
||||
relation2.relatedColumn = newName;
|
||||
}
|
||||
if (relation.isOwner) {
|
||||
entity.Indexes.forEach(ind => {
|
||||
ind.columns.forEach(col => {
|
||||
if (col.name == column.tsName) {
|
||||
col.name = newName;
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
let newName = this.namingStrategy.relationName(
|
||||
column.tsName,
|
||||
relation,
|
||||
dbModel
|
||||
);
|
||||
dbModel.entities.forEach(entity2 => {
|
||||
entity2.Columns.forEach(column2 => {
|
||||
column2.relations.forEach(relation2 => {
|
||||
if (
|
||||
relation2.relatedTable ==
|
||||
entity.EntityName &&
|
||||
relation2.ownerColumn == column.tsName
|
||||
) {
|
||||
relation2.ownerColumn = newName;
|
||||
}
|
||||
if (
|
||||
relation2.relatedTable ==
|
||||
entity.EntityName &&
|
||||
relation2.relatedColumn == column.tsName
|
||||
) {
|
||||
relation2.relatedColumn = newName;
|
||||
}
|
||||
if (relation.isOwner) {
|
||||
entity.Indexes.forEach(ind => {
|
||||
ind.columns
|
||||
.filter(
|
||||
col => col.name == column.tsName
|
||||
)
|
||||
.forEach(
|
||||
col => (col.name = newName)
|
||||
);
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
column.tsName = newName;
|
||||
}
|
||||
});
|
||||
column.tsName = newName;
|
||||
});
|
||||
});
|
||||
});
|
||||
@ -162,8 +152,8 @@ export abstract class AbstractDriver {
|
||||
generateRelationsIds: boolean;
|
||||
|
||||
FindManyToManyRelations(dbModel: DatabaseModel) {
|
||||
let manyToManyEntities = dbModel.entities.filter(entity => {
|
||||
return (
|
||||
let manyToManyEntities = dbModel.entities.filter(
|
||||
entity =>
|
||||
entity.Columns.filter(column => {
|
||||
return (
|
||||
column.relations.length == 1 &&
|
||||
@ -171,29 +161,29 @@ export abstract class AbstractDriver {
|
||||
column.relations[0].isOwner
|
||||
);
|
||||
}).length == entity.Columns.length
|
||||
);
|
||||
});
|
||||
);
|
||||
manyToManyEntities.map(entity => {
|
||||
let relations: RelationInfo[] = [];
|
||||
relations = entity.Columns.reduce((prev: RelationInfo[], curr) => {
|
||||
return prev.concat(curr.relations);
|
||||
}, relations);
|
||||
relations = entity.Columns.reduce(
|
||||
(prev: RelationInfo[], curr) => prev.concat(curr.relations),
|
||||
relations
|
||||
);
|
||||
let namesOfRelatedTables = relations
|
||||
.map(v => v.relatedTable)
|
||||
.filter((v, i, s) => s.indexOf(v) == i);
|
||||
if (namesOfRelatedTables.length == 2) {
|
||||
let relatedTable1 = dbModel.entities.filter(
|
||||
let relatedTable1 = dbModel.entities.find(
|
||||
v => v.EntityName == namesOfRelatedTables[0]
|
||||
)[0];
|
||||
)!;
|
||||
relatedTable1.Columns = relatedTable1.Columns.filter(
|
||||
v =>
|
||||
!v.tsName
|
||||
.toLowerCase()
|
||||
.startsWith(entity.EntityName.toLowerCase())
|
||||
);
|
||||
let relatedTable2 = dbModel.entities.filter(
|
||||
let relatedTable2 = dbModel.entities.find(
|
||||
v => v.EntityName == namesOfRelatedTables[1]
|
||||
)[0];
|
||||
)!;
|
||||
relatedTable2.Columns = relatedTable2.Columns.filter(
|
||||
v =>
|
||||
!v.tsName
|
||||
@ -305,9 +295,9 @@ export abstract class AbstractDriver {
|
||||
entities: EntityInfo[]
|
||||
) {
|
||||
relationsTemp.forEach(relationTmp => {
|
||||
let ownerEntity = entities.find(entitity => {
|
||||
return entitity.EntityName == relationTmp.ownerTable;
|
||||
});
|
||||
let ownerEntity = entities.find(
|
||||
entitity => entitity.EntityName == relationTmp.ownerTable
|
||||
);
|
||||
if (!ownerEntity) {
|
||||
TomgUtils.LogError(
|
||||
`Relation between tables ${relationTmp.ownerTable} and ${
|
||||
@ -316,9 +306,9 @@ export abstract class AbstractDriver {
|
||||
);
|
||||
return;
|
||||
}
|
||||
let referencedEntity = entities.find(entitity => {
|
||||
return entitity.EntityName == relationTmp.referencedTable;
|
||||
});
|
||||
let referencedEntity = entities.find(
|
||||
entitity => entitity.EntityName == relationTmp.referencedTable
|
||||
);
|
||||
if (!referencedEntity) {
|
||||
TomgUtils.LogError(
|
||||
`Relation between tables ${relationTmp.ownerTable} and ${
|
||||
@ -332,12 +322,11 @@ export abstract class AbstractDriver {
|
||||
relationColumnIndex < relationTmp.ownerColumnsNames.length;
|
||||
relationColumnIndex++
|
||||
) {
|
||||
let ownerColumn = ownerEntity.Columns.find(column => {
|
||||
return (
|
||||
let ownerColumn = ownerEntity.Columns.find(
|
||||
column =>
|
||||
column.tsName ==
|
||||
relationTmp.ownerColumnsNames[relationColumnIndex]
|
||||
);
|
||||
});
|
||||
);
|
||||
if (!ownerColumn) {
|
||||
TomgUtils.LogError(
|
||||
`Relation between tables ${
|
||||
@ -350,12 +339,11 @@ export abstract class AbstractDriver {
|
||||
);
|
||||
return;
|
||||
}
|
||||
let relatedColumn = referencedEntity.Columns.find(column => {
|
||||
return (
|
||||
let relatedColumn = referencedEntity.Columns.find(
|
||||
column =>
|
||||
column.tsName ==
|
||||
relationTmp.referencedColumnsNames[relationColumnIndex]
|
||||
);
|
||||
});
|
||||
);
|
||||
if (!relatedColumn) {
|
||||
TomgUtils.LogError(
|
||||
`Relation between tables ${
|
||||
@ -370,14 +358,13 @@ export abstract class AbstractDriver {
|
||||
}
|
||||
let isOneToMany: boolean;
|
||||
isOneToMany = false;
|
||||
let index = ownerEntity.Indexes.find(index => {
|
||||
return (
|
||||
let index = ownerEntity.Indexes.find(
|
||||
index =>
|
||||
index.isUnique &&
|
||||
index.columns.some(col => {
|
||||
return col.name == ownerColumn!.tsName;
|
||||
})
|
||||
);
|
||||
});
|
||||
index.columns.some(
|
||||
col => col.name == ownerColumn!.tsName
|
||||
)
|
||||
);
|
||||
isOneToMany = !index;
|
||||
|
||||
let ownerRelation = new RelationInfo();
|
||||
@ -467,15 +454,13 @@ export abstract class AbstractDriver {
|
||||
FindPrimaryColumnsFromIndexes(dbModel: DatabaseModel) {
|
||||
dbModel.entities.forEach(entity => {
|
||||
let primaryIndex = entity.Indexes.find(v => v.isPrimaryKey);
|
||||
entity.Columns.forEach(col => {
|
||||
if (
|
||||
entity.Columns.filter(
|
||||
col =>
|
||||
primaryIndex &&
|
||||
primaryIndex.columns.some(
|
||||
cIndex => cIndex.name == col.tsName
|
||||
)
|
||||
)
|
||||
col.isPrimary = true;
|
||||
});
|
||||
).forEach(col => (col.isPrimary = true));
|
||||
if (
|
||||
!entity.Columns.some(v => {
|
||||
return v.isPrimary;
|
||||
|
@ -228,9 +228,7 @@ ORDER BY
|
||||
t.name, ind.name, ind.index_id, ic.key_ordinal;`)).recordset;
|
||||
entities.forEach(ent => {
|
||||
response
|
||||
.filter(filterVal => {
|
||||
return filterVal.TableName == ent.EntityName;
|
||||
})
|
||||
.filter(filterVal => filterVal.TableName == ent.EntityName)
|
||||
.forEach(resp => {
|
||||
let indexInfo: IndexInfo = <IndexInfo>{};
|
||||
let indexColumnInfo: IndexColumnInfo = <IndexColumnInfo>{};
|
||||
@ -299,9 +297,9 @@ order by
|
||||
TableWithForeignKey, FK_PartNo`)).recordset;
|
||||
let relationsTemp: RelationTempInfo[] = <RelationTempInfo[]>[];
|
||||
response.forEach(resp => {
|
||||
let rels = relationsTemp.find(val => {
|
||||
return val.object_id == resp.object_id;
|
||||
});
|
||||
let rels = relationsTemp.find(
|
||||
val => val.object_id == resp.object_id
|
||||
);
|
||||
if (rels == undefined) {
|
||||
rels = <RelationTempInfo>{};
|
||||
rels.ownerColumnsNames = [];
|
||||
@ -315,7 +313,6 @@ order by
|
||||
break;
|
||||
default:
|
||||
rels.actionOnDelete = resp.onDelete;
|
||||
|
||||
break;
|
||||
}
|
||||
switch (resp.onUpdate) {
|
||||
@ -327,7 +324,6 @@ order by
|
||||
break;
|
||||
default:
|
||||
rels.actionOnUpdate = resp.onUpdate;
|
||||
|
||||
break;
|
||||
}
|
||||
rels.object_id = resp.object_id;
|
||||
|
@ -40,9 +40,7 @@ export class MysqlDriver extends AbstractDriver {
|
||||
FROM INFORMATION_SCHEMA.COLUMNS where TABLE_SCHEMA like DATABASE()`);
|
||||
entities.forEach(ent => {
|
||||
response
|
||||
.filter(filterVal => {
|
||||
return filterVal.TABLE_NAME == ent.EntityName;
|
||||
})
|
||||
.filter(filterVal => filterVal.TABLE_NAME == ent.EntityName)
|
||||
.forEach(resp => {
|
||||
let colInfo: ColumnInfo = new ColumnInfo();
|
||||
colInfo.tsName = resp.COLUMN_NAME;
|
||||
@ -226,20 +224,18 @@ export class MysqlDriver extends AbstractDriver {
|
||||
`);
|
||||
entities.forEach(ent => {
|
||||
response
|
||||
.filter(filterVal => {
|
||||
return filterVal.TableName == ent.EntityName;
|
||||
})
|
||||
.filter(filterVal => filterVal.TableName == ent.EntityName)
|
||||
.forEach(resp => {
|
||||
let indexInfo: IndexInfo = <IndexInfo>{};
|
||||
let indexColumnInfo: IndexColumnInfo = <IndexColumnInfo>{};
|
||||
if (
|
||||
ent.Indexes.filter(filterVal => {
|
||||
return filterVal.name == resp.IndexName;
|
||||
}).length > 0
|
||||
ent.Indexes.filter(
|
||||
filterVal => filterVal.name == resp.IndexName
|
||||
).length > 0
|
||||
) {
|
||||
indexInfo = ent.Indexes.filter(filterVal => {
|
||||
return filterVal.name == resp.IndexName;
|
||||
})[0];
|
||||
indexInfo = ent.Indexes.find(
|
||||
filterVal => filterVal.name == resp.IndexName
|
||||
)!;
|
||||
} else {
|
||||
indexInfo.columns = <IndexColumnInfo[]>[];
|
||||
indexInfo.name = resp.IndexName;
|
||||
@ -286,9 +282,9 @@ export class MysqlDriver extends AbstractDriver {
|
||||
`);
|
||||
let relationsTemp: RelationTempInfo[] = <RelationTempInfo[]>[];
|
||||
response.forEach(resp => {
|
||||
let rels = relationsTemp.find(val => {
|
||||
return val.object_id == resp.object_id;
|
||||
});
|
||||
let rels = relationsTemp.find(
|
||||
val => val.object_id == resp.object_id
|
||||
);
|
||||
if (rels == undefined) {
|
||||
rels = <RelationTempInfo>{};
|
||||
rels.ownerColumnsNames = [];
|
||||
|
@ -51,9 +51,7 @@ export class OracleDriver extends AbstractDriver {
|
||||
|
||||
entities.forEach(ent => {
|
||||
response
|
||||
.filter(filterVal => {
|
||||
return filterVal.TABLE_NAME == ent.EntityName;
|
||||
})
|
||||
.filter(filterVal => filterVal.TABLE_NAME == ent.EntityName)
|
||||
.forEach(resp => {
|
||||
let colInfo: ColumnInfo = new ColumnInfo();
|
||||
colInfo.tsName = resp.COLUMN_NAME;
|
||||
@ -202,20 +200,18 @@ export class OracleDriver extends AbstractDriver {
|
||||
|
||||
entities.forEach(ent => {
|
||||
response
|
||||
.filter(filterVal => {
|
||||
return filterVal.TABLE_NAME == ent.EntityName;
|
||||
})
|
||||
.filter(filterVal => filterVal.TABLE_NAME == ent.EntityName)
|
||||
.forEach(resp => {
|
||||
let indexInfo: IndexInfo = <IndexInfo>{};
|
||||
let indexColumnInfo: IndexColumnInfo = <IndexColumnInfo>{};
|
||||
if (
|
||||
ent.Indexes.filter(filterVal => {
|
||||
return filterVal.name == resp.INDEX_NAME;
|
||||
}).length > 0
|
||||
ent.Indexes.filter(
|
||||
filterVal => filterVal.name == resp.INDEX_NAME
|
||||
).length > 0
|
||||
) {
|
||||
indexInfo = ent.Indexes.filter(filterVal => {
|
||||
return filterVal.name == resp.INDEX_NAME;
|
||||
})[0];
|
||||
indexInfo = ent.Indexes.find(
|
||||
filterVal => filterVal.name == resp.INDEX_NAME
|
||||
)!;
|
||||
} else {
|
||||
indexInfo.columns = <IndexColumnInfo[]>[];
|
||||
indexInfo.name = resp.INDEX_NAME;
|
||||
@ -256,9 +252,9 @@ export class OracleDriver extends AbstractDriver {
|
||||
|
||||
let relationsTemp: RelationTempInfo[] = <RelationTempInfo[]>[];
|
||||
response.forEach(resp => {
|
||||
let rels = relationsTemp.find(val => {
|
||||
return val.object_id == resp.CONSTRAINT_NAME;
|
||||
});
|
||||
let rels = relationsTemp.find(
|
||||
val => val.object_id == resp.CONSTRAINT_NAME
|
||||
);
|
||||
if (rels == undefined) {
|
||||
rels = <RelationTempInfo>{};
|
||||
rels.ownerColumnsNames = [];
|
||||
|
@ -50,9 +50,7 @@ export class PostgresDriver extends AbstractDriver {
|
||||
.rows;
|
||||
entities.forEach(ent => {
|
||||
response
|
||||
.filter(filterVal => {
|
||||
return filterVal.table_name == ent.EntityName;
|
||||
})
|
||||
.filter(filterVal => filterVal.table_name == ent.EntityName)
|
||||
.forEach(resp => {
|
||||
let colInfo: ColumnInfo = new ColumnInfo();
|
||||
colInfo.tsName = resp.column_name;
|
||||
@ -402,20 +400,18 @@ export class PostgresDriver extends AbstractDriver {
|
||||
ORDER BY c.relname,f.attname;`)).rows;
|
||||
entities.forEach(ent => {
|
||||
response
|
||||
.filter(filterVal => {
|
||||
return filterVal.tablename == ent.EntityName;
|
||||
})
|
||||
.filter(filterVal => filterVal.tablename == ent.EntityName)
|
||||
.forEach(resp => {
|
||||
let indexInfo: IndexInfo = <IndexInfo>{};
|
||||
let indexColumnInfo: IndexColumnInfo = <IndexColumnInfo>{};
|
||||
if (
|
||||
ent.Indexes.filter(filterVal => {
|
||||
return filterVal.name == resp.indexname;
|
||||
}).length > 0
|
||||
ent.Indexes.filter(
|
||||
filterVal => filterVal.name == resp.indexname
|
||||
).length > 0
|
||||
) {
|
||||
indexInfo = ent.Indexes.filter(filterVal => {
|
||||
return filterVal.name == resp.indexname;
|
||||
})[0];
|
||||
indexInfo = ent.Indexes.find(
|
||||
filterVal => filterVal.name == resp.indexname
|
||||
)!;
|
||||
} else {
|
||||
indexInfo.columns = <IndexColumnInfo[]>[];
|
||||
indexInfo.name = resp.indexname;
|
||||
@ -486,9 +482,9 @@ export class PostgresDriver extends AbstractDriver {
|
||||
and rc.constraint_name= con.conname`)).rows;
|
||||
let relationsTemp: RelationTempInfo[] = <RelationTempInfo[]>[];
|
||||
response.forEach(resp => {
|
||||
let rels = relationsTemp.find(val => {
|
||||
return val.object_id == resp.object_id;
|
||||
});
|
||||
let rels = relationsTemp.find(
|
||||
val => val.object_id == resp.object_id
|
||||
);
|
||||
if (rels == undefined) {
|
||||
rels = <RelationTempInfo>{};
|
||||
rels.ownerColumnsNames = [];
|
||||
|
@ -217,9 +217,9 @@ export class SqliteDriver extends AbstractDriver {
|
||||
return filterVal.name == resp.name;
|
||||
}).length > 0
|
||||
) {
|
||||
indexInfo = ent.Indexes.filter(filterVal => {
|
||||
return filterVal.name == resp.name;
|
||||
})[0];
|
||||
indexInfo = ent.Indexes.find(
|
||||
filterVal => filterVal.name == resp.name
|
||||
)!;
|
||||
} else {
|
||||
indexInfo.columns = <IndexColumnInfo[]>[];
|
||||
indexInfo.name = resp.name;
|
||||
|
@ -9,7 +9,7 @@ export class EntityInfo {
|
||||
Schema: string;
|
||||
GenerateConstructor: boolean;
|
||||
|
||||
relationImports(): any {
|
||||
relationImports() {
|
||||
var imports: string[] = [];
|
||||
this.Columns.forEach(column => {
|
||||
column.relations.forEach(relation => {
|
||||
@ -17,8 +17,8 @@ export class EntityInfo {
|
||||
imports.push(relation.relatedTable);
|
||||
});
|
||||
});
|
||||
this.UniqueImports = imports.filter(function(elem, index, self) {
|
||||
return index == self.indexOf(elem);
|
||||
});
|
||||
this.UniqueImports = imports.filter(
|
||||
(elem, index, self) => index == self.indexOf(elem)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -67,8 +67,8 @@ describe("Platform specyfic types", async function () {
|
||||
await engine.createModelFromDatabase()
|
||||
let filesGenPath = path.resolve(resultsPath, 'entities')
|
||||
|
||||
let filesOrg = fs.readdirSync(filesOrgPathTS).filter(function (this, val, ind, arr) { return val.toString().endsWith('.ts') })
|
||||
let filesGen = fs.readdirSync(filesGenPath).filter(function (this, val, ind, arr) { return val.toString().endsWith('.ts') })
|
||||
let filesOrg = fs.readdirSync(filesOrgPathTS).filter((val) => val.toString().endsWith('.ts'))
|
||||
let filesGen = fs.readdirSync(filesGenPath).filter((val) => val.toString().endsWith('.ts'))
|
||||
|
||||
expect(filesOrg, 'Errors detected in model comparision').to.be.deep.equal(filesGen)
|
||||
|
||||
@ -79,9 +79,7 @@ describe("Platform specyfic types", async function () {
|
||||
expect(jsonEntityGen, `Error in file ${file}`).to.containSubset(jsonEntityOrg)
|
||||
}
|
||||
const currentDirectoryFiles = fs.readdirSync(filesGenPath).
|
||||
filter(fileName => fileName.length >= 3 && fileName.substr(fileName.length - 3, 3) === ".ts").map(v => {
|
||||
return path.resolve(filesGenPath, v)
|
||||
})
|
||||
filter(fileName => fileName.length >= 3 && fileName.substr(fileName.length - 3, 3) === ".ts").map(v => path.resolve(filesGenPath, v))
|
||||
let compileErrors = GTU.compileTsFiles(currentDirectoryFiles, {
|
||||
experimentalDecorators: true,
|
||||
sourceMap: false,
|
||||
|
@ -89,8 +89,8 @@ describe("GitHub issues", async function () {
|
||||
await engine.createModelFromDatabase()
|
||||
let filesGenPath = path.resolve(resultsPath, 'entities')
|
||||
|
||||
let filesOrg = fs.readdirSync(filesOrgPathTS).filter(function (this, val) { return val.toString().endsWith('.ts') })
|
||||
let filesGen = fs.readdirSync(filesGenPath).filter(function (this, val) { return val.toString().endsWith('.ts') })
|
||||
let filesOrg = fs.readdirSync(filesOrgPathTS).filter((val) => val.toString().endsWith('.ts'))
|
||||
let filesGen = fs.readdirSync(filesGenPath).filter((val) => val.toString().endsWith('.ts'))
|
||||
|
||||
expect(filesOrg, 'Errors detected in model comparision').to.be.deep.equal(filesGen)
|
||||
|
||||
@ -101,9 +101,7 @@ describe("GitHub issues", async function () {
|
||||
expect(jsonEntityGen, `Error in file ${file}`).to.containSubset(jsonEntityOrg)
|
||||
}
|
||||
const currentDirectoryFiles = fs.readdirSync(filesGenPath).
|
||||
filter(fileName => fileName.length >= 3 && fileName.substr(fileName.length - 3, 3) === ".ts").map(v => {
|
||||
return path.resolve(filesGenPath, v)
|
||||
})
|
||||
filter(fileName => fileName.length >= 3 && fileName.substr(fileName.length - 3, 3) === ".ts").map(v => path.resolve(filesGenPath, v))
|
||||
let compileErrors = GTU.compileTsFiles(currentDirectoryFiles, {
|
||||
experimentalDecorators: true,
|
||||
sourceMap: false,
|
||||
|
@ -69,8 +69,8 @@ describe("TypeOrm examples", async function () {
|
||||
await engine.createModelFromDatabase()
|
||||
let filesGenPath = path.resolve(resultsPath, 'entities')
|
||||
|
||||
let filesOrg = fs.readdirSync(filesOrgPathTS).filter(function (this, val) { return val.toString().endsWith('.ts') })
|
||||
let filesGen = fs.readdirSync(filesGenPath).filter(function (this, val) { return val.toString().endsWith('.ts') })
|
||||
let filesOrg = fs.readdirSync(filesOrgPathTS).filter((val) => val.toString().endsWith('.ts'))
|
||||
let filesGen = fs.readdirSync(filesGenPath).filter((val) => val.toString().endsWith('.ts'))
|
||||
|
||||
expect(filesOrg, 'Errors detected in model comparision').to.be.deep.equal(filesGen)
|
||||
|
||||
@ -81,9 +81,7 @@ describe("TypeOrm examples", async function () {
|
||||
expect(jsonEntityGen, `Error in file ${file}`).to.containSubset(jsonEntityOrg)
|
||||
}
|
||||
const currentDirectoryFiles = fs.readdirSync(filesGenPath).
|
||||
filter(fileName => fileName.length >= 3 && fileName.substr(fileName.length - 3, 3) === ".ts").map(v => {
|
||||
return path.resolve(filesGenPath, v)
|
||||
})
|
||||
filter(fileName => fileName.length >= 3 && fileName.substr(fileName.length - 3, 3) === ".ts").map(v => path.resolve(filesGenPath, v))
|
||||
let compileErrors = GTU.compileTsFiles(currentDirectoryFiles, {
|
||||
experimentalDecorators: true,
|
||||
sourceMap: false,
|
||||
|
@ -3,9 +3,7 @@ export class EntityFileToJson {
|
||||
getEntityOptions(trimmedLine: string, ent: EntityJson) {
|
||||
let decoratorParameters = trimmedLine.slice(trimmedLine.indexOf('(') + 1, trimmedLine.lastIndexOf(')'))
|
||||
if (decoratorParameters.length > 0) {
|
||||
if (decoratorParameters[0] == '"' && decoratorParameters.endsWith('"')) {
|
||||
|
||||
} else {
|
||||
if (decoratorParameters[0] != '"' || !decoratorParameters.endsWith('"')) {
|
||||
let badJSON = decoratorParameters.substring(decoratorParameters.indexOf(',') + 1).trim()
|
||||
if (badJSON.lastIndexOf(',') == badJSON.length - 3) {
|
||||
badJSON = badJSON.slice(0, badJSON.length - 3) + badJSON[badJSON.length - 2] + badJSON[badJSON.length - 1]
|
||||
@ -19,9 +17,7 @@ export class EntityFileToJson {
|
||||
let primaryGeneratedColumn = trimmedLine.substring(0, trimmedLine.indexOf('('))=='@PrimaryGeneratedColumn'
|
||||
if (decoratorParameters.length > 0) {
|
||||
if (decoratorParameters.search(',') > 0 && !primaryGeneratedColumn) {
|
||||
col.columnTypes = decoratorParameters.substring(0, decoratorParameters.indexOf(',')).trim().split('|').map(function (x) {
|
||||
return x;
|
||||
});
|
||||
col.columnTypes = decoratorParameters.substring(0, decoratorParameters.indexOf(',')).trim().split('|');
|
||||
let badJSON = decoratorParameters.substring(decoratorParameters.indexOf(',') + 1).trim()
|
||||
if (badJSON.lastIndexOf(',') == badJSON.length - 3) {
|
||||
badJSON = badJSON.slice(0, badJSON.length - 3) + badJSON[badJSON.length - 2] + badJSON[badJSON.length - 1]
|
||||
@ -29,10 +25,7 @@ export class EntityFileToJson {
|
||||
col.columnOptions = JSON.parse(badJSON.replace(/(['"])?([a-z0-9A-Z_]+)(['"])?:/g, '"$2": '))
|
||||
} else {
|
||||
if (decoratorParameters[0] == '"' && decoratorParameters.endsWith('"')) {
|
||||
col.columnTypes = decoratorParameters.split('|').map(function (x) {
|
||||
x = x.trim();
|
||||
return x;
|
||||
});
|
||||
col.columnTypes = decoratorParameters.split('|').map( x=>x.trim())
|
||||
} else {
|
||||
let badJSON = !primaryGeneratedColumn ? decoratorParameters.substring(decoratorParameters.indexOf(',') + 1) : decoratorParameters
|
||||
badJSON = badJSON.trim()
|
||||
@ -54,8 +47,6 @@ export class EntityFileToJson {
|
||||
badJSON = badJSON.slice(0, badJSON.length - 3) + badJSON[badJSON.length - 2] + badJSON[badJSON.length - 1]
|
||||
}
|
||||
col.columnOptions = JSON.parse(badJSON.replace(/(')/g,`"`).replace(/(['"])?([a-z0-9A-Z_]+)(['"])?:/g, '"$2": '))
|
||||
} else {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -65,7 +56,7 @@ export class EntityFileToJson {
|
||||
if (decoratorParameters.length > 0) {
|
||||
let containsTables = decoratorParameters.search('\\[') > -1
|
||||
let containsOptions = decoratorParameters.search('{') > -1
|
||||
let containsName = decoratorParameters.search('"') > -1//TODO:no name, but fields as string[]
|
||||
let containsName = decoratorParameters.search('"') > -1
|
||||
if (containsName) {
|
||||
ind.indexName = decoratorParameters.slice(decoratorParameters.indexOf('"') + 1, decoratorParameters.substr(decoratorParameters.indexOf('"') + 1).indexOf('"'))
|
||||
}
|
||||
@ -79,9 +70,7 @@ export class EntityFileToJson {
|
||||
colName = val.slice(val.indexOf('"') + 1, val.lastIndexOf('"'))
|
||||
}
|
||||
return colName
|
||||
}).filter(v => {
|
||||
return v.length > 0
|
||||
}))
|
||||
}).filter(v => v.length > 0))
|
||||
}
|
||||
if (containsOptions) {
|
||||
let optionsStr = decoratorParameters.slice(decoratorParameters.indexOf('{') + 1, decoratorParameters.indexOf('}'))
|
||||
@ -307,9 +296,8 @@ export class EntityFileToJson {
|
||||
return x;
|
||||
});
|
||||
|
||||
if (!retVal.columns[retVal.columns.length - 1].columnTypes.some(function (this, val, ind, arr) {
|
||||
return val == "null" ? true : false;
|
||||
})) retVal.columns[retVal.columns.length - 1].columnTypes.push('null')
|
||||
if (!retVal.columns[retVal.columns.length - 1].columnTypes.some( (val) => val == "null" ? true : false))
|
||||
retVal.columns[retVal.columns.length - 1].columnTypes.push('null')
|
||||
if (retVal.indicies.length > 0 && retVal.indicies[retVal.indicies.length - 1].columnNames.length == 0) {
|
||||
retVal.indicies[retVal.indicies.length - 1].columnNames.push(retVal.columns[retVal.columns.length - 1].columnName)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user