@pma-network/sql 1.0.6 → 1.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +89 -15
- package/dist/MySQL.d.ts +150 -38
- package/dist/MySQL.d.ts.map +1 -1
- package/dist/MySQL.js +259 -192
- package/dist/MySQL.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/types.d.ts +9 -7
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -44,12 +44,17 @@ Import and use:
|
|
|
44
44
|
```typescript
|
|
45
45
|
import db from '@pma-network/sql';
|
|
46
46
|
|
|
47
|
-
const users = await db.query('SELECT * FROM users WHERE
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
47
|
+
const users = await db.query('SELECT * FROM users WHERE job_name = :job', { job: 'police' });
|
|
48
|
+
const insertId = await db.insert(
|
|
49
|
+
'INSERT INTO users (identifier_id, char_data_id, first_name, last_name, inventory_id) VALUES (:identifier_id, :char_data_id, :first_name, :last_name, :inventory_id)',
|
|
50
|
+
{
|
|
51
|
+
identifier_id: 1,
|
|
52
|
+
char_data_id: 1,
|
|
53
|
+
first_name: 'John',
|
|
54
|
+
last_name: 'Doe',
|
|
55
|
+
inventory_id: 1
|
|
56
|
+
}
|
|
57
|
+
);
|
|
53
58
|
```
|
|
54
59
|
|
|
55
60
|
## Usage
|
|
@@ -97,15 +102,31 @@ Optional: password, port (default: 3306)
|
|
|
97
102
|
|
|
98
103
|
Named parameters:
|
|
99
104
|
```typescript
|
|
100
|
-
await db.query('SELECT * FROM users WHERE
|
|
101
|
-
|
|
102
|
-
|
|
105
|
+
await db.query('SELECT * FROM users WHERE first_name = :first_name AND job_name = :job', {
|
|
106
|
+
first_name: 'John',
|
|
107
|
+
job: 'police',
|
|
103
108
|
});
|
|
104
109
|
```
|
|
105
110
|
|
|
106
111
|
Positional parameters:
|
|
107
112
|
```typescript
|
|
108
|
-
await db.query('SELECT * FROM users WHERE
|
|
113
|
+
await db.query('SELECT * FROM users WHERE first_name = ? AND job_name = ?', ['John', 'police']);
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Raw queries (no parameter processing - no named params, no @ conversion, no undefined->null):
|
|
117
|
+
```typescript
|
|
118
|
+
// Use raw methods when you need direct control
|
|
119
|
+
const users = await db.rawQuery('SELECT * FROM users WHERE uid = ?', [1]);
|
|
120
|
+
const insertId = await db.rawInsert(
|
|
121
|
+
'INSERT INTO users (identifier_id, char_data_id, first_name, last_name, inventory_id) VALUES (?, ?, ?, ?, ?)',
|
|
122
|
+
[1, 1, 'John', 'Doe', 1]
|
|
123
|
+
);
|
|
124
|
+
|
|
125
|
+
// Regular methods process parameters automatically:
|
|
126
|
+
// - Convert @ to :
|
|
127
|
+
// - Support named parameters (:name)
|
|
128
|
+
// - Convert undefined to null
|
|
129
|
+
const users2 = await db.query('SELECT * FROM users WHERE uid = :uid', { uid: 1 });
|
|
109
130
|
```
|
|
110
131
|
|
|
111
132
|
TypeScript with type definitions:
|
|
@@ -113,11 +134,64 @@ TypeScript with type definitions:
|
|
|
113
134
|
import db from '@pma-network/sql';
|
|
114
135
|
|
|
115
136
|
interface User {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
137
|
+
uid: number;
|
|
138
|
+
identifier_id: number;
|
|
139
|
+
bank: number;
|
|
140
|
+
char_data_id: number;
|
|
141
|
+
first_name: string;
|
|
142
|
+
last_name: string;
|
|
143
|
+
job_name: string;
|
|
144
|
+
job_rank: number;
|
|
145
|
+
slot_id: number | null;
|
|
146
|
+
model: string | null;
|
|
147
|
+
inventory_id: number;
|
|
148
|
+
x: number;
|
|
149
|
+
y: number;
|
|
150
|
+
z: number;
|
|
151
|
+
is_deleted: boolean | null;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
const users = await db.query<User[]>('SELECT * FROM users WHERE job_name = :job', { job: 'police' });
|
|
155
|
+
const user = await db.single<User>('SELECT * FROM users WHERE uid = :uid', { uid: 1 });
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Transactions with success/failure:
|
|
159
|
+
```typescript
|
|
160
|
+
const { success, result, error } = await db.transaction(async (execute) => {
|
|
161
|
+
await execute('UPDATE users SET bank = bank + :amount WHERE uid = :uid', { amount: 1000, uid: 1 });
|
|
162
|
+
await execute('UPDATE users SET job_name = :job, job_rank = :rank WHERE uid = :uid', {
|
|
163
|
+
job: 'police',
|
|
164
|
+
rank: 1,
|
|
165
|
+
uid: 1
|
|
166
|
+
});
|
|
167
|
+
return { uid: 1 };
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
if (success) {
|
|
171
|
+
console.log('Transaction committed:', result);
|
|
172
|
+
} else {
|
|
173
|
+
console.error('Transaction rolled back:', error);
|
|
119
174
|
}
|
|
175
|
+
```
|
|
120
176
|
|
|
121
|
-
|
|
122
|
-
|
|
177
|
+
Batch operations for bulk inserts/updates:
|
|
178
|
+
```typescript
|
|
179
|
+
const { success, result } = await db.batch([
|
|
180
|
+
{
|
|
181
|
+
query: 'INSERT INTO users (identifier_id, char_data_id, first_name, last_name, inventory_id) VALUES (:identifier_id, :char_data_id, :first_name, :last_name, :inventory_id)',
|
|
182
|
+
parameters: { identifier_id: 1, char_data_id: 1, first_name: 'John', last_name: 'Doe', inventory_id: 1 }
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
query: 'INSERT INTO users (identifier_id, char_data_id, first_name, last_name, inventory_id) VALUES (:identifier_id, :char_data_id, :first_name, :last_name, :inventory_id)',
|
|
186
|
+
parameters: { identifier_id: 2, char_data_id: 2, first_name: 'Jane', last_name: 'Smith', inventory_id: 2 }
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
query: 'UPDATE users SET job_name = :job WHERE uid = :uid',
|
|
190
|
+
parameters: { job: 'police', uid: 1 }
|
|
191
|
+
}
|
|
192
|
+
]);
|
|
193
|
+
|
|
194
|
+
if (success) {
|
|
195
|
+
console.log(`Executed ${result.length} queries`);
|
|
196
|
+
}
|
|
123
197
|
```
|
package/dist/MySQL.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { Pool, PoolConnection, RowDataPacket } from 'mysql2/promise';
|
|
2
|
-
import
|
|
3
|
-
import type { ConnectionConfig, InsertResult, QueryParameters, TransactionCallback, UpdateResult } from './types.js';
|
|
2
|
+
import type { BatchQuery, ConnectionConfig, QueryParameters, TransactionCallback, TransactionResult } from './types.js';
|
|
4
3
|
/**
|
|
5
4
|
* MySQL database wrapper with connection pooling and named parameter support.
|
|
6
5
|
* Automatically reads connection configuration from environment variables.
|
|
@@ -15,12 +14,12 @@ export declare class MySQL {
|
|
|
15
14
|
private versionPrefix;
|
|
16
15
|
private metricsExportResource;
|
|
17
16
|
private metricsExportFunction;
|
|
18
|
-
private poolReady;
|
|
19
17
|
/**
|
|
20
18
|
* Creates a new MySQL instance with connection pooling.
|
|
21
19
|
* If no config is provided, it will automatically look for connection strings in environment variables.
|
|
22
20
|
*
|
|
23
21
|
* @param config - Optional database configuration. If omitted, uses environment variables.
|
|
22
|
+
* @throws {Error} If no connection string is found or if connection string validation fails
|
|
24
23
|
*/
|
|
25
24
|
constructor(config?: ConnectionConfig);
|
|
26
25
|
private getConvar;
|
|
@@ -28,71 +27,171 @@ export declare class MySQL {
|
|
|
28
27
|
private getConvarBool;
|
|
29
28
|
private getResourceName;
|
|
30
29
|
private formatResourceConvar;
|
|
30
|
+
/**
|
|
31
|
+
* Gets default configuration from environment variables.
|
|
32
|
+
*
|
|
33
|
+
* @returns ConnectionConfig object
|
|
34
|
+
* @throws {Error} If no connection string is found in environment variables
|
|
35
|
+
* @throws {Error} If connection string validation fails
|
|
36
|
+
*/
|
|
31
37
|
private getDefaultConfig;
|
|
38
|
+
/**
|
|
39
|
+
* Validates the connection string format.
|
|
40
|
+
*
|
|
41
|
+
* @param connectionString - Connection string to validate
|
|
42
|
+
* @throws {Error} If protocol is not 'mysql:'
|
|
43
|
+
* @throws {Error} If hostname is missing
|
|
44
|
+
* @throws {Error} If database name is missing
|
|
45
|
+
* @throws {Error} If username is missing
|
|
46
|
+
* @throws {Error} If connection string format is invalid
|
|
47
|
+
*/
|
|
32
48
|
private validateConnectionString;
|
|
49
|
+
/**
|
|
50
|
+
* Parses connection string into PoolOptions.
|
|
51
|
+
*
|
|
52
|
+
* @param connectionString - Connection string to parse
|
|
53
|
+
* @returns PoolOptions configuration object
|
|
54
|
+
* @throws {TypeError} If connection string is not a valid URL
|
|
55
|
+
*/
|
|
33
56
|
private parseConnectionString;
|
|
34
57
|
private normalizeParameters;
|
|
35
58
|
private setupConvarListeners;
|
|
36
59
|
private scheduleResourceTick;
|
|
60
|
+
private executeWithTiming;
|
|
37
61
|
private exportMetric;
|
|
62
|
+
private replaceAtSymbols;
|
|
63
|
+
/**
|
|
64
|
+
* Executes a query on a specific connection with timing and logging.
|
|
65
|
+
*
|
|
66
|
+
* @param connection - Database connection to use
|
|
67
|
+
* @param query - SQL query to execute
|
|
68
|
+
* @param parameters - Query parameters
|
|
69
|
+
* @returns Query result
|
|
70
|
+
* @throws Query execution errors (SQL errors, syntax errors, constraint violations, etc.)
|
|
71
|
+
*/
|
|
72
|
+
private executeInConnection;
|
|
73
|
+
private executeTransaction;
|
|
38
74
|
private processParameters;
|
|
39
75
|
private logQuery;
|
|
40
76
|
private handleError;
|
|
77
|
+
/**
|
|
78
|
+
* Executes a SQL query with raw positional parameters.
|
|
79
|
+
* This cannot use named parameters (i.e. :job_name, or @job_name), you cannot use undefined as a value here you *must* use null, otherwise you will get an error.
|
|
80
|
+
* Use ? placeholders only.
|
|
81
|
+
*
|
|
82
|
+
* @param query - SQL query with ? placeholders only
|
|
83
|
+
* @param parameters - Array of values (undefined values are NOT converted to null)
|
|
84
|
+
* @returns Query result
|
|
85
|
+
* @example
|
|
86
|
+
* const result = await db.rawExecute('SELECT * FROM users WHERE uid = ?', [1]);
|
|
87
|
+
*/
|
|
88
|
+
rawExecute<T = unknown>(query: string, parameters?: unknown[]): Promise<T | null>;
|
|
41
89
|
/**
|
|
42
90
|
* Executes a SQL query and returns the raw results.
|
|
43
91
|
* Supports SELECT, INSERT, UPDATE, DELETE, and other SQL statements.
|
|
92
|
+
* Processes named parameters (:name), converts undefined to null, and converts @ to :.
|
|
44
93
|
*
|
|
45
94
|
* @param query - SQL query with :name or ? placeholders
|
|
46
95
|
* @param parameters - Parameter values as object or array
|
|
47
96
|
* @returns Query result
|
|
48
97
|
* @example
|
|
49
|
-
* const result = await db.execute('SELECT * FROM users WHERE
|
|
98
|
+
* const result = await db.execute('SELECT * FROM users WHERE uid = :uid', { uid: 1 });
|
|
50
99
|
*/
|
|
51
100
|
execute<T = unknown>(query: string, parameters?: QueryParameters): Promise<T | null>;
|
|
101
|
+
/**
|
|
102
|
+
* Executes a SELECT query with raw positional parameters.
|
|
103
|
+
* This cannot use named parameters (i.e. :job_name, or @job_name), you cannot use undefined as a value here you *must* use null, otherwise you will get an error.
|
|
104
|
+
* Use ? placeholders only.
|
|
105
|
+
*
|
|
106
|
+
* @param query - SELECT query with ? placeholders only
|
|
107
|
+
* @param parameters - Array of values (undefined values are NOT converted to null)
|
|
108
|
+
* @returns Array of rows
|
|
109
|
+
* @example
|
|
110
|
+
* const users = await db.rawQuery('SELECT * FROM users WHERE job_name = ?', ['police']);
|
|
111
|
+
*/
|
|
112
|
+
rawQuery<T = RowDataPacket[]>(query: string, parameters?: unknown[]): Promise<T | null>;
|
|
52
113
|
/**
|
|
53
114
|
* Executes a SELECT query and returns rows.
|
|
54
115
|
* Use for queries returning multiple rows.
|
|
116
|
+
* Processes named parameters (:name), converts undefined to null, and converts @ to :.
|
|
55
117
|
*
|
|
56
118
|
* @param query - SELECT query with :name or ? placeholders
|
|
57
119
|
* @param parameters - Parameter values
|
|
58
120
|
* @returns Array of rows
|
|
59
121
|
* @example
|
|
60
|
-
* const users = await db.query('SELECT * FROM users WHERE
|
|
122
|
+
* const users = await db.query('SELECT * FROM users WHERE job_name = :job', { job: 'police' });
|
|
61
123
|
*/
|
|
62
124
|
query<T = RowDataPacket[]>(query: string, parameters?: QueryParameters): Promise<T | null>;
|
|
125
|
+
/**
|
|
126
|
+
* Inserts a row with raw positional parameters.
|
|
127
|
+
* This cannot use named parameters (i.e. :job_name, or @job_name), you cannot use undefined as a value here you *must* use null, otherwise you will get an error.
|
|
128
|
+
* Returns the auto-generated ID.
|
|
129
|
+
*
|
|
130
|
+
* @param query - INSERT query with ? placeholders only
|
|
131
|
+
* @param parameters - Array of values (undefined values are NOT converted to null)
|
|
132
|
+
* @returns Insert ID or null on error
|
|
133
|
+
* @example
|
|
134
|
+
* const insertId = await db.rawInsert('INSERT INTO users (identifier_id, char_data_id, first_name, last_name, inventory_id) VALUES (?, ?, ?, ?, ?)', [1, 1, 'John', 'Doe', 1]);
|
|
135
|
+
*/
|
|
136
|
+
rawInsert(query: string, parameters?: unknown[]): Promise<number | null>;
|
|
63
137
|
/**
|
|
64
138
|
* Inserts a row into the database.
|
|
65
|
-
* Returns the auto-generated ID
|
|
139
|
+
* Returns the auto-generated ID.
|
|
140
|
+
* Processes named parameters (:name), converts undefined to null, and converts @ to :.
|
|
66
141
|
*
|
|
67
142
|
* @param query - INSERT query with :name or ? placeholders
|
|
68
143
|
* @param parameters - Values to insert
|
|
69
|
-
* @returns
|
|
144
|
+
* @returns Insert ID or null on error
|
|
70
145
|
* @example
|
|
71
|
-
* const
|
|
72
|
-
* 'INSERT INTO users (
|
|
73
|
-
* {
|
|
146
|
+
* const insertId = await db.insert(
|
|
147
|
+
* 'INSERT INTO users (identifier_id, char_data_id, first_name, last_name, inventory_id) VALUES (:identifier_id, :char_data_id, :first_name, :last_name, :inventory_id)',
|
|
148
|
+
* { identifier_id: 1, char_data_id: 1, first_name: 'John', last_name: 'Doe', inventory_id: 1 }
|
|
74
149
|
* );
|
|
75
|
-
* console.log(result.insertId);
|
|
76
150
|
*/
|
|
77
|
-
insert(query: string, parameters?: QueryParameters): Promise<
|
|
151
|
+
insert(query: string, parameters?: QueryParameters): Promise<number | null>;
|
|
152
|
+
/**
|
|
153
|
+
* Updates rows with raw positional parameters.
|
|
154
|
+
* This cannot use named parameters (i.e. :job_name, or @job_name), you cannot use undefined as a value here you *must* use null, otherwise you will get an error.
|
|
155
|
+
* Returns the number of affected rows.
|
|
156
|
+
*
|
|
157
|
+
* @param query - UPDATE query with ? placeholders only
|
|
158
|
+
* @param parameters - Array of values (undefined values are NOT converted to null)
|
|
159
|
+
* @returns Number of affected rows or null on error
|
|
160
|
+
* @example
|
|
161
|
+
* const affectedRows = await db.rawUpdate('UPDATE users SET job_name = ?, job_rank = ? WHERE uid = ?', ['police', 1, 123]);
|
|
162
|
+
*/
|
|
163
|
+
rawUpdate(query: string, parameters?: unknown[]): Promise<number | null>;
|
|
78
164
|
/**
|
|
79
165
|
* Updates rows in the database.
|
|
80
166
|
* Returns the number of affected rows.
|
|
167
|
+
* Processes named parameters (:name), converts undefined to null, and converts @ to :.
|
|
81
168
|
*
|
|
82
169
|
* @param query - UPDATE query with :name or ? placeholders
|
|
83
170
|
* @param parameters - Values to update
|
|
84
|
-
* @returns
|
|
171
|
+
* @returns Number of affected rows or null on error
|
|
85
172
|
* @example
|
|
86
|
-
* const
|
|
87
|
-
* 'UPDATE users SET
|
|
88
|
-
* {
|
|
173
|
+
* const affectedRows = await db.update(
|
|
174
|
+
* 'UPDATE users SET job_name = :job, job_rank = :rank WHERE uid = :uid',
|
|
175
|
+
* { job: 'police', rank: 1, uid: 123 }
|
|
89
176
|
* );
|
|
90
|
-
* console.log(result.affectedRows);
|
|
91
177
|
*/
|
|
92
|
-
update(query: string, parameters?: QueryParameters): Promise<
|
|
178
|
+
update(query: string, parameters?: QueryParameters): Promise<number | null>;
|
|
179
|
+
/**
|
|
180
|
+
* Returns a single value with raw positional parameters.
|
|
181
|
+
* This cannot use named parameters (i.e. :job_name, or @job_name), you cannot use undefined as a value here you *must* use null, otherwise you will get an error.
|
|
182
|
+
* Use for COUNT, SUM, or single column queries.
|
|
183
|
+
*
|
|
184
|
+
* @param query - SELECT query with ? placeholders only, returning one column
|
|
185
|
+
* @param parameters - Array of values (undefined values are NOT converted to null)
|
|
186
|
+
* @returns Value from first column of first row, or null
|
|
187
|
+
* @example
|
|
188
|
+
* const count = await db.rawScalar('SELECT COUNT(*) FROM users WHERE age > ?', [18]);
|
|
189
|
+
*/
|
|
190
|
+
rawScalar<T = unknown>(query: string, parameters?: unknown[]): Promise<T | null>;
|
|
93
191
|
/**
|
|
94
192
|
* Returns a single value from the database.
|
|
95
193
|
* Use for COUNT, SUM, or single column queries.
|
|
194
|
+
* Processes named parameters (:name), converts undefined to null, and converts @ to :.
|
|
96
195
|
*
|
|
97
196
|
* @param query - SELECT query returning one column
|
|
98
197
|
* @param parameters - Parameter values
|
|
@@ -102,9 +201,22 @@ export declare class MySQL {
|
|
|
102
201
|
* const name = await db.scalar('SELECT name FROM users WHERE id = :id', { id: 1 });
|
|
103
202
|
*/
|
|
104
203
|
scalar<T = unknown>(query: string, parameters?: QueryParameters): Promise<T | null>;
|
|
204
|
+
/**
|
|
205
|
+
* Returns a single row with raw positional parameters.
|
|
206
|
+
* This cannot use named parameters (i.e. :job_name, or @job_name), you cannot use undefined as a value here you *must* use null, otherwise you will get an error.
|
|
207
|
+
* Returns null if no rows match.
|
|
208
|
+
*
|
|
209
|
+
* @param query - SELECT query with ? placeholders only
|
|
210
|
+
* @param parameters - Array of values (undefined values are NOT converted to null)
|
|
211
|
+
* @returns Single row or null
|
|
212
|
+
* @example
|
|
213
|
+
* const user = await db.rawSingle('SELECT * FROM users WHERE id = ?', [1]);
|
|
214
|
+
*/
|
|
215
|
+
rawSingle<T = RowDataPacket>(query: string, parameters?: unknown[]): Promise<T | null>;
|
|
105
216
|
/**
|
|
106
217
|
* Returns a single row from the database.
|
|
107
218
|
* Returns null if no rows match.
|
|
219
|
+
* Processes named parameters (:name), converts undefined to null, and converts @ to :.
|
|
108
220
|
*
|
|
109
221
|
* @param query - SELECT query with :name or ? placeholders
|
|
110
222
|
* @param parameters - Parameter values
|
|
@@ -116,45 +228,44 @@ export declare class MySQL {
|
|
|
116
228
|
* }
|
|
117
229
|
*/
|
|
118
230
|
single<T = RowDataPacket>(query: string, parameters?: QueryParameters): Promise<T | null>;
|
|
119
|
-
/**
|
|
120
|
-
* Prepares a statement for execution.
|
|
121
|
-
* Use for executing the same query multiple times with different parameters.
|
|
122
|
-
*
|
|
123
|
-
* @param query - SQL query to prepare
|
|
124
|
-
* @returns Prepared statement
|
|
125
|
-
* @example
|
|
126
|
-
* const stmt = await db.prepare('SELECT * FROM users WHERE id = ?');
|
|
127
|
-
*/
|
|
128
|
-
prepare(query: string): Promise<mysql.PreparedStatementInfo>;
|
|
129
231
|
/**
|
|
130
232
|
* Executes multiple queries as an atomic transaction.
|
|
131
233
|
* All changes are rolled back if any query fails.
|
|
132
234
|
*
|
|
133
235
|
* @param callback - Function receiving an execute function for queries
|
|
134
|
-
* @returns
|
|
236
|
+
* @returns TransactionResult with success status and result/error
|
|
135
237
|
* @example
|
|
136
|
-
* await db.transaction(async (execute) => {
|
|
238
|
+
* const { success, result, error } = await db.transaction(async (execute) => {
|
|
137
239
|
* await execute('INSERT INTO accounts (balance) VALUES (:balance)', { balance: 100 });
|
|
138
240
|
* await execute('UPDATE users SET has_account = 1 WHERE id = :id', { id: 1 });
|
|
241
|
+
* return { accountId: 123 };
|
|
139
242
|
* });
|
|
140
243
|
*/
|
|
141
|
-
transaction<T = unknown>(callback: TransactionCallback): Promise<T
|
|
244
|
+
transaction<T = unknown>(callback: TransactionCallback): Promise<TransactionResult<T>>;
|
|
142
245
|
/**
|
|
143
|
-
* Executes a
|
|
144
|
-
*
|
|
246
|
+
* Executes multiple queries in a batch within a transaction.
|
|
247
|
+
* All queries are executed atomically - either all succeed or all are rolled back.
|
|
248
|
+
* More efficient than executing queries one by one.
|
|
145
249
|
*
|
|
146
|
-
* @param
|
|
147
|
-
* @
|
|
148
|
-
* @returns Query result
|
|
250
|
+
* @param queries - Array of queries with their parameters
|
|
251
|
+
* @returns TransactionResult with success status and array of results
|
|
149
252
|
* @example
|
|
150
|
-
* const result = await db.
|
|
253
|
+
* const { success, result } = await db.batch([
|
|
254
|
+
* { query: 'INSERT INTO users (name) VALUES (:name)', parameters: { name: 'John' } },
|
|
255
|
+
* { query: 'INSERT INTO users (name) VALUES (:name)', parameters: { name: 'Jane' } },
|
|
256
|
+
* { query: 'UPDATE accounts SET balance = :balance WHERE id = :id', parameters: { balance: 100, id: 1 } }
|
|
257
|
+
* ]);
|
|
258
|
+
* if (success) {
|
|
259
|
+
* console.log(`Executed ${result.length} queries`);
|
|
260
|
+
* }
|
|
151
261
|
*/
|
|
152
|
-
|
|
262
|
+
batch(queries: BatchQuery[]): Promise<TransactionResult<any[]>>;
|
|
153
263
|
/**
|
|
154
264
|
* Returns a connection from the pool.
|
|
155
265
|
* Must call connection.release() when finished.
|
|
156
266
|
*
|
|
157
267
|
* @returns Database connection
|
|
268
|
+
* @throws {Error} If pool is unable to provide a connection (pool exhausted, connection timeout, etc.)
|
|
158
269
|
* @example
|
|
159
270
|
* const connection = await db.getConnection();
|
|
160
271
|
* try {
|
|
@@ -168,6 +279,7 @@ export declare class MySQL {
|
|
|
168
279
|
* Closes all connections in the pool.
|
|
169
280
|
* Call when shutting down the application.
|
|
170
281
|
*
|
|
282
|
+
* @throws {Error} If pool fails to close connections
|
|
171
283
|
* @example
|
|
172
284
|
* await db.end();
|
|
173
285
|
*/
|
package/dist/MySQL.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MySQL.d.ts","sourceRoot":"","sources":["../src/MySQL.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,IAAI,EACJ,cAAc,EAGd,aAAa,EACd,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"MySQL.d.ts","sourceRoot":"","sources":["../src/MySQL.ts"],"names":[],"mappings":"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"}
|
package/dist/MySQL.js
CHANGED
|
@@ -15,12 +15,12 @@ export class MySQL {
|
|
|
15
15
|
versionPrefix = '';
|
|
16
16
|
metricsExportResource;
|
|
17
17
|
metricsExportFunction;
|
|
18
|
-
poolReady;
|
|
19
18
|
/**
|
|
20
19
|
* Creates a new MySQL instance with connection pooling.
|
|
21
20
|
* If no config is provided, it will automatically look for connection strings in environment variables.
|
|
22
21
|
*
|
|
23
22
|
* @param config - Optional database configuration. If omitted, uses environment variables.
|
|
23
|
+
* @throws {Error} If no connection string is found or if connection string validation fails
|
|
24
24
|
*/
|
|
25
25
|
constructor(config) {
|
|
26
26
|
this.resourceName = this.getResourceName();
|
|
@@ -41,7 +41,7 @@ export class MySQL {
|
|
|
41
41
|
...poolConfig,
|
|
42
42
|
});
|
|
43
43
|
this.namedPlaceholdersCompiler = namedPlaceholders();
|
|
44
|
-
this.
|
|
44
|
+
this.pool.getConnection().then(conn => {
|
|
45
45
|
const serverVersion = conn.connection?._handshakePacket?.serverVersion;
|
|
46
46
|
if (serverVersion) {
|
|
47
47
|
this.versionPrefix = `^4[${serverVersion}]^0 `;
|
|
@@ -85,6 +85,13 @@ export class MySQL {
|
|
|
85
85
|
formatResourceConvar(resourceName) {
|
|
86
86
|
return resourceName.replace(/-/g, '_').toLowerCase();
|
|
87
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* Gets default configuration from environment variables.
|
|
90
|
+
*
|
|
91
|
+
* @returns ConnectionConfig object
|
|
92
|
+
* @throws {Error} If no connection string is found in environment variables
|
|
93
|
+
* @throws {Error} If connection string validation fails
|
|
94
|
+
*/
|
|
88
95
|
getDefaultConfig() {
|
|
89
96
|
let connectionString = null;
|
|
90
97
|
const resourceName = this.getResourceName();
|
|
@@ -107,6 +114,16 @@ export class MySQL {
|
|
|
107
114
|
this.validateConnectionString(connectionString);
|
|
108
115
|
return { connectionString };
|
|
109
116
|
}
|
|
117
|
+
/**
|
|
118
|
+
* Validates the connection string format.
|
|
119
|
+
*
|
|
120
|
+
* @param connectionString - Connection string to validate
|
|
121
|
+
* @throws {Error} If protocol is not 'mysql:'
|
|
122
|
+
* @throws {Error} If hostname is missing
|
|
123
|
+
* @throws {Error} If database name is missing
|
|
124
|
+
* @throws {Error} If username is missing
|
|
125
|
+
* @throws {Error} If connection string format is invalid
|
|
126
|
+
*/
|
|
110
127
|
validateConnectionString(connectionString) {
|
|
111
128
|
try {
|
|
112
129
|
const url = new URL(connectionString);
|
|
@@ -131,6 +148,13 @@ export class MySQL {
|
|
|
131
148
|
throw error;
|
|
132
149
|
}
|
|
133
150
|
}
|
|
151
|
+
/**
|
|
152
|
+
* Parses connection string into PoolOptions.
|
|
153
|
+
*
|
|
154
|
+
* @param connectionString - Connection string to parse
|
|
155
|
+
* @returns PoolOptions configuration object
|
|
156
|
+
* @throws {TypeError} If connection string is not a valid URL
|
|
157
|
+
*/
|
|
134
158
|
parseConnectionString(connectionString) {
|
|
135
159
|
const url = new URL(connectionString);
|
|
136
160
|
return {
|
|
@@ -188,6 +212,21 @@ export class MySQL {
|
|
|
188
212
|
globalThis.ScheduleResourceTick(this.resourceName);
|
|
189
213
|
}
|
|
190
214
|
}
|
|
215
|
+
async executeWithTiming(processedQuery, processedParams, executor) {
|
|
216
|
+
const startTime = performance.now();
|
|
217
|
+
try {
|
|
218
|
+
const result = await executor();
|
|
219
|
+
const executionTime = performance.now() - startTime;
|
|
220
|
+
this.logQuery(processedQuery, executionTime, processedParams);
|
|
221
|
+
return result;
|
|
222
|
+
}
|
|
223
|
+
catch (error) {
|
|
224
|
+
const executionTime = performance.now() - startTime;
|
|
225
|
+
this.logQuery(processedQuery, executionTime, processedParams, error);
|
|
226
|
+
this.handleError(error);
|
|
227
|
+
return null;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
191
230
|
exportMetric(metric) {
|
|
192
231
|
if (this.metricsExportResource && this.metricsExportFunction) {
|
|
193
232
|
try {
|
|
@@ -196,8 +235,53 @@ export class MySQL {
|
|
|
196
235
|
catch (error) { }
|
|
197
236
|
}
|
|
198
237
|
}
|
|
238
|
+
replaceAtSymbols(query) {
|
|
239
|
+
return query.replace(/@/g, ':');
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Executes a query on a specific connection with timing and logging.
|
|
243
|
+
*
|
|
244
|
+
* @param connection - Database connection to use
|
|
245
|
+
* @param query - SQL query to execute
|
|
246
|
+
* @param parameters - Query parameters
|
|
247
|
+
* @returns Query result
|
|
248
|
+
* @throws Query execution errors (SQL errors, syntax errors, constraint violations, etc.)
|
|
249
|
+
*/
|
|
250
|
+
async executeInConnection(connection, query, parameters) {
|
|
251
|
+
this.scheduleResourceTick();
|
|
252
|
+
const [processedQuery, processedParams] = this.processParameters(query, parameters);
|
|
253
|
+
const startTime = performance.now();
|
|
254
|
+
try {
|
|
255
|
+
const [result] = await connection.execute(processedQuery, processedParams);
|
|
256
|
+
const executionTime = performance.now() - startTime;
|
|
257
|
+
this.logQuery(processedQuery, executionTime, processedParams);
|
|
258
|
+
return result;
|
|
259
|
+
}
|
|
260
|
+
catch (error) {
|
|
261
|
+
const executionTime = performance.now() - startTime;
|
|
262
|
+
this.logQuery(processedQuery, executionTime, processedParams, error);
|
|
263
|
+
throw error;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
async executeTransaction(callback) {
|
|
267
|
+
const connection = await this.pool.getConnection();
|
|
268
|
+
try {
|
|
269
|
+
await connection.beginTransaction();
|
|
270
|
+
const result = await callback(connection);
|
|
271
|
+
await connection.commit();
|
|
272
|
+
return { success: true, result };
|
|
273
|
+
}
|
|
274
|
+
catch (error) {
|
|
275
|
+
await connection.rollback();
|
|
276
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
277
|
+
return { success: false, error: errorMessage };
|
|
278
|
+
}
|
|
279
|
+
finally {
|
|
280
|
+
connection.release();
|
|
281
|
+
}
|
|
282
|
+
}
|
|
199
283
|
processParameters(query, parameters) {
|
|
200
|
-
const processedQuery =
|
|
284
|
+
const processedQuery = this.replaceAtSymbols(query);
|
|
201
285
|
if (!parameters) {
|
|
202
286
|
return [processedQuery, []];
|
|
203
287
|
}
|
|
@@ -246,132 +330,176 @@ export class MySQL {
|
|
|
246
330
|
throw error;
|
|
247
331
|
}
|
|
248
332
|
}
|
|
333
|
+
/**
|
|
334
|
+
* Executes a SQL query with raw positional parameters.
|
|
335
|
+
* This cannot use named parameters (i.e. :job_name, or @job_name), you cannot use undefined as a value here you *must* use null, otherwise you will get an error.
|
|
336
|
+
* Use ? placeholders only.
|
|
337
|
+
*
|
|
338
|
+
* @param query - SQL query with ? placeholders only
|
|
339
|
+
* @param parameters - Array of values (undefined values are NOT converted to null)
|
|
340
|
+
* @returns Query result
|
|
341
|
+
* @example
|
|
342
|
+
* const result = await db.rawExecute('SELECT * FROM users WHERE uid = ?', [1]);
|
|
343
|
+
*/
|
|
344
|
+
async rawExecute(query, parameters) {
|
|
345
|
+
this.scheduleResourceTick();
|
|
346
|
+
const params = parameters || [];
|
|
347
|
+
return this.executeWithTiming(query, params, async () => {
|
|
348
|
+
const [results] = await this.pool.execute(query, params);
|
|
349
|
+
return results;
|
|
350
|
+
});
|
|
351
|
+
}
|
|
249
352
|
/**
|
|
250
353
|
* Executes a SQL query and returns the raw results.
|
|
251
354
|
* Supports SELECT, INSERT, UPDATE, DELETE, and other SQL statements.
|
|
355
|
+
* Processes named parameters (:name), converts undefined to null, and converts @ to :.
|
|
252
356
|
*
|
|
253
357
|
* @param query - SQL query with :name or ? placeholders
|
|
254
358
|
* @param parameters - Parameter values as object or array
|
|
255
359
|
* @returns Query result
|
|
256
360
|
* @example
|
|
257
|
-
* const result = await db.execute('SELECT * FROM users WHERE
|
|
361
|
+
* const result = await db.execute('SELECT * FROM users WHERE uid = :uid', { uid: 1 });
|
|
258
362
|
*/
|
|
259
363
|
async execute(query, parameters) {
|
|
260
|
-
this.scheduleResourceTick();
|
|
261
364
|
const [processedQuery, processedParams] = this.processParameters(query, parameters);
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
365
|
+
return this.rawExecute(processedQuery, processedParams);
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* Executes a SELECT query with raw positional parameters.
|
|
369
|
+
* This cannot use named parameters (i.e. :job_name, or @job_name), you cannot use undefined as a value here you *must* use null, otherwise you will get an error.
|
|
370
|
+
* Use ? placeholders only.
|
|
371
|
+
*
|
|
372
|
+
* @param query - SELECT query with ? placeholders only
|
|
373
|
+
* @param parameters - Array of values (undefined values are NOT converted to null)
|
|
374
|
+
* @returns Array of rows
|
|
375
|
+
* @example
|
|
376
|
+
* const users = await db.rawQuery('SELECT * FROM users WHERE job_name = ?', ['police']);
|
|
377
|
+
*/
|
|
378
|
+
async rawQuery(query, parameters) {
|
|
379
|
+
this.scheduleResourceTick();
|
|
380
|
+
const params = parameters || [];
|
|
381
|
+
return this.executeWithTiming(query, params, async () => {
|
|
382
|
+
const [rows] = await this.pool.query(query, params);
|
|
383
|
+
return rows;
|
|
384
|
+
});
|
|
276
385
|
}
|
|
277
386
|
/**
|
|
278
387
|
* Executes a SELECT query and returns rows.
|
|
279
388
|
* Use for queries returning multiple rows.
|
|
389
|
+
* Processes named parameters (:name), converts undefined to null, and converts @ to :.
|
|
280
390
|
*
|
|
281
391
|
* @param query - SELECT query with :name or ? placeholders
|
|
282
392
|
* @param parameters - Parameter values
|
|
283
393
|
* @returns Array of rows
|
|
284
394
|
* @example
|
|
285
|
-
* const users = await db.query('SELECT * FROM users WHERE
|
|
395
|
+
* const users = await db.query('SELECT * FROM users WHERE job_name = :job', { job: 'police' });
|
|
286
396
|
*/
|
|
287
397
|
async query(query, parameters) {
|
|
288
|
-
this.scheduleResourceTick();
|
|
289
398
|
const [processedQuery, processedParams] = this.processParameters(query, parameters);
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
399
|
+
return this.rawQuery(processedQuery, processedParams);
|
|
400
|
+
}
|
|
401
|
+
/**
|
|
402
|
+
* Inserts a row with raw positional parameters.
|
|
403
|
+
* This cannot use named parameters (i.e. :job_name, or @job_name), you cannot use undefined as a value here you *must* use null, otherwise you will get an error.
|
|
404
|
+
* Returns the auto-generated ID.
|
|
405
|
+
*
|
|
406
|
+
* @param query - INSERT query with ? placeholders only
|
|
407
|
+
* @param parameters - Array of values (undefined values are NOT converted to null)
|
|
408
|
+
* @returns Insert ID or null on error
|
|
409
|
+
* @example
|
|
410
|
+
* const insertId = await db.rawInsert('INSERT INTO users (identifier_id, char_data_id, first_name, last_name, inventory_id) VALUES (?, ?, ?, ?, ?)', [1, 1, 'John', 'Doe', 1]);
|
|
411
|
+
*/
|
|
412
|
+
async rawInsert(query, parameters) {
|
|
413
|
+
this.scheduleResourceTick();
|
|
414
|
+
const params = parameters || [];
|
|
415
|
+
return this.executeWithTiming(query, params, async () => {
|
|
416
|
+
const [result] = await this.pool.execute(query, params);
|
|
417
|
+
return result.insertId;
|
|
418
|
+
});
|
|
304
419
|
}
|
|
305
420
|
/**
|
|
306
421
|
* Inserts a row into the database.
|
|
307
|
-
* Returns the auto-generated ID
|
|
422
|
+
* Returns the auto-generated ID.
|
|
423
|
+
* Processes named parameters (:name), converts undefined to null, and converts @ to :.
|
|
308
424
|
*
|
|
309
425
|
* @param query - INSERT query with :name or ? placeholders
|
|
310
426
|
* @param parameters - Values to insert
|
|
311
|
-
* @returns
|
|
427
|
+
* @returns Insert ID or null on error
|
|
312
428
|
* @example
|
|
313
|
-
* const
|
|
314
|
-
* 'INSERT INTO users (
|
|
315
|
-
* {
|
|
429
|
+
* const insertId = await db.insert(
|
|
430
|
+
* 'INSERT INTO users (identifier_id, char_data_id, first_name, last_name, inventory_id) VALUES (:identifier_id, :char_data_id, :first_name, :last_name, :inventory_id)',
|
|
431
|
+
* { identifier_id: 1, char_data_id: 1, first_name: 'John', last_name: 'Doe', inventory_id: 1 }
|
|
316
432
|
* );
|
|
317
|
-
* console.log(result.insertId);
|
|
318
433
|
*/
|
|
319
434
|
async insert(query, parameters) {
|
|
320
435
|
const [processedQuery, processedParams] = this.processParameters(query, parameters);
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
436
|
+
return this.rawInsert(processedQuery, processedParams);
|
|
437
|
+
}
|
|
438
|
+
/**
|
|
439
|
+
* Updates rows with raw positional parameters.
|
|
440
|
+
* This cannot use named parameters (i.e. :job_name, or @job_name), you cannot use undefined as a value here you *must* use null, otherwise you will get an error.
|
|
441
|
+
* Returns the number of affected rows.
|
|
442
|
+
*
|
|
443
|
+
* @param query - UPDATE query with ? placeholders only
|
|
444
|
+
* @param parameters - Array of values (undefined values are NOT converted to null)
|
|
445
|
+
* @returns Number of affected rows or null on error
|
|
446
|
+
* @example
|
|
447
|
+
* const affectedRows = await db.rawUpdate('UPDATE users SET job_name = ?, job_rank = ? WHERE uid = ?', ['police', 1, 123]);
|
|
448
|
+
*/
|
|
449
|
+
async rawUpdate(query, parameters) {
|
|
450
|
+
this.scheduleResourceTick();
|
|
451
|
+
const params = parameters || [];
|
|
452
|
+
return this.executeWithTiming(query, params, async () => {
|
|
453
|
+
const [result] = await this.pool.execute(query, params);
|
|
454
|
+
return result.affectedRows;
|
|
455
|
+
});
|
|
338
456
|
}
|
|
339
457
|
/**
|
|
340
458
|
* Updates rows in the database.
|
|
341
459
|
* Returns the number of affected rows.
|
|
460
|
+
* Processes named parameters (:name), converts undefined to null, and converts @ to :.
|
|
342
461
|
*
|
|
343
462
|
* @param query - UPDATE query with :name or ? placeholders
|
|
344
463
|
* @param parameters - Values to update
|
|
345
|
-
* @returns
|
|
464
|
+
* @returns Number of affected rows or null on error
|
|
346
465
|
* @example
|
|
347
|
-
* const
|
|
348
|
-
* 'UPDATE users SET
|
|
349
|
-
* {
|
|
466
|
+
* const affectedRows = await db.update(
|
|
467
|
+
* 'UPDATE users SET job_name = :job, job_rank = :rank WHERE uid = :uid',
|
|
468
|
+
* { job: 'police', rank: 1, uid: 123 }
|
|
350
469
|
* );
|
|
351
|
-
* console.log(result.affectedRows);
|
|
352
470
|
*/
|
|
353
471
|
async update(query, parameters) {
|
|
354
472
|
const [processedQuery, processedParams] = this.processParameters(query, parameters);
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
473
|
+
return this.rawUpdate(processedQuery, processedParams);
|
|
474
|
+
}
|
|
475
|
+
/**
|
|
476
|
+
* Returns a single value with raw positional parameters.
|
|
477
|
+
* This cannot use named parameters (i.e. :job_name, or @job_name), you cannot use undefined as a value here you *must* use null, otherwise you will get an error.
|
|
478
|
+
* Use for COUNT, SUM, or single column queries.
|
|
479
|
+
*
|
|
480
|
+
* @param query - SELECT query with ? placeholders only, returning one column
|
|
481
|
+
* @param parameters - Array of values (undefined values are NOT converted to null)
|
|
482
|
+
* @returns Value from first column of first row, or null
|
|
483
|
+
* @example
|
|
484
|
+
* const count = await db.rawScalar('SELECT COUNT(*) FROM users WHERE age > ?', [18]);
|
|
485
|
+
*/
|
|
486
|
+
async rawScalar(query, parameters) {
|
|
487
|
+
this.scheduleResourceTick();
|
|
488
|
+
const params = parameters || [];
|
|
489
|
+
return this.executeWithTiming(query, params, async () => {
|
|
490
|
+
const [rows] = await this.pool.query(query, params);
|
|
491
|
+
if (!rows || rows.length === 0) {
|
|
492
|
+
return null;
|
|
493
|
+
}
|
|
494
|
+
const firstRow = rows[0];
|
|
495
|
+
const firstColumn = Object.values(firstRow)[0];
|
|
496
|
+
return firstColumn;
|
|
497
|
+
});
|
|
371
498
|
}
|
|
372
499
|
/**
|
|
373
500
|
* Returns a single value from the database.
|
|
374
501
|
* Use for COUNT, SUM, or single column queries.
|
|
502
|
+
* Processes named parameters (:name), converts undefined to null, and converts @ to :.
|
|
375
503
|
*
|
|
376
504
|
* @param query - SELECT query returning one column
|
|
377
505
|
* @param parameters - Parameter values
|
|
@@ -382,29 +510,31 @@ export class MySQL {
|
|
|
382
510
|
*/
|
|
383
511
|
async scalar(query, parameters) {
|
|
384
512
|
const [processedQuery, processedParams] = this.processParameters(query, parameters);
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
513
|
+
return this.rawScalar(processedQuery, processedParams);
|
|
514
|
+
}
|
|
515
|
+
/**
|
|
516
|
+
* Returns a single row with raw positional parameters.
|
|
517
|
+
* This cannot use named parameters (i.e. :job_name, or @job_name), you cannot use undefined as a value here you *must* use null, otherwise you will get an error.
|
|
518
|
+
* Returns null if no rows match.
|
|
519
|
+
*
|
|
520
|
+
* @param query - SELECT query with ? placeholders only
|
|
521
|
+
* @param parameters - Array of values (undefined values are NOT converted to null)
|
|
522
|
+
* @returns Single row or null
|
|
523
|
+
* @example
|
|
524
|
+
* const user = await db.rawSingle('SELECT * FROM users WHERE id = ?', [1]);
|
|
525
|
+
*/
|
|
526
|
+
async rawSingle(query, parameters) {
|
|
527
|
+
this.scheduleResourceTick();
|
|
528
|
+
const params = parameters || [];
|
|
529
|
+
return this.executeWithTiming(query, params, async () => {
|
|
530
|
+
const [rows] = await this.pool.query(query, params);
|
|
531
|
+
return rows.length > 0 ? rows[0] : null;
|
|
532
|
+
});
|
|
404
533
|
}
|
|
405
534
|
/**
|
|
406
535
|
* Returns a single row from the database.
|
|
407
536
|
* Returns null if no rows match.
|
|
537
|
+
* Processes named parameters (:name), converts undefined to null, and converts @ to :.
|
|
408
538
|
*
|
|
409
539
|
* @param query - SELECT query with :name or ? placeholders
|
|
410
540
|
* @param parameters - Parameter values
|
|
@@ -417,128 +547,64 @@ export class MySQL {
|
|
|
417
547
|
*/
|
|
418
548
|
async single(query, parameters) {
|
|
419
549
|
const [processedQuery, processedParams] = this.processParameters(query, parameters);
|
|
420
|
-
|
|
421
|
-
const startTime = performance.now();
|
|
422
|
-
try {
|
|
423
|
-
const [rows] = await this.pool.query(processedQuery, processedParams);
|
|
424
|
-
const executionTime = performance.now() - startTime;
|
|
425
|
-
this.logQuery(processedQuery, executionTime, processedParams);
|
|
426
|
-
return rows.length > 0 ? rows[0] : null;
|
|
427
|
-
}
|
|
428
|
-
catch (error) {
|
|
429
|
-
const executionTime = performance.now() - startTime;
|
|
430
|
-
this.logQuery(processedQuery, executionTime, processedParams, error);
|
|
431
|
-
this.handleError(error);
|
|
432
|
-
return null;
|
|
433
|
-
}
|
|
434
|
-
}
|
|
435
|
-
/**
|
|
436
|
-
* Prepares a statement for execution.
|
|
437
|
-
* Use for executing the same query multiple times with different parameters.
|
|
438
|
-
*
|
|
439
|
-
* @param query - SQL query to prepare
|
|
440
|
-
* @returns Prepared statement
|
|
441
|
-
* @example
|
|
442
|
-
* const stmt = await db.prepare('SELECT * FROM users WHERE id = ?');
|
|
443
|
-
*/
|
|
444
|
-
async prepare(query) {
|
|
445
|
-
this.scheduleResourceTick();
|
|
446
|
-
const connection = await this.pool.getConnection();
|
|
447
|
-
try {
|
|
448
|
-
const processedQuery = query.replace(/@/g, ':');
|
|
449
|
-
const statement = await connection.prepare(processedQuery);
|
|
450
|
-
return statement;
|
|
451
|
-
}
|
|
452
|
-
finally {
|
|
453
|
-
connection.release();
|
|
454
|
-
}
|
|
550
|
+
return this.rawSingle(processedQuery, processedParams);
|
|
455
551
|
}
|
|
456
552
|
/**
|
|
457
553
|
* Executes multiple queries as an atomic transaction.
|
|
458
554
|
* All changes are rolled back if any query fails.
|
|
459
555
|
*
|
|
460
556
|
* @param callback - Function receiving an execute function for queries
|
|
461
|
-
* @returns
|
|
557
|
+
* @returns TransactionResult with success status and result/error
|
|
462
558
|
* @example
|
|
463
|
-
* await db.transaction(async (execute) => {
|
|
559
|
+
* const { success, result, error } = await db.transaction(async (execute) => {
|
|
464
560
|
* await execute('INSERT INTO accounts (balance) VALUES (:balance)', { balance: 100 });
|
|
465
561
|
* await execute('UPDATE users SET has_account = 1 WHERE id = :id', { id: 1 });
|
|
562
|
+
* return { accountId: 123 };
|
|
466
563
|
* });
|
|
467
564
|
*/
|
|
468
565
|
async transaction(callback) {
|
|
469
566
|
this.scheduleResourceTick();
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
await connection.beginTransaction();
|
|
474
|
-
const executeInTransaction = async (query, parameters) => {
|
|
475
|
-
this.scheduleResourceTick();
|
|
476
|
-
const [processedQuery, processedParams] = this.processParameters(query, parameters);
|
|
477
|
-
const startTime = performance.now();
|
|
478
|
-
try {
|
|
479
|
-
const [result] = await connection.execute(processedQuery, processedParams);
|
|
480
|
-
const executionTime = performance.now() - startTime;
|
|
481
|
-
this.logQuery(processedQuery, executionTime, processedParams);
|
|
482
|
-
return result;
|
|
483
|
-
}
|
|
484
|
-
catch (error) {
|
|
485
|
-
const executionTime = performance.now() - startTime;
|
|
486
|
-
this.logQuery(processedQuery, executionTime, processedParams, error);
|
|
487
|
-
throw error;
|
|
488
|
-
}
|
|
567
|
+
return this.executeTransaction(async (connection) => {
|
|
568
|
+
const executeInTransaction = (query, parameters) => {
|
|
569
|
+
return this.executeInConnection(connection, query, parameters);
|
|
489
570
|
};
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
return result;
|
|
493
|
-
}
|
|
494
|
-
catch (error) {
|
|
495
|
-
await connection.rollback();
|
|
496
|
-
this.handleError(error);
|
|
497
|
-
return null;
|
|
498
|
-
}
|
|
499
|
-
finally {
|
|
500
|
-
connection.release();
|
|
501
|
-
}
|
|
571
|
+
return callback(executeInTransaction);
|
|
572
|
+
});
|
|
502
573
|
}
|
|
503
574
|
/**
|
|
504
|
-
* Executes a
|
|
505
|
-
*
|
|
575
|
+
* Executes multiple queries in a batch within a transaction.
|
|
576
|
+
* All queries are executed atomically - either all succeed or all are rolled back.
|
|
577
|
+
* More efficient than executing queries one by one.
|
|
506
578
|
*
|
|
507
|
-
* @param
|
|
508
|
-
* @
|
|
509
|
-
* @returns Query result
|
|
579
|
+
* @param queries - Array of queries with their parameters
|
|
580
|
+
* @returns TransactionResult with success status and array of results
|
|
510
581
|
* @example
|
|
511
|
-
* const result = await db.
|
|
582
|
+
* const { success, result } = await db.batch([
|
|
583
|
+
* { query: 'INSERT INTO users (name) VALUES (:name)', parameters: { name: 'John' } },
|
|
584
|
+
* { query: 'INSERT INTO users (name) VALUES (:name)', parameters: { name: 'Jane' } },
|
|
585
|
+
* { query: 'UPDATE accounts SET balance = :balance WHERE id = :id', parameters: { balance: 100, id: 1 } }
|
|
586
|
+
* ]);
|
|
587
|
+
* if (success) {
|
|
588
|
+
* console.log(`Executed ${result.length} queries`);
|
|
589
|
+
* }
|
|
512
590
|
*/
|
|
513
|
-
async
|
|
591
|
+
async batch(queries) {
|
|
514
592
|
this.scheduleResourceTick();
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
593
|
+
return this.executeTransaction(async (connection) => {
|
|
594
|
+
const results = [];
|
|
595
|
+
for (const { query, parameters } of queries) {
|
|
596
|
+
const result = await this.executeInConnection(connection, query, parameters);
|
|
597
|
+
results.push(result);
|
|
520
598
|
}
|
|
521
|
-
}
|
|
522
|
-
await this.poolReady;
|
|
523
|
-
const startTime = performance.now();
|
|
524
|
-
try {
|
|
525
|
-
const [results] = await this.pool.execute(processedQuery, params);
|
|
526
|
-
const executionTime = performance.now() - startTime;
|
|
527
|
-
this.logQuery(processedQuery, executionTime, params);
|
|
528
599
|
return results;
|
|
529
|
-
}
|
|
530
|
-
catch (error) {
|
|
531
|
-
const executionTime = performance.now() - startTime;
|
|
532
|
-
this.logQuery(processedQuery, executionTime, params, error);
|
|
533
|
-
this.handleError(error);
|
|
534
|
-
return null;
|
|
535
|
-
}
|
|
600
|
+
});
|
|
536
601
|
}
|
|
537
602
|
/**
|
|
538
603
|
* Returns a connection from the pool.
|
|
539
604
|
* Must call connection.release() when finished.
|
|
540
605
|
*
|
|
541
606
|
* @returns Database connection
|
|
607
|
+
* @throws {Error} If pool is unable to provide a connection (pool exhausted, connection timeout, etc.)
|
|
542
608
|
* @example
|
|
543
609
|
* const connection = await db.getConnection();
|
|
544
610
|
* try {
|
|
@@ -554,6 +620,7 @@ export class MySQL {
|
|
|
554
620
|
* Closes all connections in the pool.
|
|
555
621
|
* Call when shutting down the application.
|
|
556
622
|
*
|
|
623
|
+
* @throws {Error} If pool fails to close connections
|
|
557
624
|
* @example
|
|
558
625
|
* await db.end();
|
|
559
626
|
*/
|
package/dist/MySQL.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MySQL.js","sourceRoot":"","sources":["../src/MySQL.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MySQL.js","sourceRoot":"","sources":["../src/MySQL.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { MySQL } from './MySQL.js';
|
|
2
2
|
export { MySQL };
|
|
3
|
-
export type { ConnectionConfig, FieldPacket,
|
|
3
|
+
export type { BatchQuery, ConnectionConfig, FieldPacket, Pool, PoolOptions, QueryMetrics, QueryParameters, QueryResult, ResultSetHeader, RowDataPacket, TransactionCallback, TransactionResult, } from './types.js';
|
|
4
4
|
export declare const db: MySQL;
|
|
5
5
|
export default db;
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,KAAK,EAAE,CAAC;AACjB,YAAY,EACV,gBAAgB,EAChB,WAAW,EACX,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,KAAK,EAAE,CAAC;AACjB,YAAY,EACV,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,IAAI,EACJ,WAAW,EACX,YAAY,EACZ,eAAe,EACf,WAAW,EACX,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,EAAE,OAAc,CAAC;AAC9B,eAAe,EAAE,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -4,16 +4,18 @@ export interface ConnectionConfig extends PoolOptions {
|
|
|
4
4
|
}
|
|
5
5
|
export type QueryParameters = Record<string, any> | any[];
|
|
6
6
|
export type QueryResult<T = any> = T extends RowDataPacket[] ? T : any;
|
|
7
|
-
export interface InsertResult {
|
|
8
|
-
insertId: number;
|
|
9
|
-
affectedRows: number;
|
|
10
|
-
}
|
|
11
|
-
export interface UpdateResult {
|
|
12
|
-
affectedRows: number;
|
|
13
|
-
}
|
|
14
7
|
export interface TransactionCallback {
|
|
15
8
|
(execute: (query: string, parameters?: QueryParameters) => Promise<any>): Promise<any>;
|
|
16
9
|
}
|
|
10
|
+
export interface TransactionResult<T = any> {
|
|
11
|
+
success: boolean;
|
|
12
|
+
result?: T;
|
|
13
|
+
error?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface BatchQuery {
|
|
16
|
+
query: string;
|
|
17
|
+
parameters?: QueryParameters;
|
|
18
|
+
}
|
|
17
19
|
export interface QueryMetrics {
|
|
18
20
|
query: string;
|
|
19
21
|
executionTime: number;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAErG,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC;AAE1D,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,aAAa,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;AAEvE,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAErG,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC;AAE1D,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,aAAa,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;AAEvE,MAAM,WAAW,mBAAmB;IAClC,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,eAAe,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;CACxF;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC,GAAG,GAAG;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,CAAC,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,eAAe,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,CAAC"}
|
package/package.json
CHANGED