Merge pull request #132 from Jared-Dev/master

Add flag to models that use the ActiveRecord syntax.
This commit is contained in:
Kononnable 2018-12-23 21:31:20 +01:00 committed by GitHub
commit cd6e38d729
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 26 additions and 8 deletions

View File

@ -56,6 +56,8 @@ Options:
--cp, --case-property Convert property names to specified case
[choices: "pascal", "camel", "none"] [default: "none"]
--lazy Generate lazy relations [boolean] [default: false]
-a, --active-record Generate models that use the ActiveRecord syntax
[boolean] [default: false]
--namingStrategy Use custom naming strategy
--relationIds Generate RelationId fields [boolean] [default: false]
--generateConstructor Generate constructor allowing partial initialization

View File

@ -88,6 +88,7 @@ export class Engine {
});
});
element.GenerateConstructor = this.Options.constructor;
element.IsActiveRecord = this.Options.activeRecord;
element.Imports.filter((elem, index, self) => {
return index === self.indexOf(elem);
});
@ -274,6 +275,7 @@ export interface IEngineOptions {
convertCaseProperty: "pascal" | "camel" | "none";
propertyVisibility: "public" | "protected" | "private" | "none";
lazy: boolean;
activeRecord: boolean;
constructor: boolean;
namingStrategy: AbstractNamingStrategy;
relationIds: boolean;

View File

@ -1,11 +1,11 @@
import {Index,Entity, PrimaryColumn, PrimaryGeneratedColumn, Column, OneToOne, OneToMany, ManyToOne, ManyToMany, JoinColumn, JoinTable, RelationId} from "typeorm";
import {BaseEntity,Column,Entity,Index,JoinColumn,JoinTable,ManyToMany,ManyToOne,OneToMany,OneToOne,PrimaryColumn,PrimaryGeneratedColumn,RelationId} from "typeorm";
{{relationImports}}{{#each UniqueImports}}import {{curly true}}{{toEntityName this}}{{curly false}} from "./{{toFileName this}}";
{{/each}}
@Entity("{{EntityName}}"{{#Schema}},{schema:"{{.}}"}{{/Schema}})
{{#Indexes}}{{^isPrimaryKey}}@Index("{{name}}",[{{#columns}}"{{toPropertyName name}}",{{/columns}}]{{#isUnique}},{unique:true}{{/isUnique}})
{{/isPrimaryKey}}{{/Indexes}}export class {{toEntityName EntityName}} {
{{/isPrimaryKey}}{{/Indexes}}export class {{toEntityName EntityName}}{{#IsActiveRecord}} extends BaseEntity{{/IsActiveRecord}} {
{{#Columns}}
{{^relations}}{{#isGenerated}} @PrimaryGeneratedColumn({

View File

@ -92,6 +92,12 @@ const argv = Yargs.usage(
default: false,
describe: "Generate lazy relations"
})
.option("a", {
alias: "active-record",
boolean: true,
default: false,
describe: "Use ActiveRecord syntax for generated models"
})
.option("namingStrategy", {
describe: "Use custom naming strategy"
})
@ -164,6 +170,7 @@ const engine = new Engine(driver, {
databaseType: argv.e,
host: argv.h,
lazy: argv.lazy,
activeRecord: argv.a,
namingStrategy,
noConfigs: argv.noConfig,
password: argv.x ? argv.x.toString() : null,

View File

@ -8,6 +8,7 @@ export class EntityInfo {
public Indexes: IndexInfo[];
public Schema: string;
public GenerateConstructor: boolean;
public IsActiveRecord: boolean;
public relationImports() {
const imports: string[] = [];

View File

@ -71,7 +71,8 @@ export async function createMSSQLModels(filesOrgPath: string, resultsPath: strin
lazy: false,
constructor: false,
namingStrategy,
relationIds: false
relationIds: false,
activeRecord: false
});
conn = await createConnection(connOpt)
@ -143,7 +144,8 @@ export async function createPostgresModels(filesOrgPath: string, resultsPath: st
lazy: false,
constructor: false,
namingStrategy,
relationIds: false
relationIds: false,
activeRecord: false
});
conn = await createConnection(connOpt)
@ -207,7 +209,8 @@ export async function createSQLiteModels(filesOrgPath: string, resultsPath: stri
lazy: false,
constructor: false,
namingStrategy,
relationIds: false
relationIds: false,
activeRecord: false
});
conn = await createConnection(connOpt)
@ -269,7 +272,8 @@ export async function createMysqlModels(filesOrgPath: string, resultsPath: strin
lazy: false,
constructor: false,
namingStrategy,
relationIds: false
relationIds: false,
activeRecord: false
});
return engine;
@ -323,7 +327,8 @@ export async function createMariaDBModels(filesOrgPath: string, resultsPath: str
lazy: false,
constructor: false,
namingStrategy,
relationIds: false
relationIds: false,
activeRecord: false
});
@ -380,7 +385,8 @@ export async function createOracleDBModels(filesOrgPath: string, resultsPath: st
lazy: false,
constructor: false,
namingStrategy,
relationIds: false
relationIds: false,
activeRecord: false
});
return engine;