Skip to content

Commit b8c79d0

Browse files
authored
fix: Missing types in "mysql" import (#1995)
* fix: `execute` types in `Connection` * fix: `promise` options don't appears * fix: missing `execute` method in `Pool` * fix: missing `getConnection()` in `.promise()` * fix: patterning `execute` overloads in mysql import * fix: `promise` method types in `createConnection` * fix: `promise` method types in `createPool` * add: TypeScript build tests for mysql `createPool` and `createConnection` * add: TypeScript build tests for mysql/promise `createPool` and `createConnection` * add: description for further contributions in TypeScript build tests * fix: call methods in createConnection tsc-build
1 parent 0bf4df2 commit b8c79d0

File tree

21 files changed

+715
-25
lines changed

21 files changed

+715
-25
lines changed

index.d.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ export interface Connection extends mysql.Connection {
7878
writeEof(warnings?: number, statusFlags?: number): void;
7979
writeTextResult(rows?: Array<any>, columns?: Array<any>): void;
8080
writePacket(packet: any): void;
81+
promise(promiseImpl?: PromiseConstructor): PromiseConnection;
8182
sequenceId: number;
8283
}
8384

@@ -157,7 +158,7 @@ export interface Pool extends mysql.Connection {
157158
on(event: 'enqueue', listener: () => any): this;
158159
unprepare(sql: string): mysql.PrepareStatementInfo;
159160
prepare(sql: string, callback?: (err: mysql.QueryError | null, statement: mysql.PrepareStatementInfo) => any): mysql.Prepare;
160-
161+
promise(promiseImpl?: PromiseConstructor): PromisePoolConnection;
161162
config: mysql.PoolOptions;
162163
}
163164

promise.d.ts

+1-3
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ export interface Connection extends EventEmitter {
8484

8585
export interface PoolConnection extends Connection {
8686
connection: Connection;
87+
getConnection(): Promise<PoolConnection>;
8788
release(): void;
8889
}
8990

@@ -153,6 +154,3 @@ export interface PreparedStatementInfo {
153154
execute(parameters: any[]): Promise<[RowDataPacket[][] | RowDataPacket[] | OkPacket | OkPacket[] | ResultSetHeader, FieldPacket[]]>;
154155
}
155156

156-
export interface PromisePoolConnection extends Connection {
157-
destroy(): any;
158-
}

test/tsc-build/index.ts

+13
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,16 @@
1+
/**
2+
* This tests doesn't execute the scripts or connect in any database.
3+
* It only compiles all typings in the project and ensures that the compilation will be successful.
4+
* To test it, run: npm run test:tsc-build
5+
*
6+
* The purpose of this test is to prevent changes that break the typings in new PRs
7+
*
8+
* Contributions:
9+
*
10+
* For mysql build tests: './mysql/...'
11+
* For mysql/promise build tests: './promise/...'
12+
*/
13+
114
import mysql from '../../index';
215
import mysqlp from '../../promise';
316

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { mysql } from '../index';
2+
3+
export const access: mysql.ConnectionOptions = {
4+
host: '',
5+
user: '',
6+
password: '',
7+
database: '',
8+
};
9+
10+
/** The SQL for the query */
11+
export const sql = 'SELECT * FROM `table`';
12+
13+
/** The SQL for the query with prepared statements */
14+
export const sqlPS = 'SELECT * FROM `table` WHERE `id` = ?';
15+
16+
/** The values for the query with prepared statements */
17+
export const values = [1];
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { mysql } from '../../../index';
2+
import { access, sql, sqlPS, values } from '../../baseConnection';
3+
4+
{
5+
const db = mysql.createConnection(access);
6+
7+
/** Overload: execute(sql, () => {}}) */
8+
db.execute(sql, (err, result, fields) => {
9+
console.log(err, result, fields);
10+
});
11+
12+
/** Overload: execute(sql, values, () => {}}) */
13+
db.execute(sqlPS, values, (err, result, fields) => {
14+
console.log(err, result, fields);
15+
});
16+
17+
/** Overload: execute(QueryOptions, () => {}}) I */
18+
db.execute({ sql }, (err, result, fields) => {
19+
console.log(err, result, fields);
20+
});
21+
22+
/** Overload: execute(QueryOptions, () => {}}) II */
23+
db.execute({ sql: sqlPS, values }, (err, result, fields) => {
24+
console.log(err, result, fields);
25+
});
26+
27+
/** Overload: execute(QueryOptions, values, () => {}}) */
28+
db.execute({ sql: sqlPS }, values, (err, result, fields) => {
29+
console.log(err, result, fields);
30+
});
31+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { mysql } from '../../../index';
2+
import { access, sql, sqlPS, values } from '../../baseConnection';
3+
4+
{
5+
const db = mysql.createConnection(access);
6+
7+
/** Overload: query(sql, () => {}}) */
8+
db.query(sql, (err, result, fields) => {
9+
console.log(err, result, fields);
10+
});
11+
12+
/** Overload: query(sql, values, () => {}}) */
13+
db.query(sqlPS, values, (err, result, fields) => {
14+
console.log(err, result, fields);
15+
});
16+
17+
/** Overload: query(QueryOptions, () => {}}) I */
18+
db.query({ sql }, (err, result, fields) => {
19+
console.log(err, result, fields);
20+
});
21+
22+
/** Overload: query(QueryOptions, () => {}}) II */
23+
db.query({ sql: sqlPS, values }, (err, result, fields) => {
24+
console.log(err, result, fields);
25+
});
26+
27+
/** Overload: query(QueryOptions, values, () => {}}) */
28+
db.query({ sql: sqlPS }, values, (err, result, fields) => {
29+
console.log(err, result, fields);
30+
});
31+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import { mysql } from '../../../index';
2+
import { access, sql, sqlPS, values } from '../../baseConnection';
3+
4+
(async () => {
5+
const db = mysql.createConnection(access).promise();
6+
7+
{
8+
/** Overload: execute(sql) */
9+
const [results, fields] = await db.execute(sql);
10+
console.log(results, fields);
11+
}
12+
13+
{
14+
/** Overload: execute(sql, values) */
15+
const [results, fields] = await db.execute(sqlPS, values);
16+
console.log(results, fields);
17+
}
18+
19+
{
20+
/** Overload: execute(QueryOptions) I */
21+
const [results, fields] = await db.execute({ sql });
22+
console.log(results, fields);
23+
}
24+
25+
{
26+
/** Overload: execute(QueryOptions) II */
27+
const [results, fields] = await db.execute({ sql: sqlPS, values });
28+
console.log(results, fields);
29+
}
30+
31+
{
32+
/** Overload: execute(QueryOptions, values) */
33+
const [results, fields] = await db.execute({ sql: sqlPS }, values);
34+
console.log(results, fields);
35+
}
36+
37+
await db.end();
38+
})();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import { mysql } from '../../../index';
2+
import { access, sql, sqlPS, values } from '../../baseConnection';
3+
4+
(async () => {
5+
const db = mysql.createConnection(access).promise();
6+
7+
{
8+
/** Overload: query(sql) */
9+
const [results, fields] = await db.query(sql);
10+
console.log(results, fields);
11+
}
12+
13+
{
14+
/** Overload: query(sql, values) */
15+
const [results, fields] = await db.query(sqlPS, values);
16+
console.log(results, fields);
17+
}
18+
19+
{
20+
/** Overload: query(QueryOptions) I */
21+
const [results, fields] = await db.query({ sql });
22+
console.log(results, fields);
23+
}
24+
25+
{
26+
/** Overload: query(QueryOptions) II */
27+
const [results, fields] = await db.query({ sql: sqlPS, values });
28+
console.log(results, fields);
29+
}
30+
31+
{
32+
/** Overload: query(QueryOptions, values) */
33+
const [results, fields] = await db.query({ sql: sqlPS }, values);
34+
console.log(results, fields);
35+
}
36+
37+
await db.end();
38+
})();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
import { mysql } from '../../../index';
2+
import { access, sql, sqlPS, values } from '../../baseConnection';
3+
4+
{
5+
const db = mysql.createPool(access);
6+
7+
/** Overload: execute(sql, () => {}}) */
8+
db.execute(sql, (err, result, fields) => {
9+
console.log(err, result, fields);
10+
});
11+
12+
/** Overload: execute(sql, values, () => {}}) */
13+
db.execute(sqlPS, values, (err, result, fields) => {
14+
console.log(err, result, fields);
15+
});
16+
17+
/** Overload: execute(QueryOptions, () => {}}) I */
18+
db.execute({ sql }, (err, result, fields) => {
19+
console.log(err, result, fields);
20+
});
21+
22+
/** Overload: execute(QueryOptions, () => {}}) II */
23+
db.execute({ sql: sqlPS, values }, (err, result, fields) => {
24+
console.log(err, result, fields);
25+
});
26+
27+
/** Overload: execute(QueryOptions, values, () => {}}) */
28+
db.execute({ sql: sqlPS }, values, (err, result, fields) => {
29+
console.log(err, result, fields);
30+
});
31+
}
32+
33+
/** getConnection and query */
34+
{
35+
mysql.createPool(access).getConnection((err, connection) => {
36+
/** Overload: execute(sql, () => {}}) */
37+
connection.execute(sql, (err, result, fields) => {
38+
console.log(err, result, fields);
39+
});
40+
41+
/** Overload: execute(sql, values, () => {}}) */
42+
connection.execute(sqlPS, values, (err, result, fields) => {
43+
console.log(err, result, fields);
44+
});
45+
46+
/** Overload: execute(QueryOptions, () => {}}) I */
47+
connection.execute({ sql }, (err, result, fields) => {
48+
console.log(err, result, fields);
49+
});
50+
51+
/** Overload: execute(QueryOptions, () => {}}) II */
52+
connection.execute({ sql: sqlPS, values }, (err, result, fields) => {
53+
console.log(err, result, fields);
54+
});
55+
56+
/** Overload: execute(QueryOptions, values, () => {}}) */
57+
connection.execute({ sql: sqlPS }, values, (err, result, fields) => {
58+
console.log(err, result, fields);
59+
});
60+
});
61+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
import { mysql } from '../../../index';
2+
import { access, sql, sqlPS, values } from '../../baseConnection';
3+
4+
{
5+
const db = mysql.createPool(access);
6+
7+
/** Overload: query(sql, () => {}}) */
8+
db.query(sql, (err, result, fields) => {
9+
console.log(err, result, fields);
10+
});
11+
12+
/** Overload: query(sql, values, () => {}}) */
13+
db.query(sqlPS, values, (err, result, fields) => {
14+
console.log(err, result, fields);
15+
});
16+
17+
/** Overload: query(QueryOptions, () => {}}) I */
18+
db.query({ sql }, (err, result, fields) => {
19+
console.log(err, result, fields);
20+
});
21+
22+
/** Overload: query(QueryOptions, () => {}}) II */
23+
db.query({ sql: sqlPS, values }, (err, result, fields) => {
24+
console.log(err, result, fields);
25+
});
26+
27+
/** Overload: query(QueryOptions, values, () => {}}) */
28+
db.query({ sql: sqlPS }, values, (err, result, fields) => {
29+
console.log(err, result, fields);
30+
});
31+
}
32+
33+
/** getConnection */
34+
{
35+
mysql.createPool(access).getConnection((err, connection) => {
36+
/** Overload: query(sql, () => {}}) */
37+
connection.query(sql, (err, result, fields) => {
38+
console.log(err, result, fields);
39+
});
40+
41+
/** Overload: query(sql, values, () => {}}) */
42+
connection.query(sqlPS, values, (err, result, fields) => {
43+
console.log(err, result, fields);
44+
});
45+
46+
/** Overload: query(QueryOptions, () => {}}) I */
47+
connection.query({ sql }, (err, result, fields) => {
48+
console.log(err, result, fields);
49+
});
50+
51+
/** Overload: query(QueryOptions, () => {}}) II */
52+
connection.query({ sql: sqlPS, values }, (err, result, fields) => {
53+
console.log(err, result, fields);
54+
});
55+
56+
/** Overload: query(QueryOptions, values, () => {}}) */
57+
connection.query({ sql: sqlPS }, values, (err, result, fields) => {
58+
console.log(err, result, fields);
59+
});
60+
});
61+
}

0 commit comments

Comments
 (0)