diff --git a/README.md b/README.md index a57a805..1e09d79 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,5 @@ # typeorm-model-generator -[![Greenkeeper badge](https://badges.greenkeeper.io/Kononnable/typeorm-model-generator.svg)](https://greenkeeper.io/) [![Build Status](https://travis-ci.org/Kononnable/typeorm-model-generator.svg?branch=master)](https://travis-ci.org/Kononnable/typeorm-model-generator) [![npm version](https://badge.fury.io/js/typeorm-model-generator.svg)](https://badge.fury.io/js/typeorm-model-generator) [![codecov](https://codecov.io/gh/Kononnable/typeorm-model-generator/branch/master/graph/badge.svg)](https://codecov.io/gh/Kononnable/typeorm-model-generator) diff --git a/package-lock.json b/package-lock.json index ec320e4..56ee124 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2959,9 +2959,9 @@ } }, "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + "version": "4.17.14", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz", + "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==" }, "lodash.flattendeep": { "version": "4.4.0", diff --git a/src/drivers/MysqlDriver.ts b/src/drivers/MysqlDriver.ts index 11e43a4..a0352f0 100644 --- a/src/drivers/MysqlDriver.ts +++ b/src/drivers/MysqlDriver.ts @@ -72,6 +72,9 @@ export class MysqlDriver extends AbstractDriver { resp.COLUMN_DEFAULT ); colInfo.options.type = resp.DATA_TYPE as any; + colInfo.options.unsigned = resp.COLUMN_TYPE.endsWith( + " unsigned" + ); switch (resp.DATA_TYPE) { case "int": colInfo.tsType = "number"; @@ -163,7 +166,7 @@ export class MysqlDriver extends AbstractDriver { ).replace(/\'/gi, '"'); break; case "json": - colInfo.tsType = "Object"; + colInfo.tsType = "object"; break; case "binary": colInfo.tsType = "Buffer"; diff --git a/src/drivers/PostgresDriver.ts b/src/drivers/PostgresDriver.ts index 2c2fd0c..6881b91 100644 --- a/src/drivers/PostgresDriver.ts +++ b/src/drivers/PostgresDriver.ts @@ -159,8 +159,8 @@ export class PostgresDriver extends AbstractDriver { | "boolean" | "Date" | "Buffer" - | "Object" - | "string | Object" + | "object" + | "string | object" | "string | string[]" | "any" | null; @@ -288,7 +288,7 @@ export class PostgresDriver extends AbstractDriver { ret.ts_type = "string"; break; case "point": - ret.ts_type = "string | Object"; + ret.ts_type = "string | object"; break; case "line": ret.ts_type = "string"; @@ -297,7 +297,7 @@ export class PostgresDriver extends AbstractDriver { ret.ts_type = "string | string[]"; break; case "box": - ret.ts_type = "string | Object"; + ret.ts_type = "string | object"; break; case "path": ret.ts_type = "string"; @@ -306,7 +306,7 @@ export class PostgresDriver extends AbstractDriver { ret.ts_type = "string"; break; case "circle": - ret.ts_type = "string | Object"; + ret.ts_type = "string | object"; break; case "cidr": ret.ts_type = "string"; @@ -330,10 +330,10 @@ export class PostgresDriver extends AbstractDriver { ret.ts_type = "string"; break; case "json": - ret.ts_type = "Object"; + ret.ts_type = "object"; break; case "jsonb": - ret.ts_type = "Object"; + ret.ts_type = "object"; break; case "int4range": ret.ts_type = "string"; diff --git a/src/entity.mst b/src/entity.mst index 63f0acb..634a2bb 100644 --- a/src/entity.mst +++ b/src/entity.mst @@ -15,7 +15,8 @@ import {BaseEntity,Column,Entity,Index,JoinColumn,JoinTable,ManyToMany,ManyToOne primary:{{primary}},{{/primary}}{{/generated}}{{#unique}} unique: true,{{/unique}}{{#length}} length:{{.}},{{/length}}{{#width}} - width:{{.}},{{/width}}{{#default}} + width:{{.}},{{/width}}{{#unsigned}} + unsigned: true,{{/unsigned}}{{#default}} default: {{.}},{{/default}}{{#precision}} precision:{{.}},{{/precision}}{{#scale}} scale:{{.}},{{/scale}}{{#enum}} @@ -32,8 +33,8 @@ import {BaseEntity,Column,Entity,Index,JoinColumn,JoinTable,ManyToMany,ManyToOne {{/if}} {{#if relationIdField }} - @RelationId(({{toPropertyName ../../tsEntityName}}: {{toEntityName ../../tsEntityName}}) => {{toPropertyName ../../tsEntityName}}.{{toPropertyName ../tsName}}) - {{toPropertyName ../tsName}}Id: {{#if isOneToOne}}{{toLazy ../tsType}}{{else}}{{toLazy (concat ../tsType "[]")}}{{/if}};{{/if}}{{/relations}} + @RelationId(({{toPropertyName ../../tsEntityName}}: {{toEntityName ../../tsEntityName}}) => {{toEntityName ../../tsEntityName}}.{{toPropertyName ../tsName}}) + {{printPropertyVisibility}}{{toPropertyName ../tsName}}Id: {{#if isOneToOne}}{{toLazy ../tsType}}{{else}}{{toLazy (concat ../tsType "[]")}}{{/if}};{{/if}}{{/relations}} {{/Columns}} {{#if GenerateConstructor}} constructor(init?: Partial<{{toEntityName tsEntityName}}>) { diff --git a/src/models/ColumnInfo.ts b/src/models/ColumnInfo.ts index 24307c6..6b7f167 100644 --- a/src/models/ColumnInfo.ts +++ b/src/models/ColumnInfo.ts @@ -10,8 +10,8 @@ export class ColumnInfo { | "boolean" | "Date" | "Buffer" - | "Object" - | "string | Object" + | "object" + | "string | object" | "string | string[]" | "any"; public relations: RelationInfo[] = []; diff --git a/test/integration/entityTypes/mariadb/entity/Post.ts b/test/integration/entityTypes/mariadb/entity/Post.ts index 491f16b..bdd5343 100644 --- a/test/integration/entityTypes/mariadb/entity/Post.ts +++ b/test/integration/entityTypes/mariadb/entity/Post.ts @@ -89,7 +89,7 @@ export class Post { // In mariaDb Json is recognized as longtext // @Column("json") - // json: Object; + // json: object; @Column("binary") binary: Buffer; diff --git a/test/integration/entityTypes/mysql/entity/Post.ts b/test/integration/entityTypes/mysql/entity/Post.ts index 6e468d9..0c49fb5 100644 --- a/test/integration/entityTypes/mysql/entity/Post.ts +++ b/test/integration/entityTypes/mysql/entity/Post.ts @@ -15,10 +15,13 @@ export class Post { @Column("int") int: number; + @Column("int", { unsigned: true }) + uint: number; + @Column("tinyint") tinyint: number; - @Column("tinyint",{width:1}) + @Column("tinyint", { width: 1 }) boolean: boolean; @Column("smallint") @@ -88,7 +91,7 @@ export class Post { enum: string; @Column("json") - json: Object; + json: object; @Column("binary") binary: Buffer; diff --git a/test/integration/entityTypes/postgres/entity/Post.ts b/test/integration/entityTypes/postgres/entity/Post.ts index 79f26dc..3bf7985 100644 --- a/test/integration/entityTypes/postgres/entity/Post.ts +++ b/test/integration/entityTypes/postgres/entity/Post.ts @@ -123,7 +123,7 @@ export class Post { // enum: string; @Column("point") - point: string | Object; + point: string | object; @Column("line") line: string; @@ -132,7 +132,7 @@ export class Post { lseg: string | string[]; @Column("box") - box: string | Object; + box: string | object; @Column("path") path: string; @@ -141,7 +141,7 @@ export class Post { polygon: string; @Column("circle") - circle: string | Object; + circle: string | object; @Column("cidr") cidr: string; @@ -165,10 +165,10 @@ export class Post { xml: string; @Column("json") - json: Object; + json: object; @Column("jsonb") - jsonb: Object; + jsonb: object; @Column("int4range") int4range: string; diff --git a/test/integration/entityTypes/postgres/entity/PostArrays.ts b/test/integration/entityTypes/postgres/entity/PostArrays.ts index d880503..fde1012 100644 --- a/test/integration/entityTypes/postgres/entity/PostArrays.ts +++ b/test/integration/entityTypes/postgres/entity/PostArrays.ts @@ -123,7 +123,7 @@ export class PostArrays { // enum: string[]; @Column("point", { array: true }) - point: string[] | Object[]; + point: string[] | object[]; @Column("line", { array: true }) line: string[]; @@ -132,7 +132,7 @@ export class PostArrays { lseg: string[] | string[][]; @Column("box", { array: true }) - box: string[] | Object[]; + box: string[] | object[]; @Column("path", { array: true }) path: string[]; @@ -141,7 +141,7 @@ export class PostArrays { polygon: string[]; @Column("circle", { array: true }) - circle: string[] | Object[]; + circle: string[] | object[]; @Column("cidr", { array: true }) cidr: string[]; @@ -165,10 +165,10 @@ export class PostArrays { xml: string[]; @Column("json", { array: true }) - json: Object[]; + json: object[]; @Column("jsonb", { array: true }) - jsonb: Object[]; + jsonb: object[]; @Column("int4range", { array: true }) int4range: string[];