Feature - support richer derivation of column & entity name (#176)

Feature - support richer derivation of column & entity name
This commit is contained in:
Kononnable 2019-08-14 13:16:18 +02:00 committed by GitHub
commit b00ec56118
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 15 additions and 7 deletions

View File

@ -1,5 +1,6 @@
import RelationInfo from "./models/RelationInfo";
import EntityInfo from "./models/EntityInfo";
import ColumnInfo from "./models/ColumnInfo";
export default abstract class AbstractNamingStrategy {
public abstract relationName(
@ -8,7 +9,7 @@ export default abstract class AbstractNamingStrategy {
dbModel: EntityInfo[]
): string;
public abstract entityName(entityName: string): string;
public abstract entityName(entityName: string, entity?: EntityInfo): string;
public abstract columnName(columnName: string): string;
public abstract columnName(columnName: string, column?: ColumnInfo): string;
}

View File

@ -12,6 +12,7 @@ import MysqlDriver from "./drivers/MysqlDriver";
import OracleDriver from "./drivers/OracleDriver";
import SqliteDriver from "./drivers/SqliteDriver";
import NamingStrategy from "./NamingStrategy";
import AbstractNamingStrategy from "./AbstractNamingStrategy";
import changeCase = require("change-case");
import fs = require("fs");
@ -69,7 +70,7 @@ export function modelCustomizationPhase(
generationOptions: IGenerationOptions,
defaultValues: DataTypeDefaults
) {
let namingStrategy: NamingStrategy;
let namingStrategy: AbstractNamingStrategy;
if (
generationOptions.customNamingStrategyPath &&
generationOptions.customNamingStrategyPath !== ""
@ -365,7 +366,7 @@ function createTypeOrmConfig(
}
}
function applyNamingStrategy(
namingStrategy: NamingStrategy,
namingStrategy: AbstractNamingStrategy,
dbModel: EntityInfo[]
) {
let retval = changeRelationNames(dbModel);
@ -424,7 +425,10 @@ function applyNamingStrategy(
function changeColumnNames(model: EntityInfo[]) {
model.forEach(entity => {
entity.Columns.forEach(column => {
const newName = namingStrategy.columnName(column.tsName);
const newName = namingStrategy.columnName(
column.tsName,
column
);
entity.Indexes.forEach(index => {
index.columns
.filter(column2 => column2.name === column.tsName)
@ -464,7 +468,10 @@ function applyNamingStrategy(
}
function changeEntityNames(entities: EntityInfo[]) {
entities.forEach(entity => {
const newName = namingStrategy.entityName(entity.tsEntityName);
const newName = namingStrategy.entityName(
entity.tsEntityName,
entity
);
entities.forEach(entity2 => {
entity2.Columns.forEach(column => {
column.relations.forEach(relation => {

View File

@ -27,7 +27,7 @@ export default class OracleDriver extends AbstractDriver {
public constructor() {
super();
try {
// eslint-disable-next-line import/no-extraneous-dependencies, global-require
// eslint-disable-next-line import/no-extraneous-dependencies, global-require, import/no-unresolved
this.Oracle = require("oracledb");
this.Oracle.outFormat = this.Oracle.OBJECT;
} catch (error) {