From b2965ca6f85dd0e1c39067b90d16f44e12dce7be Mon Sep 17 00:00:00 2001 From: Tobin Brown Date: Thu, 28 Jan 2021 11:35:06 -0600 Subject: [PATCH 1/3] infer bigint data type --- src/sequelize/data-type/data-type-service.ts | 2 ++ test/specs/data-type-service.spec.ts | 27 ++++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 test/specs/data-type-service.spec.ts diff --git a/src/sequelize/data-type/data-type-service.ts b/src/sequelize/data-type/data-type-service.ts index 00a2190c..5f15bc2f 100644 --- a/src/sequelize/data-type/data-type-service.ts +++ b/src/sequelize/data-type/data-type-service.ts @@ -18,6 +18,8 @@ export function inferDataType(designType: any): DataTypeAbstract | undefined { switch (designType) { case String: return DataTypes.STRING; + case BigInt: + return DataTypes.BIGINT; case Number: return DataTypes.INTEGER; case Boolean: diff --git a/test/specs/data-type-service.spec.ts b/test/specs/data-type-service.spec.ts new file mode 100644 index 00000000..5ed44212 --- /dev/null +++ b/test/specs/data-type-service.spec.ts @@ -0,0 +1,27 @@ +import {expect} from 'chai'; +import {DataTypes} from 'sequelize'; +import { AutoIncrement, Column, Model, PrimaryKey, Table } from '../../src'; +import {createSequelize} from "../utils/sequelize"; +import {getAttributes} from '../../src/model/column/attribute-service'; + +describe('data type service', () => { + describe('inferDataTypes', () => { + it('correctly infers bigint data type', () => { + + @Table + class BigIntModel extends Model { + @PrimaryKey + @AutoIncrement + @Column + id: bigint; + } + + const sequelize = createSequelize(); + sequelize.addModels([BigIntModel]); + + const attributes = getAttributes(BigIntModel.prototype); + + expect(attributes.id.type).to.equal(DataTypes.BIGINT); + }); + }); +}); From 43fd9096a9744f65f3c95eb778d0df69bebf0568 Mon Sep 17 00:00:00 2001 From: Tobin Brown Date: Thu, 28 Jan 2021 12:26:35 -0600 Subject: [PATCH 2/3] move bigint test into table_column tests --- test/specs/data-type-service.spec.ts | 27 --------------------------- test/specs/table_column.spec.ts | 18 +++++++++++++++++- 2 files changed, 17 insertions(+), 28 deletions(-) delete mode 100644 test/specs/data-type-service.spec.ts diff --git a/test/specs/data-type-service.spec.ts b/test/specs/data-type-service.spec.ts deleted file mode 100644 index 5ed44212..00000000 --- a/test/specs/data-type-service.spec.ts +++ /dev/null @@ -1,27 +0,0 @@ -import {expect} from 'chai'; -import {DataTypes} from 'sequelize'; -import { AutoIncrement, Column, Model, PrimaryKey, Table } from '../../src'; -import {createSequelize} from "../utils/sequelize"; -import {getAttributes} from '../../src/model/column/attribute-service'; - -describe('data type service', () => { - describe('inferDataTypes', () => { - it('correctly infers bigint data type', () => { - - @Table - class BigIntModel extends Model { - @PrimaryKey - @AutoIncrement - @Column - id: bigint; - } - - const sequelize = createSequelize(); - sequelize.addModels([BigIntModel]); - - const attributes = getAttributes(BigIntModel.prototype); - - expect(attributes.id.type).to.equal(DataTypes.BIGINT); - }); - }); -}); diff --git a/test/specs/table_column.spec.ts b/test/specs/table_column.spec.ts index f9fb8738..845d5e13 100644 --- a/test/specs/table_column.spec.ts +++ b/test/specs/table_column.spec.ts @@ -1,7 +1,7 @@ import {expect, use} from 'chai'; import * as chaiAsPromised from 'chai-as-promised'; import {ModelAttributes} from 'sequelize'; -import {Model, Table, Column, DataType} from "../../src"; +import {Model, Table, Column, DataType, AutoIncrement, PrimaryKey} from "../../src"; import {createSequelize} from "../utils/sequelize"; import {User} from "../models/User"; import {getOptions} from "../../src/model/shared/model-service"; @@ -197,6 +197,22 @@ describe('table_column', () => { describe('column', () => { + it('should infer the correct data type for bigint', () => { + @Table + class BigIntModel extends Model { + @PrimaryKey + @AutoIncrement + @Column + id: bigint; + } + + sequelize.addModels([BigIntModel]); + + const attributes = getAttributes(BigIntModel.prototype); + + expect(attributes.id.type).to.equal(DataType.BIGINT); + }); + it('should create appropriate sql query', () => { const seq = createSequelize(false); From 0415bdd6ee0acb9fcd5977f0b773fd78541584e6 Mon Sep 17 00:00:00 2001 From: Tobin Brown Date: Thu, 11 Feb 2021 15:18:52 -0600 Subject: [PATCH 3/3] Add BIGINT inference to readme --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 1a7ea3fc..4a98d26f 100644 --- a/README.md +++ b/README.md @@ -285,6 +285,7 @@ Design type | Sequelize data type `string` | `STRING` `boolean` | `BOOLEAN` `number` | `INTEGER` + `bigint` | `BIGINT` `Date` | `DATE` `Buffer` | `BLOB`