Skip to content

Commit 0d40a06

Browse files
author
Lars-Erik Roald
committed
tests bigint
1 parent 27cbedb commit 0d40a06

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+659
-47
lines changed

dist/index.browser.mjs

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5189,6 +5189,70 @@ function requireNumeric () {
51895189
return numeric;
51905190
}
51915191

5192+
var bigint;
5193+
var hasRequiredBigint;
5194+
5195+
function requireBigint () {
5196+
if (hasRequiredBigint) return bigint;
5197+
hasRequiredBigint = 1;
5198+
var newEncode = requireNewEncode$7();
5199+
var newDecode = requireNewDecodeCore();
5200+
var startsWith = requireStartsWith();
5201+
var endsWith = requireEndsWith();
5202+
var contains = requireContains();
5203+
var iStartsWith = requireIStartsWith();
5204+
var iEndsWith = requireIEndsWith();
5205+
var iContains = requireIContains();
5206+
var iEqual = requireIEqual();
5207+
var purify = requirePurify$6();
5208+
var _extractAlias = requireExtractAlias();
5209+
5210+
function _new(table, column) {
5211+
column.tsType = 'BigIntColumn';
5212+
column.purify = purify;
5213+
column.encode = newEncode(column);
5214+
column.decode = newDecode(column);
5215+
var extractAlias = _extractAlias.bind(null, table);
5216+
5217+
column.startsWith = function(context, arg, alias) {
5218+
alias = extractAlias(alias);
5219+
return startsWith(context, column, arg, alias);
5220+
};
5221+
column.endsWith = function(context, arg, alias) {
5222+
alias = extractAlias(alias);
5223+
return endsWith(context, column, arg, alias);
5224+
};
5225+
column.contains = function(context, arg, alias) {
5226+
alias = extractAlias(alias);
5227+
return contains(context, column, arg, alias);
5228+
};
5229+
column.iStartsWith = function(context, arg, alias) {
5230+
alias = extractAlias(alias);
5231+
return iStartsWith(context, column, arg, alias);
5232+
};
5233+
column.iEndsWith = function(context, arg, alias) {
5234+
alias = extractAlias(alias);
5235+
return iEndsWith(context, column, arg, alias);
5236+
};
5237+
column.iContains = function(context, arg, alias) {
5238+
alias = extractAlias(alias);
5239+
return iContains(context, column, arg, alias);
5240+
};
5241+
5242+
column.iEqual = function(context, arg, alias) {
5243+
alias = extractAlias(alias);
5244+
return iEqual(context, column, arg, alias);
5245+
};
5246+
5247+
column.iEq = column.iEqual;
5248+
column.IEQ = column.iEqual;
5249+
column.ieq = column.iEqual;
5250+
}
5251+
5252+
bigint = _new;
5253+
return bigint;
5254+
}
5255+
51925256
var purify_1$1;
51935257
var hasRequiredPurify$1;
51945258

@@ -5473,6 +5537,11 @@ function requireColumn () {
54735537
return c;
54745538
};
54755539

5540+
c.bigint = function() {
5541+
requireBigint()(column);
5542+
return c;
5543+
};
5544+
54765545
c.boolean = function() {
54775546
requireBoolean()(column);
54785547
return c;

dist/index.mjs

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5190,6 +5190,70 @@ function requireNumeric () {
51905190
return numeric;
51915191
}
51925192

5193+
var bigint;
5194+
var hasRequiredBigint;
5195+
5196+
function requireBigint () {
5197+
if (hasRequiredBigint) return bigint;
5198+
hasRequiredBigint = 1;
5199+
var newEncode = requireNewEncode$7();
5200+
var newDecode = requireNewDecodeCore();
5201+
var startsWith = requireStartsWith();
5202+
var endsWith = requireEndsWith();
5203+
var contains = requireContains();
5204+
var iStartsWith = requireIStartsWith();
5205+
var iEndsWith = requireIEndsWith();
5206+
var iContains = requireIContains();
5207+
var iEqual = requireIEqual();
5208+
var purify = requirePurify$6();
5209+
var _extractAlias = requireExtractAlias();
5210+
5211+
function _new(table, column) {
5212+
column.tsType = 'BigIntColumn';
5213+
column.purify = purify;
5214+
column.encode = newEncode(column);
5215+
column.decode = newDecode(column);
5216+
var extractAlias = _extractAlias.bind(null, table);
5217+
5218+
column.startsWith = function(context, arg, alias) {
5219+
alias = extractAlias(alias);
5220+
return startsWith(context, column, arg, alias);
5221+
};
5222+
column.endsWith = function(context, arg, alias) {
5223+
alias = extractAlias(alias);
5224+
return endsWith(context, column, arg, alias);
5225+
};
5226+
column.contains = function(context, arg, alias) {
5227+
alias = extractAlias(alias);
5228+
return contains(context, column, arg, alias);
5229+
};
5230+
column.iStartsWith = function(context, arg, alias) {
5231+
alias = extractAlias(alias);
5232+
return iStartsWith(context, column, arg, alias);
5233+
};
5234+
column.iEndsWith = function(context, arg, alias) {
5235+
alias = extractAlias(alias);
5236+
return iEndsWith(context, column, arg, alias);
5237+
};
5238+
column.iContains = function(context, arg, alias) {
5239+
alias = extractAlias(alias);
5240+
return iContains(context, column, arg, alias);
5241+
};
5242+
5243+
column.iEqual = function(context, arg, alias) {
5244+
alias = extractAlias(alias);
5245+
return iEqual(context, column, arg, alias);
5246+
};
5247+
5248+
column.iEq = column.iEqual;
5249+
column.IEQ = column.iEqual;
5250+
column.ieq = column.iEqual;
5251+
}
5252+
5253+
bigint = _new;
5254+
return bigint;
5255+
}
5256+
51935257
var purify_1$1;
51945258
var hasRequiredPurify$1;
51955259

@@ -5474,6 +5538,11 @@ function requireColumn () {
54745538
return c;
54755539
};
54765540

5541+
c.bigint = function() {
5542+
requireBigint()(column);
5543+
return c;
5544+
};
5545+
54775546
c.boolean = function() {
54785547
requireBoolean()(column);
54795548
return c;

src/bunSqlite/newTransaction.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ const wrapQuery = require('./wrapQuery');
22
const encodeBoolean = require('../sqlite/encodeBoolean');
33
const encodeBinary = require('../nodeSqlite/encodeBinary');
44
const decodeBinary = require('../nodeSqlite/decodeBinary');
5+
const formatBigintOut = require('../sqlite/formatBigintOut');
56
const deleteFromSql = require('../sqlite/deleteFromSql');
67
const selectForUpdateSql = require('../sqlite/selectForUpdateSql');
78
const lastInsertedSql = require('../sqlite/lastInsertedSql');
@@ -20,6 +21,7 @@ function newResolveTransaction(domain, pool, { readonly = false } = {}) {
2021
rdb.encodeBoolean = encodeBoolean;
2122
rdb.encodeBinary = encodeBinary;
2223
rdb.decodeBinary = decodeBinary;
24+
rdb.formatBigintOut = formatBigintOut;
2325
rdb.decodeJSON = decodeJSON;
2426
rdb.encodeJSON = JSON.stringify;
2527
rdb.deleteFromSql = deleteFromSql;

src/d1/newTransaction.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
const wrapQuery = require('./wrapQuery');
22
const encodeBoolean = require('../sqlite/encodeBoolean');
3+
const formatBigintOut = require('../sqlite/formatBigintOut');
34
const deleteFromSql = require('../sqlite/deleteFromSql');
45
const selectForUpdateSql = require('../sqlite/selectForUpdateSql');
56
const lastInsertedSql = require('../sqlite/lastInsertedSql');
@@ -18,6 +19,7 @@ function newResolveTransaction(domain, pool, { readonly = false } = {}) {
1819
rdb.encodeBoolean = encodeBoolean;
1920
rdb.decodeJSON = decodeJSON;
2021
rdb.encodeJSON = JSON.stringify;
22+
rdb.formatBigintOut = formatBigintOut;
2123
rdb.deleteFromSql = deleteFromSql;
2224
rdb.selectForUpdateSql = selectForUpdateSql;
2325
rdb.lastInsertedSql = lastInsertedSql;

src/map.d.ts

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,8 @@ type ColumnToType<T> = T extends UuidColumnSymbol
102102
? string
103103
: T extends NumericColumnSymbol
104104
? number
105+
: T extends BigIntColumnSymbol
106+
? bigint
105107
: T extends DateColumnSymbol
106108
? string | Date
107109
: T extends DateWithTimeZoneColumnSymbol
@@ -134,6 +136,7 @@ type RelatedColumns<T> = RemoveNeverFlat<{
134136
T[K] extends StringColumnTypeDef<infer M> ? StringColumnSymbol
135137
: T[K] extends UuidColumnTypeDef<infer M> ? UuidColumnSymbol
136138
: T[K] extends NumericColumnTypeDef<infer M> ? NumericColumnSymbol
139+
: T[K] extends BigIntColumnTypeDef<infer M> ? BigIntColumnSymbol
137140
: T[K] extends DateColumnTypeDef<infer M> ? DateColumnSymbol
138141
: T[K] extends DateWithTimeZoneColumnTypeDef<infer M> ? DateWithTimeZoneColumnSymbol
139142
: T[K] extends BinaryColumnTypeDef<infer M> ? BinaryColumnSymbol
@@ -149,6 +152,7 @@ type RelatedColumns<T> = RemoveNeverFlat<{
149152
type AggregateColumns<T> = RemoveNeverFlat<{
150153
[K in keyof T]:
151154
T[K] extends NumericColumnTypeDef<infer M> ? NumericColumnSymbol
155+
: T[K] extends BigIntColumnTypeDef<infer M> ? BigIntColumnSymbol
152156
: T[K] extends ManyRelation
153157
? AggregateColumns<T[K]>
154158
: T[K] extends RelatedTable
@@ -174,6 +178,7 @@ type ColumnSymbols =
174178
| StringColumnSymbol
175179
| UuidColumnSymbol
176180
| NumericColumnSymbol
181+
| BigIntColumnSymbol
177182
| DateColumnSymbol
178183
| DateWithTimeZoneColumnSymbol
179184
| BooleanColumnSymbol
@@ -245,6 +250,8 @@ type ToColumnTypes<T> = {
245250
? StringColumnSymbol
246251
: T[K] extends NumericColumnSymbol
247252
? NumericColumnSymbol
253+
: T[K] extends BigIntColumnSymbol
254+
? BigIntColumnSymbol
248255
: T[K] extends DateColumnSymbol
249256
? DateColumnSymbol
250257
: T[K] extends DateWithTimeZoneColumnSymbol
@@ -593,6 +600,12 @@ type NumericColumnSymbol = {
593600
type NumericColumnType<M> = M &
594601
NumericColumnSymbol;
595602

603+
type BigIntColumnSymbol = {
604+
[' isBigInt']: true;
605+
};
606+
type BigIntColumnType<M> = M &
607+
BigIntColumnSymbol;
608+
596609
type JSONColumnSymbol = {
597610
[' isJSON']: true;
598611
};
@@ -621,6 +634,7 @@ interface ColumnType<M> {
621634
string(): StringColumnTypeDef<M & StringColumnSymbol>;
622635
uuid(): UuidColumnTypeDef<M & UuidColumnSymbol>;
623636
numeric(): NumericColumnTypeDef<M & NumericColumnSymbol>;
637+
bigint(): BigIntColumnTypeDef<M & BigIntColumnSymbol>;
624638
date(): DateColumnTypeDef<M & DateColumnSymbol>;
625639
dateWithTimeZone(): DateWithTimeZoneColumnTypeDef<M & DateWithTimeZoneColumnSymbol>;
626640
binary(): BinaryColumnTypeDef<M & BinaryColumnSymbol>;
@@ -657,6 +671,15 @@ type NumericValidator<M> = M extends NotNull
657671
validator: (value?: number | null) => void
658672
): NumericColumnTypeDef<M>;
659673
};
674+
type BigIntValidator<M> = M extends NotNull
675+
? {
676+
validate(validator: (value: bigint) => void): BigIntColumnTypeDef<M>;
677+
}
678+
: {
679+
validate(
680+
validator: (value?: bigint | null) => void
681+
): BigIntColumnTypeDef<M>;
682+
};
660683
type BinaryValidator<M> = M extends NotNull
661684
? {
662685
validate(validator: (value: string) => void): BinaryColumnTypeDef<M>;
@@ -732,6 +755,17 @@ type NumericColumnTypeDef<M> = NumericValidator<M> & {
732755
} & ColumnTypeOf<NumericColumnType<M>> &
733756
M;
734757

758+
type BigIntColumnTypeDef<M> = BigIntValidator<M> & {
759+
primary(): BigIntColumnTypeDef<M & IsPrimary> & IsPrimary;
760+
notNull(): BigIntColumnTypeDef<M & NotNull> & NotNull;
761+
notNullExceptInsert(): BigIntColumnTypeDef<M & NotNull & NotNullExceptInsert> & NotNull & NotNullExceptInsert;
762+
serializable(value: boolean): BigIntColumnTypeDef<M>;
763+
JSONSchema(schema: object, options?: Options): BigIntColumnTypeDef<M>;
764+
default(value: bigint | null | undefined | (() => bigint | null | undefined)): BigIntColumnTypeDef<M>;
765+
dbNull(value: bigint): BigIntColumnTypeDef<M>;
766+
} & ColumnTypeOf<BigIntColumnType<M>> &
767+
M;
768+
735769
type UuidColumnTypeDef<M> = UuidValidator<M> & {
736770
primary(): UuidColumnTypeDef<M & IsPrimary> & IsPrimary;
737771
notNull(): UuidColumnTypeDef<M & NotNull> & NotNull;
@@ -992,6 +1026,11 @@ type ColumnToSchemaType<T> =
9921026
& (T extends NotNullExceptInsert ? { ' notNull': true; ' notNullExceptInsert': true }
9931027
: T extends NotNull ? { ' notNull': true }
9941028
: {}) :
1029+
T extends BigIntColumnSymbol
1030+
? { ' type': 'bigint' }
1031+
& (T extends NotNullExceptInsert ? { ' notNull': true; ' notNullExceptInsert': true }
1032+
: T extends NotNull ? { ' notNull': true }
1033+
: {}) :
9951034
T extends DateColumnSymbol | DateWithTimeZoneColumnSymbol
9961035
? { ' type': 'date' }
9971036
& (T extends NotNullExceptInsert ? { ' notNull': true; ' notNullExceptInsert': true }

src/mssql/formatBigintIn.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
function formatBigintIn(value) {
2+
return `CONVERT(BIGINT, ${value})`;
3+
}
4+
5+
module.exports = formatBigintIn;

src/mssql/newTransaction.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ var deleteFromSql = require('../tedious/deleteFromSql');
44
var selectForUpdateSql = require('../tedious/selectForUpdateSql');
55
const limitAndOffset = require('../tedious/limitAndOffset');
66
const formatDateOut = require('../tedious/formatDateOut');
7+
const formatBigintOut = require('../tedious/formatBigintOut');
8+
const formatBigintIn = require('./formatBigintIn');
79
const formatJSONOut = require('../tedious/formatJSONOut');
810
const insertSql = require('../tedious/insertSql');
911
const insert = require('../tedious/insert');
@@ -20,6 +22,8 @@ function newResolveTransaction(domain, pool, { readonly = false } = {}) {
2022
rdb.decodeJSON = decodeJSON;
2123
rdb.encodeJSON = JSON.stringify;
2224
rdb.formatDateOut = formatDateOut;
25+
rdb.formatBigintOut = formatBigintOut;
26+
rdb.formatBigintIn = formatBigintIn;
2327
rdb.formatJSONOut = formatJSONOut;
2428
rdb.deleteFromSql = deleteFromSql;
2529
rdb.selectForUpdateSql = selectForUpdateSql;

src/mssql/pool/newGenericPool.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,19 @@ function newGenericPool(connectionString, poolOptions) {
2222
return cb(err, null);
2323
}
2424
var client;
25+
// const config = {
26+
// connectionString: connectionString,
27+
// options: {
28+
// useNumericString: true
29+
// }
30+
// };
2531
mssql.open(connectionString, onConnected);
2632

2733
function onConnected(err, _client) {
2834
if(err)
2935
return cb(err, null);
3036
client = _client;
37+
// client.setUseNumericString(true);
3138
client.poolCount = 0;
3239
client.msnodesqlv8 = mssql;
3340
return cb(null, client);

src/mssql/wrapQuery.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ function wrapQuery(_context, connection) {
113113
result.push(rows);
114114
return;
115115
}
116+
116117
result.push(rows);
117118
if (!hasMore) {
118119
if (result.length === 1)

src/mySql/formatBigintOut.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
const quote = require('./quote');
2+
3+
function formatBigintOut(column, alias) {
4+
const quotedCol = quote(column._dbName);
5+
if (alias)
6+
return `CAST(${alias}.${quotedCol} AS CHAR)`;
7+
else
8+
return `CAST(${quotedCol} AS CHAR)`;
9+
}
10+
11+
module.exports = formatBigintOut;

0 commit comments

Comments
 (0)