Skip to content

Commit c973c1c

Browse files
authored
Merge pull request #2084 from wellwelwel/fix-types-1
fix: constants, parserCache, Pool and Pool Cluster typings
2 parents 8979eb1 + fbc8a7e commit c973c1c

32 files changed

+1055
-1
lines changed

promise.d.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
QueryOptions,
99
ConnectionOptions,
1010
PoolOptions,
11+
PoolClusterOptions,
1112
Pool as CorePool,
1213
} from './index.js';
1314
import { ExecutableBase as ExecutableBaseClass } from './typings/mysql/lib/protocol/sequences/promise/ExecutableBase.js';
@@ -95,10 +96,36 @@ export interface Pool extends Connection {
9596
pool: CorePool;
9697
}
9798

99+
export interface PoolNamespace extends QueryableAndExecutableBase {
100+
getConnection(): Promise<PoolConnection>;
101+
}
102+
103+
export interface PoolCluster extends EventEmitter {
104+
config: PoolClusterOptions;
105+
106+
add(config: PoolOptions): void;
107+
add(group: string, connectionUri: string): void;
108+
add(group: string, config: PoolOptions): void;
109+
110+
end(): Promise<void>;
111+
112+
getConnection(): Promise<PoolConnection>;
113+
getConnection(group: string): Promise<PoolConnection>;
114+
getConnection(group: string, selector: string): Promise<PoolConnection>;
115+
116+
of(pattern: string, selector?: string): PoolNamespace;
117+
118+
on(event: string, listener: (args: any[]) => void): this;
119+
on(event: 'remove', listener: (nodeId: number) => void): this;
120+
on(event: 'connection', listener: (connection: PoolConnection) => void): this;
121+
}
122+
98123
export function createConnection(connectionUri: string): Promise<Connection>;
99124
export function createConnection(
100125
config: ConnectionOptions
101126
): Promise<Connection>;
102127

103128
export function createPool(connectionUri: string): Pool;
104129
export function createPool(config: PoolOptions): Pool;
130+
131+
export function createPoolCluster(config?: PoolClusterOptions): PoolCluster;

promise.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
const core = require('./index.js');
44
const EventEmitter = require('events').EventEmitter;
5+
const parserCache = require('./lib/parsers/parser_cache.js');
56

67
function makeDoneCb(resolve, reject, localErr) {
78
return function (err, rows, fields) {
@@ -563,3 +564,21 @@ exports.raw = core.raw;
563564
exports.PromisePool = PromisePool;
564565
exports.PromiseConnection = PromiseConnection;
565566
exports.PromisePoolConnection = PromisePoolConnection;
567+
568+
exports.__defineGetter__('Types', () => require('./lib/constants/types.js'));
569+
570+
exports.__defineGetter__('Charsets', () =>
571+
require('./lib/constants/charsets.js')
572+
);
573+
574+
exports.__defineGetter__('CharsetToEncoding', () =>
575+
require('./lib/constants/charset_encodings.js')
576+
);
577+
578+
exports.setMaxParserCache = function(max) {
579+
parserCache.setMaxCache(max);
580+
};
581+
582+
exports.clearParserCache = function() {
583+
parserCache.clearCache();
584+
};

test/tsc-build/mysql/baseConnection.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ export const access: mysql.ConnectionOptions = {
77
database: '',
88
};
99

10+
export const uriAccess = `mysql://${access.host}:${access.password}@${access.host}:${access.port}/${access.database}`;
11+
1012
/** The SQL for the query */
1113
export const sql = 'SELECT * FROM `table`';
1214

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import { mysql } from '../../index.js';
2+
3+
const charsetToEncoding: string[] = mysql.CharsetToEncoding;
4+
const utf8: string = charsetToEncoding[0];
5+
6+
console.log(utf8, charsetToEncoding);
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import { mysql } from '../../index.js';
2+
3+
const BIG5_CHINESE_CI: number = mysql.Charsets.BIG5_CHINESE_CI;
4+
const BIG5: number = mysql.Charsets.BIG5;
5+
6+
console.log(BIG5_CHINESE_CI, BIG5);
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { mysql } from '../../index.js';
2+
3+
const BLOB: number = mysql.Types.BLOB;
4+
const DECIMAL: string = mysql.Types[0x00];
5+
const DOUBLE: string = mysql.Types[5];
6+
7+
console.log(BLOB, DECIMAL, DOUBLE);
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { mysql } from '../../../index.js';
2+
import { uriAccess, access } from '../../baseConnection.js';
3+
4+
(() => {
5+
let uriPool: mysql.Pool | null = null;
6+
let pool: mysql.Pool | null = null;
7+
8+
if (uriPool === null || pool === null) return;
9+
10+
uriPool = mysql.createPool(uriAccess);
11+
pool = mysql.createPool(access);
12+
})();
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { mysql } from '../../index.js';
2+
import { access, uriAccess } from '../baseConnection.js';
3+
4+
const poolCluster = mysql.createPoolCluster();
5+
6+
// Overload: poolCluster.add(group, connectionUri);
7+
poolCluster.add('cluster1', uriAccess);
8+
// Overload: poolCluster.add(group, config);
9+
poolCluster.add('cluster2', access);
10+
// Overload: poolCluster.add(config);
11+
poolCluster.add(access);
12+
13+
// @ts-expect-error: The option to pass only `URI` doesn't exists
14+
poolCluster.add(uriAccess);
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
import { mysql } from '../../index.js';
2+
import { access, uriAccess, sql, sqlPS, values } from '../baseConnection.js';
3+
4+
const poolCluster = mysql.createPoolCluster();
5+
6+
poolCluster.add('cluster1', uriAccess);
7+
poolCluster.add('cluster2', access);
8+
9+
/** execute */
10+
poolCluster.getConnection((err, conn) => {
11+
/** Overload: execute(sql, () => {}}) */
12+
conn.execute(sql, (err, result, fields) => {
13+
console.log(err, result, fields);
14+
});
15+
16+
/** Overload: execute(sql, values, () => {}}) */
17+
conn.execute(sqlPS, values, (err, result, fields) => {
18+
console.log(err, result, fields);
19+
});
20+
21+
/** Overload: execute(QueryOptions, () => {}}) I */
22+
conn.execute({ sql }, (err, result, fields) => {
23+
console.log(err, result, fields);
24+
});
25+
26+
/** Overload: execute(QueryOptions, () => {}}) II */
27+
conn.execute({ sql: sqlPS, values }, (err, result, fields) => {
28+
console.log(err, result, fields);
29+
});
30+
31+
/** Overload: execute(QueryOptions, values, () => {}}) */
32+
conn.execute({ sql: sqlPS }, values, (err, result, fields) => {
33+
console.log(err, result, fields);
34+
});
35+
36+
/** Checking `PoolConnection` */
37+
conn.release();
38+
});
39+
40+
/** query */
41+
poolCluster.getConnection('cluster1', (err, conn) => {
42+
/** Overload: query(sql, () => {}}) */
43+
conn.query(sql, (err, result, fields) => {
44+
console.log(err, result, fields);
45+
});
46+
47+
/** Overload: query(sql, values, () => {}}) */
48+
conn.query(sqlPS, values, (err, result, fields) => {
49+
console.log(err, result, fields);
50+
});
51+
52+
/** Overload: query(QueryOptions, () => {}}) I */
53+
conn.query({ sql }, (err, result, fields) => {
54+
console.log(err, result, fields);
55+
});
56+
57+
/** Overload: query(QueryOptions, () => {}}) II */
58+
conn.query({ sql: sqlPS, values }, (err, result, fields) => {
59+
console.log(err, result, fields);
60+
});
61+
62+
/** Overload: query(QueryOptions, values, () => {}}) */
63+
conn.query({ sql: sqlPS }, values, (err, result, fields) => {
64+
console.log(err, result, fields);
65+
});
66+
67+
/** Checking `PoolConnection` */
68+
conn.release();
69+
});
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
import { mysql } from '../../../index.js';
2+
import { access, uriAccess, sql, sqlPS, values } from '../../baseConnection.js';
3+
4+
const poolCluster = mysql.createPoolCluster();
5+
6+
poolCluster.add('cluster1', uriAccess);
7+
poolCluster.add('cluster2', access);
8+
9+
/** execute */
10+
poolCluster.of('cluster1').getConnection((err, conn) => {
11+
/** Overload: execute(sql, () => {}}) */
12+
conn.execute(sql, (err, result, fields) => {
13+
console.log(err, result, fields);
14+
});
15+
16+
/** Overload: execute(sql, values, () => {}}) */
17+
conn.execute(sqlPS, values, (err, result, fields) => {
18+
console.log(err, result, fields);
19+
});
20+
21+
/** Overload: execute(QueryOptions, () => {}}) I */
22+
conn.execute({ sql }, (err, result, fields) => {
23+
console.log(err, result, fields);
24+
});
25+
26+
/** Overload: execute(QueryOptions, () => {}}) II */
27+
conn.execute({ sql: sqlPS, values }, (err, result, fields) => {
28+
console.log(err, result, fields);
29+
});
30+
31+
/** Overload: execute(QueryOptions, values, () => {}}) */
32+
conn.execute({ sql: sqlPS }, values, (err, result, fields) => {
33+
console.log(err, result, fields);
34+
});
35+
36+
/** Checking `PoolConnection` */
37+
conn.release();
38+
});
39+
40+
/** query */
41+
poolCluster.of('cluster2').getConnection((err, conn) => {
42+
/** Overload: query(sql, () => {}}) */
43+
conn.query(sql, (err, result, fields) => {
44+
console.log(err, result, fields);
45+
});
46+
47+
/** Overload: query(sql, values, () => {}}) */
48+
conn.query(sqlPS, values, (err, result, fields) => {
49+
console.log(err, result, fields);
50+
});
51+
52+
/** Overload: query(QueryOptions, () => {}}) I */
53+
conn.query({ sql }, (err, result, fields) => {
54+
console.log(err, result, fields);
55+
});
56+
57+
/** Overload: query(QueryOptions, () => {}}) II */
58+
conn.query({ sql: sqlPS, values }, (err, result, fields) => {
59+
console.log(err, result, fields);
60+
});
61+
62+
/** Overload: query(QueryOptions, values, () => {}}) */
63+
conn.query({ sql: sqlPS }, values, (err, result, fields) => {
64+
console.log(err, result, fields);
65+
});
66+
67+
/** Checking `PoolConnection` */
68+
conn.release();
69+
});

0 commit comments

Comments
 (0)