From 343760e4aebfeab7a1cd04b246a30230f4f94fc4 Mon Sep 17 00:00:00 2001 From: uki00a Date: Thu, 23 Jul 2020 11:33:53 +0900 Subject: [PATCH 1/3] update: bump deno-sqlite to v2.2.1 --- dem.json | 2 +- vendor/https/deno.land/x/sqlite/mod.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dem.json b/dem.json index 3fbafb09e..8b9b35e2b 100644 --- a/dem.json +++ b/dem.json @@ -40,7 +40,7 @@ { "protocol": "https", "path": "deno.land/x/sqlite", - "version": "v2.1.0", + "version": "v2.2.1", "files": [ "/mod.ts" ] diff --git a/vendor/https/deno.land/x/sqlite/mod.ts b/vendor/https/deno.land/x/sqlite/mod.ts index 0f2a01681..c454f4578 100644 --- a/vendor/https/deno.land/x/sqlite/mod.ts +++ b/vendor/https/deno.land/x/sqlite/mod.ts @@ -1 +1 @@ -export * from "https://deno.land/x/sqlite@v2.1.0/mod.ts"; +export * from "https://deno.land/x/sqlite@v2.2.1/mod.ts"; From 12636495879b20d2fba169f5ea6b41d8665331d0 Mon Sep 17 00:00:00 2001 From: uki00a Date: Thu, 23 Jul 2020 19:00:54 +0900 Subject: [PATCH 2/3] fix: column-type-sqlite.ts --- .../sqlite-abstract/AbstractSqliteDriver.ts | 16 ++++++++++++++++ src/driver/types/ColumnTypes.ts | 3 ++- .../column-types/sqlite/column-types-sqlite.ts | 9 ++++----- .../column-types/sqlite/entity/Post.ts | 6 +++--- 4 files changed, 25 insertions(+), 9 deletions(-) diff --git a/src/driver/sqlite-abstract/AbstractSqliteDriver.ts b/src/driver/sqlite-abstract/AbstractSqliteDriver.ts index 9fb5148d7..99a971be5 100644 --- a/src/driver/sqlite-abstract/AbstractSqliteDriver.ts +++ b/src/driver/sqlite-abstract/AbstractSqliteDriver.ts @@ -263,6 +263,12 @@ export abstract class AbstractSqliteDriver implements Driver { } else if (columnMetadata.type === "simple-enum") { return DateUtils.simpleEnumToString(value); } + // Some types are treated differently from the original typeorm. + else if (typeof value === "bigint") { + // Unlike node-sqlite, deno-sqlite uses BigInt for large numbers. + // https://github.com/dyedgreen/deno-sqlite/pull/67 + return value.toString(); + } return value; } @@ -320,6 +326,16 @@ export abstract class AbstractSqliteDriver implements Driver { value = DateUtils.stringToSimpleEnum(value, columnMetadata); } + // Some types are treated differently from the original typeorm. + else if ( + columnMetadata.type === "int8" || + columnMetadata.type === "bigint" || + columnMetadata.type === "unsigned big int" || + columnMetadata.type === BigInt) { + // Unlike node-sqlite, deno-sqlite uses BigInt for large numbers. + // https://github.com/dyedgreen/deno-sqlite/pull/67 + value = BigInt(value); + } if (columnMetadata.transformer) value = ApplyValueTransformers.transformFrom(columnMetadata.transformer, value); diff --git a/src/driver/types/ColumnTypes.ts b/src/driver/types/ColumnTypes.ts index 5572e6c00..bef1090ab 100644 --- a/src/driver/types/ColumnTypes.ts +++ b/src/driver/types/ColumnTypes.ts @@ -207,4 +207,5 @@ export type ColumnType = WithPrecisionColumnType |DateConstructor |NumberConstructor |StringConstructor - |Uint8ArrayConstructor; // TODO(uki001) This type is not fully tested yet. + |Uint8ArrayConstructor + |BigIntConstructor; diff --git a/test/functional/database-schema/column-types/sqlite/column-types-sqlite.ts b/test/functional/database-schema/column-types/sqlite/column-types-sqlite.ts index 078643a75..4bbefef55 100644 --- a/test/functional/database-schema/column-types/sqlite/column-types-sqlite.ts +++ b/test/functional/database-schema/column-types/sqlite/column-types-sqlite.ts @@ -32,20 +32,19 @@ describe("database schema > column types > sqlite", () => { post.integer = 2147483647; post.int = 2147483647; post.int2 = 32767; - post.int8 = 8223372036854775807; + post.int8 = 8223372036854775807n; // Unlike node-sqlite, deno-sqlite uses BigInt for large numbers. post.tinyint = 127; post.smallint = 32767; post.mediumint = 8388607; - post.bigint = 8223372036854775807; - post.unsignedBigInt = 8223372036854775807; + post.bigint = 8223372036854775807n; // Unlike node-sqlite, deno-sqlite uses BigInt for large numbers. + post.unsignedBigInt = 8223372036854775807n; // Unlike node-sqlite, deno-sqlite uses BigInt for large numbers. post.character = "A"; post.varchar = "This is varchar"; post.varyingCharacter = "This is varying character"; post.nchar = "This is nchar"; post.nativeCharacter = "This is native character"; post.nvarchar = "This is nvarchar"; - // TODO(uki00a) not fully tested yet. - post.blob = encoder.encode("This is blob");/* new Buffer("This is blob"); */ + post.blob = encoder.encode("This is blob"); post.clob = "This is clob"; post.text = "This is text"; post.real = 10.5; diff --git a/test/functional/database-schema/column-types/sqlite/entity/Post.ts b/test/functional/database-schema/column-types/sqlite/entity/Post.ts index f854b383a..f0e0f1ba6 100644 --- a/test/functional/database-schema/column-types/sqlite/entity/Post.ts +++ b/test/functional/database-schema/column-types/sqlite/entity/Post.ts @@ -26,7 +26,7 @@ export class Post { int2!: number; @Column("int8") - int8!: number; + int8!: BigInt; @Column("tinyint") tinyint!: number; @@ -38,10 +38,10 @@ export class Post { mediumint!: number; @Column("bigint") - bigint!: number; + bigint!: BigInt; @Column("unsigned big int") - unsignedBigInt!: number; + unsignedBigInt!: BigInt; // ------------------------------------------------------------------------- // Character Types From 37b46d8c636d9fda8acd1bda761a8ec837528b0a Mon Sep 17 00:00:00 2001 From: uki00a Date: Thu, 23 Jul 2020 19:16:35 +0900 Subject: [PATCH 3/3] reset CI