@simplysm/orm-node 13.0.75 → 13.0.77
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 +241 -243
- package/dist/connections/mssql-db-conn.d.ts.map +1 -1
- package/dist/connections/mssql-db-conn.js +12 -12
- package/dist/connections/mssql-db-conn.js.map +1 -1
- package/dist/connections/mysql-db-conn.d.ts.map +1 -1
- package/dist/connections/mysql-db-conn.js +6 -6
- package/dist/connections/mysql-db-conn.js.map +1 -1
- package/dist/connections/postgresql-db-conn.d.ts.map +1 -1
- package/dist/connections/postgresql-db-conn.js +8 -8
- package/dist/connections/postgresql-db-conn.js.map +1 -1
- package/dist/create-orm.d.ts +2 -2
- package/package.json +3 -3
- package/src/connections/mssql-db-conn.ts +10 -10
- package/src/connections/mysql-db-conn.ts +6 -6
- package/src/connections/postgresql-db-conn.ts +12 -12
- package/src/create-orm.ts +2 -2
package/README.md
CHANGED
|
@@ -17,181 +17,188 @@ pnpm add mysql2 # MySQL
|
|
|
17
17
|
pnpm add pg pg-copy-streams # PostgreSQL
|
|
18
18
|
```
|
|
19
19
|
|
|
20
|
-
##
|
|
21
|
-
|
|
22
|
-
### Core
|
|
20
|
+
## Types
|
|
23
21
|
|
|
24
|
-
|
|
22
|
+
### `DbConn`
|
|
25
23
|
|
|
26
|
-
|
|
24
|
+
Low-level database connection interface implemented by `MssqlDbConn`, `MysqlDbConn`, and `PostgresqlDbConn`. Extends `EventEmitter<{ close: void }>`.
|
|
27
25
|
|
|
28
26
|
```typescript
|
|
29
|
-
import {
|
|
30
|
-
|
|
27
|
+
import type { DbConn } from "@simplysm/orm-node";
|
|
28
|
+
```
|
|
31
29
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
30
|
+
| Member | Type | Description |
|
|
31
|
+
|--------|------|-------------|
|
|
32
|
+
| `config` | `DbConnConfig` | Connection configuration |
|
|
33
|
+
| `isConnected` | `boolean` | Whether connected |
|
|
34
|
+
| `isInTransaction` | `boolean` | Whether a transaction is in progress |
|
|
35
|
+
| `connect()` | `Promise<void>` | Establish connection |
|
|
36
|
+
| `close()` | `Promise<void>` | Close connection |
|
|
37
|
+
| `beginTransaction(isolationLevel?)` | `Promise<void>` | Begin transaction |
|
|
38
|
+
| `commitTransaction()` | `Promise<void>` | Commit transaction |
|
|
39
|
+
| `rollbackTransaction()` | `Promise<void>` | Roll back transaction |
|
|
40
|
+
| `execute(queries)` | `Promise<Record<string, unknown>[][]>` | Execute SQL string array |
|
|
41
|
+
| `executeParametrized(query, params?)` | `Promise<Record<string, unknown>[][]>` | Execute parameterized query |
|
|
42
|
+
| `bulkInsert(tableName, columnMetas, records)` | `Promise<void>` | Bulk insert using native bulk API |
|
|
35
43
|
|
|
36
|
-
|
|
37
|
-
dialect: "mysql",
|
|
38
|
-
host: "localhost",
|
|
39
|
-
port: 3306,
|
|
40
|
-
username: "root",
|
|
41
|
-
password: "password",
|
|
42
|
-
database: "mydb",
|
|
43
|
-
});
|
|
44
|
+
---
|
|
44
45
|
|
|
45
|
-
|
|
46
|
-
const users = await orm.connect(async (db) => {
|
|
47
|
-
return db.user().result();
|
|
48
|
-
});
|
|
46
|
+
### `DbConnConfig`
|
|
49
47
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
}
|
|
48
|
+
Union type that selects the correct configuration shape based on `dialect`.
|
|
49
|
+
|
|
50
|
+
```typescript
|
|
51
|
+
import type { DbConnConfig } from "@simplysm/orm-node";
|
|
52
|
+
|
|
53
|
+
type DbConnConfig = MysqlDbConnConfig | MssqlDbConnConfig | PostgresqlDbConnConfig;
|
|
54
54
|
```
|
|
55
55
|
|
|
56
|
-
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
### `MysqlDbConnConfig`
|
|
57
59
|
|
|
58
60
|
```typescript
|
|
59
|
-
|
|
60
|
-
dbContextDef: TDef,
|
|
61
|
-
config: DbConnConfig,
|
|
62
|
-
options?: OrmOptions,
|
|
63
|
-
): Orm<TDef>
|
|
61
|
+
import type { MysqlDbConnConfig } from "@simplysm/orm-node";
|
|
64
62
|
```
|
|
65
63
|
|
|
66
|
-
|
|
|
67
|
-
|
|
68
|
-
| `
|
|
69
|
-
| `
|
|
70
|
-
| `
|
|
64
|
+
| Property | Type | Description |
|
|
65
|
+
|----------|------|-------------|
|
|
66
|
+
| `dialect` | `"mysql"` | Dialect discriminant |
|
|
67
|
+
| `host` | `string` | Hostname |
|
|
68
|
+
| `port` | `number` (optional) | Port (default: 3306) |
|
|
69
|
+
| `username` | `string` | Username |
|
|
70
|
+
| `password` | `string` | Password |
|
|
71
|
+
| `database` | `string` (optional) | Database name |
|
|
72
|
+
| `defaultIsolationLevel` | `IsolationLevel` (optional) | Default isolation level |
|
|
73
|
+
| `pool` | `DbPoolConfig` (optional) | Connection pool settings |
|
|
71
74
|
|
|
72
75
|
---
|
|
73
76
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
Low-level DB connection factory. Acquires a `PooledDbConn` from the internal connection pool for the given configuration. Creates a new pool on first call; reuses the same pool on subsequent calls with the same configuration.
|
|
77
|
+
### `MssqlDbConnConfig`
|
|
77
78
|
|
|
78
79
|
```typescript
|
|
79
|
-
import {
|
|
80
|
+
import type { MssqlDbConnConfig } from "@simplysm/orm-node";
|
|
81
|
+
```
|
|
80
82
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
83
|
+
| Property | Type | Description |
|
|
84
|
+
|----------|------|-------------|
|
|
85
|
+
| `dialect` | `"mssql" \| "mssql-azure"` | Dialect discriminant (`mssql-azure` enables TLS encryption) |
|
|
86
|
+
| `host` | `string` | Hostname |
|
|
87
|
+
| `port` | `number` (optional) | Port (default: 1433) |
|
|
88
|
+
| `username` | `string` | Username |
|
|
89
|
+
| `password` | `string` | Password |
|
|
90
|
+
| `database` | `string` (optional) | Database name |
|
|
91
|
+
| `schema` | `string` (optional) | Schema name (default: `dbo`) |
|
|
92
|
+
| `defaultIsolationLevel` | `IsolationLevel` (optional) | Default isolation level |
|
|
93
|
+
| `pool` | `DbPoolConfig` (optional) | Connection pool settings |
|
|
88
94
|
|
|
89
|
-
|
|
90
|
-
await conn.beginTransaction();
|
|
91
|
-
// ... execute queries ...
|
|
92
|
-
await conn.commitTransaction();
|
|
93
|
-
await conn.close(); // returns connection to pool
|
|
94
|
-
```
|
|
95
|
+
---
|
|
95
96
|
|
|
96
|
-
|
|
97
|
+
### `PostgresqlDbConnConfig`
|
|
97
98
|
|
|
98
99
|
```typescript
|
|
99
|
-
|
|
100
|
+
import type { PostgresqlDbConnConfig } from "@simplysm/orm-node";
|
|
100
101
|
```
|
|
101
102
|
|
|
103
|
+
| Property | Type | Description |
|
|
104
|
+
|----------|------|-------------|
|
|
105
|
+
| `dialect` | `"postgresql"` | Dialect discriminant |
|
|
106
|
+
| `host` | `string` | Hostname |
|
|
107
|
+
| `port` | `number` (optional) | Port (default: 5432) |
|
|
108
|
+
| `username` | `string` | Username |
|
|
109
|
+
| `password` | `string` | Password |
|
|
110
|
+
| `database` | `string` (optional) | Database name |
|
|
111
|
+
| `schema` | `string` (optional) | Schema name (default: `public`) |
|
|
112
|
+
| `defaultIsolationLevel` | `IsolationLevel` (optional) | Default isolation level |
|
|
113
|
+
| `pool` | `DbPoolConfig` (optional) | Connection pool settings |
|
|
114
|
+
|
|
102
115
|
---
|
|
103
116
|
|
|
104
|
-
|
|
117
|
+
### `DbPoolConfig`
|
|
105
118
|
|
|
106
|
-
|
|
119
|
+
Connection pool settings shared by all configuration types.
|
|
107
120
|
|
|
108
121
|
```typescript
|
|
109
|
-
import {
|
|
110
|
-
|
|
122
|
+
import type { DbPoolConfig } from "@simplysm/orm-node";
|
|
123
|
+
```
|
|
111
124
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
});
|
|
125
|
+
| Property | Type | Description |
|
|
126
|
+
|----------|------|-------------|
|
|
127
|
+
| `min` | `number` (optional) | Minimum connections in pool (default: `1`) |
|
|
128
|
+
| `max` | `number` (optional) | Maximum connections in pool (default: `10`) |
|
|
129
|
+
| `acquireTimeoutMillis` | `number` (optional) | Timeout to acquire a connection in ms (default: `30000`) |
|
|
130
|
+
| `idleTimeoutMillis` | `number` (optional) | Timeout before an idle connection is destroyed in ms (default: `30000`) |
|
|
119
131
|
|
|
120
|
-
|
|
121
|
-
await db.connect(async () => {
|
|
122
|
-
const rows = await db.user().result();
|
|
123
|
-
});
|
|
124
|
-
```
|
|
132
|
+
---
|
|
125
133
|
|
|
126
|
-
|
|
134
|
+
### `getDialectFromConfig`
|
|
135
|
+
|
|
136
|
+
Utility function that normalizes `"mssql-azure"` to `"mssql"` and returns the `Dialect` value from a `DbConnConfig`.
|
|
127
137
|
|
|
128
138
|
```typescript
|
|
129
|
-
|
|
139
|
+
import { getDialectFromConfig } from "@simplysm/orm-node";
|
|
140
|
+
|
|
141
|
+
const dialect = getDialectFromConfig({ dialect: "mssql-azure", ... }); // "mssql"
|
|
130
142
|
```
|
|
131
143
|
|
|
132
|
-
**
|
|
144
|
+
**Signature**
|
|
133
145
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
| `close()` | Close connection and return it to pool |
|
|
138
|
-
| `beginTransaction(isolationLevel?)` | Begin a transaction |
|
|
139
|
-
| `commitTransaction()` | Commit the current transaction |
|
|
140
|
-
| `rollbackTransaction()` | Roll back the current transaction |
|
|
141
|
-
| `executeParametrized(query, params?)` | Execute a parameterized SQL query |
|
|
142
|
-
| `bulkInsert(tableName, columnMetas, records)` | Bulk insert using the native bulk API |
|
|
143
|
-
| `executeDefs(defs, resultMetas?)` | Build and execute `QueryDef` array, parse results |
|
|
146
|
+
```typescript
|
|
147
|
+
function getDialectFromConfig(config: DbConnConfig): Dialect
|
|
148
|
+
```
|
|
144
149
|
|
|
145
150
|
---
|
|
146
151
|
|
|
147
|
-
|
|
152
|
+
### Constants
|
|
148
153
|
|
|
149
|
-
|
|
154
|
+
| Name | Value | Description |
|
|
155
|
+
|------|-------|-------------|
|
|
156
|
+
| `DB_CONN_CONNECT_TIMEOUT` | `10000` | Connection establishment timeout in ms (10 seconds) |
|
|
157
|
+
| `DB_CONN_DEFAULT_TIMEOUT` | `600000` | Query default timeout in ms (10 minutes) |
|
|
158
|
+
| `DB_CONN_ERRORS` | `{ NOT_CONNECTED, ALREADY_CONNECTED }` | Standard connection error message strings |
|
|
150
159
|
|
|
151
160
|
```typescript
|
|
152
|
-
import {
|
|
153
|
-
|
|
154
|
-
const conn = await createDbConn(config); // returns PooledDbConn
|
|
155
|
-
await conn.connect(); // acquires physical connection from pool
|
|
156
|
-
await conn.close(); // releases physical connection back to pool
|
|
161
|
+
import { DB_CONN_CONNECT_TIMEOUT, DB_CONN_DEFAULT_TIMEOUT, DB_CONN_ERRORS } from "@simplysm/orm-node";
|
|
157
162
|
```
|
|
158
163
|
|
|
159
|
-
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
### `Orm<TDef>`
|
|
167
|
+
|
|
168
|
+
Type of the object returned from `createOrm`.
|
|
160
169
|
|
|
161
170
|
```typescript
|
|
162
|
-
|
|
163
|
-
pool: Pool<DbConn>,
|
|
164
|
-
initialConfig: DbConnConfig,
|
|
165
|
-
getLastCreateError?: () => Error | undefined,
|
|
166
|
-
)
|
|
171
|
+
import type { Orm } from "@simplysm/orm-node";
|
|
167
172
|
```
|
|
168
173
|
|
|
169
|
-
|
|
174
|
+
| Member | Type | Description |
|
|
175
|
+
|--------|------|-------------|
|
|
176
|
+
| `dbContextDef` | `TDef` | DbContext definition |
|
|
177
|
+
| `config` | `DbConnConfig` | Connection configuration |
|
|
178
|
+
| `options` | `OrmOptions \| undefined` | ORM options |
|
|
179
|
+
| `connect(callback, isolationLevel?)` | `Promise<R>` | Execute callback within a transaction |
|
|
180
|
+
| `connectWithoutTransaction(callback)` | `Promise<R>` | Execute callback without a transaction |
|
|
170
181
|
|
|
171
|
-
|
|
172
|
-
|----------|------|-------------|
|
|
173
|
-
| `config` | `DbConnConfig` | Active connection configuration |
|
|
174
|
-
| `isConnected` | `boolean` | Whether a physical connection is currently held |
|
|
175
|
-
| `isInTransaction` | `boolean` | Whether a transaction is in progress |
|
|
182
|
+
---
|
|
176
183
|
|
|
177
|
-
|
|
184
|
+
### `OrmOptions`
|
|
178
185
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
|
186
|
-
|
|
187
|
-
| `
|
|
188
|
-
| `
|
|
186
|
+
Options passed to `createOrm` to override connection-level database/schema settings.
|
|
187
|
+
|
|
188
|
+
```typescript
|
|
189
|
+
import type { OrmOptions } from "@simplysm/orm-node";
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
| Property | Type | Description |
|
|
193
|
+
|----------|------|-------------|
|
|
194
|
+
| `database` | `string` (optional) | Override database name from `DbConnConfig` |
|
|
195
|
+
| `schema` | `string` (optional) | Override schema name (MSSQL: `dbo`, PostgreSQL: `public`) |
|
|
189
196
|
|
|
190
197
|
---
|
|
191
198
|
|
|
192
|
-
|
|
199
|
+
## Connections
|
|
193
200
|
|
|
194
|
-
|
|
201
|
+
### `MssqlDbConn`
|
|
195
202
|
|
|
196
203
|
MSSQL / Azure SQL database connection. Uses the `tedious` library. Requires `tedious` as a peer dependency.
|
|
197
204
|
|
|
@@ -229,11 +236,11 @@ new MssqlDbConn(
|
|
|
229
236
|
| `isConnected` | `boolean` | Whether connected |
|
|
230
237
|
| `isInTransaction` | `boolean` | Whether transaction is in progress |
|
|
231
238
|
|
|
232
|
-
**Methods** — implements `DbConn` (see interface
|
|
239
|
+
**Methods** — implements `DbConn` (see interface above)
|
|
233
240
|
|
|
234
241
|
---
|
|
235
242
|
|
|
236
|
-
|
|
243
|
+
### `MysqlDbConn`
|
|
237
244
|
|
|
238
245
|
MySQL database connection. Uses the `mysql2/promise` library. Requires `mysql2` as a peer dependency.
|
|
239
246
|
|
|
@@ -271,11 +278,11 @@ new MysqlDbConn(
|
|
|
271
278
|
| `isConnected` | `boolean` | Whether connected |
|
|
272
279
|
| `isInTransaction` | `boolean` | Whether transaction is in progress |
|
|
273
280
|
|
|
274
|
-
**Methods** — implements `DbConn` (see interface
|
|
281
|
+
**Methods** — implements `DbConn` (see interface above)
|
|
275
282
|
|
|
276
283
|
---
|
|
277
284
|
|
|
278
|
-
|
|
285
|
+
### `PostgresqlDbConn`
|
|
279
286
|
|
|
280
287
|
PostgreSQL database connection. Uses the `pg` library and `pg-copy-streams` for bulk insert. Requires `pg` and `pg-copy-streams` as peer dependencies.
|
|
281
288
|
|
|
@@ -315,183 +322,174 @@ new PostgresqlDbConn(
|
|
|
315
322
|
| `isConnected` | `boolean` | Whether connected |
|
|
316
323
|
| `isInTransaction` | `boolean` | Whether transaction is in progress |
|
|
317
324
|
|
|
318
|
-
**Methods** — implements `DbConn` (see interface
|
|
325
|
+
**Methods** — implements `DbConn` (see interface above)
|
|
319
326
|
|
|
320
327
|
---
|
|
321
328
|
|
|
322
|
-
##
|
|
329
|
+
## Core
|
|
323
330
|
|
|
324
|
-
### `
|
|
331
|
+
### `createOrm`
|
|
325
332
|
|
|
326
|
-
|
|
333
|
+
Node.js ORM factory function. Creates an `Orm` instance that binds a `DbContextDef` to a connection configuration and provides `connect` / `connectWithoutTransaction` helpers.
|
|
327
334
|
|
|
328
335
|
```typescript
|
|
329
|
-
import
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
| Member | Type | Description |
|
|
333
|
-
|--------|------|-------------|
|
|
334
|
-
| `config` | `DbConnConfig` | Connection configuration |
|
|
335
|
-
| `isConnected` | `boolean` | Whether connected |
|
|
336
|
-
| `isInTransaction` | `boolean` | Whether a transaction is in progress |
|
|
337
|
-
| `connect()` | `Promise<void>` | Establish connection |
|
|
338
|
-
| `close()` | `Promise<void>` | Close connection |
|
|
339
|
-
| `beginTransaction(isolationLevel?)` | `Promise<void>` | Begin transaction |
|
|
340
|
-
| `commitTransaction()` | `Promise<void>` | Commit transaction |
|
|
341
|
-
| `rollbackTransaction()` | `Promise<void>` | Roll back transaction |
|
|
342
|
-
| `execute(queries)` | `Promise<Record<string, unknown>[][]>` | Execute SQL string array |
|
|
343
|
-
| `executeParametrized(query, params?)` | `Promise<Record<string, unknown>[][]>` | Execute parameterized query |
|
|
344
|
-
| `bulkInsert(tableName, columnMetas, records)` | `Promise<void>` | Bulk insert using native bulk API |
|
|
336
|
+
import { createOrm } from "@simplysm/orm-node";
|
|
337
|
+
import { defineDbContext, queryable } from "@simplysm/orm-common";
|
|
345
338
|
|
|
346
|
-
|
|
339
|
+
const MyDb = defineDbContext({
|
|
340
|
+
user: (db) => queryable(db, User),
|
|
341
|
+
});
|
|
347
342
|
|
|
348
|
-
|
|
343
|
+
const orm = createOrm(MyDb, {
|
|
344
|
+
dialect: "mysql",
|
|
345
|
+
host: "localhost",
|
|
346
|
+
port: 3306,
|
|
347
|
+
username: "root",
|
|
348
|
+
password: "password",
|
|
349
|
+
database: "mydb",
|
|
350
|
+
});
|
|
349
351
|
|
|
350
|
-
|
|
352
|
+
// Execute within a transaction
|
|
353
|
+
const users = await orm.connect(async (db) => {
|
|
354
|
+
return db.user().result();
|
|
355
|
+
});
|
|
351
356
|
|
|
352
|
-
|
|
353
|
-
|
|
357
|
+
// Execute without a transaction
|
|
358
|
+
const users2 = await orm.connectWithoutTransaction(async (db) => {
|
|
359
|
+
return db.user().result();
|
|
360
|
+
});
|
|
354
361
|
```
|
|
355
362
|
|
|
356
|
-
|
|
357
|
-
|--------|------|-------------|
|
|
358
|
-
| `dbContextDef` | `TDef` | DbContext definition |
|
|
359
|
-
| `config` | `DbConnConfig` | Connection configuration |
|
|
360
|
-
| `options` | `OrmOptions \| undefined` | ORM options |
|
|
361
|
-
| `connect(callback, isolationLevel?)` | `Promise<R>` | Execute callback within a transaction |
|
|
362
|
-
| `connectWithoutTransaction(callback)` | `Promise<R>` | Execute callback without a transaction |
|
|
363
|
-
|
|
364
|
-
---
|
|
365
|
-
|
|
366
|
-
### `OrmOptions`
|
|
367
|
-
|
|
368
|
-
Options passed to `createOrm` to override connection-level database/schema settings.
|
|
363
|
+
**Signature**
|
|
369
364
|
|
|
370
365
|
```typescript
|
|
371
|
-
|
|
366
|
+
function createOrm<TDef extends DbContextDef<any, any, any>>(
|
|
367
|
+
dbContextDef: TDef,
|
|
368
|
+
config: DbConnConfig,
|
|
369
|
+
options?: OrmOptions,
|
|
370
|
+
): Orm<TDef>
|
|
372
371
|
```
|
|
373
372
|
|
|
374
|
-
|
|
|
375
|
-
|
|
376
|
-
| `
|
|
377
|
-
| `
|
|
373
|
+
| Parameter | Type | Description |
|
|
374
|
+
|-----------|------|-------------|
|
|
375
|
+
| `dbContextDef` | `TDef` | DbContext definition created with `defineDbContext` |
|
|
376
|
+
| `config` | `DbConnConfig` | Database connection configuration |
|
|
377
|
+
| `options` | `OrmOptions` (optional) | Override `database` or `schema` from config |
|
|
378
378
|
|
|
379
379
|
---
|
|
380
380
|
|
|
381
|
-
### `
|
|
381
|
+
### `createDbConn`
|
|
382
382
|
|
|
383
|
-
|
|
383
|
+
Low-level DB connection factory. Acquires a `PooledDbConn` from the internal connection pool for the given configuration. Creates a new pool on first call; reuses the same pool on subsequent calls with the same configuration.
|
|
384
384
|
|
|
385
385
|
```typescript
|
|
386
|
-
import
|
|
387
|
-
|
|
388
|
-
type DbConnConfig = MysqlDbConnConfig | MssqlDbConnConfig | PostgresqlDbConnConfig;
|
|
389
|
-
```
|
|
390
|
-
|
|
391
|
-
---
|
|
386
|
+
import { createDbConn } from "@simplysm/orm-node";
|
|
392
387
|
|
|
393
|
-
|
|
388
|
+
const conn = await createDbConn({
|
|
389
|
+
dialect: "postgresql",
|
|
390
|
+
host: "localhost",
|
|
391
|
+
username: "postgres",
|
|
392
|
+
password: "secret",
|
|
393
|
+
database: "mydb",
|
|
394
|
+
});
|
|
394
395
|
|
|
395
|
-
|
|
396
|
-
|
|
396
|
+
await conn.connect();
|
|
397
|
+
await conn.beginTransaction();
|
|
398
|
+
// ... execute queries ...
|
|
399
|
+
await conn.commitTransaction();
|
|
400
|
+
await conn.close(); // returns connection to pool
|
|
397
401
|
```
|
|
398
402
|
|
|
399
|
-
|
|
400
|
-
|----------|------|-------------|
|
|
401
|
-
| `dialect` | `"mysql"` | Dialect discriminant |
|
|
402
|
-
| `host` | `string` | Hostname |
|
|
403
|
-
| `port` | `number` (optional) | Port (default: 3306) |
|
|
404
|
-
| `username` | `string` | Username |
|
|
405
|
-
| `password` | `string` | Password |
|
|
406
|
-
| `database` | `string` (optional) | Database name |
|
|
407
|
-
| `defaultIsolationLevel` | `IsolationLevel` (optional) | Default isolation level |
|
|
408
|
-
| `pool` | `DbPoolConfig` (optional) | Connection pool settings |
|
|
409
|
-
|
|
410
|
-
---
|
|
411
|
-
|
|
412
|
-
### `MssqlDbConnConfig`
|
|
403
|
+
**Signature**
|
|
413
404
|
|
|
414
405
|
```typescript
|
|
415
|
-
|
|
406
|
+
function createDbConn(config: DbConnConfig): Promise<DbConn>
|
|
416
407
|
```
|
|
417
408
|
|
|
418
|
-
| Property | Type | Description |
|
|
419
|
-
|----------|------|-------------|
|
|
420
|
-
| `dialect` | `"mssql" \| "mssql-azure"` | Dialect discriminant (`mssql-azure` enables TLS encryption) |
|
|
421
|
-
| `host` | `string` | Hostname |
|
|
422
|
-
| `port` | `number` (optional) | Port (default: 1433) |
|
|
423
|
-
| `username` | `string` | Username |
|
|
424
|
-
| `password` | `string` | Password |
|
|
425
|
-
| `database` | `string` (optional) | Database name |
|
|
426
|
-
| `schema` | `string` (optional) | Schema name (default: `dbo`) |
|
|
427
|
-
| `defaultIsolationLevel` | `IsolationLevel` (optional) | Default isolation level |
|
|
428
|
-
| `pool` | `DbPoolConfig` (optional) | Connection pool settings |
|
|
429
|
-
|
|
430
409
|
---
|
|
431
410
|
|
|
432
|
-
### `
|
|
411
|
+
### `NodeDbContextExecutor`
|
|
433
412
|
|
|
434
|
-
|
|
435
|
-
import type { PostgresqlDbConnConfig } from "@simplysm/orm-node";
|
|
436
|
-
```
|
|
413
|
+
`DbContextExecutor` implementation for the Node.js environment. Used internally by `createOrm`. Can be passed directly to `createDbContext` from `@simplysm/orm-common` when fine-grained control is needed.
|
|
437
414
|
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
| `host` | `string` | Hostname |
|
|
442
|
-
| `port` | `number` (optional) | Port (default: 5432) |
|
|
443
|
-
| `username` | `string` | Username |
|
|
444
|
-
| `password` | `string` | Password |
|
|
445
|
-
| `database` | `string` (optional) | Database name |
|
|
446
|
-
| `schema` | `string` (optional) | Schema name (default: `public`) |
|
|
447
|
-
| `defaultIsolationLevel` | `IsolationLevel` (optional) | Default isolation level |
|
|
448
|
-
| `pool` | `DbPoolConfig` (optional) | Connection pool settings |
|
|
415
|
+
```typescript
|
|
416
|
+
import { NodeDbContextExecutor } from "@simplysm/orm-node";
|
|
417
|
+
import { createDbContext } from "@simplysm/orm-common";
|
|
449
418
|
|
|
450
|
-
|
|
419
|
+
const executor = new NodeDbContextExecutor({
|
|
420
|
+
dialect: "mssql",
|
|
421
|
+
host: "localhost",
|
|
422
|
+
username: "sa",
|
|
423
|
+
password: "Password1",
|
|
424
|
+
database: "mydb",
|
|
425
|
+
});
|
|
451
426
|
|
|
452
|
-
|
|
427
|
+
const db = createDbContext(MyDb, executor, { database: "mydb" });
|
|
428
|
+
await db.connect(async () => {
|
|
429
|
+
const rows = await db.user().result();
|
|
430
|
+
});
|
|
431
|
+
```
|
|
453
432
|
|
|
454
|
-
|
|
433
|
+
**Constructor**
|
|
455
434
|
|
|
456
435
|
```typescript
|
|
457
|
-
|
|
436
|
+
new NodeDbContextExecutor(config: DbConnConfig)
|
|
458
437
|
```
|
|
459
438
|
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
|
463
|
-
|
|
464
|
-
| `
|
|
465
|
-
| `
|
|
439
|
+
**Methods** (all delegate to the underlying `DbConn`)
|
|
440
|
+
|
|
441
|
+
| Method | Description |
|
|
442
|
+
|--------|-------------|
|
|
443
|
+
| `connect()` | Acquire connection from pool and open it |
|
|
444
|
+
| `close()` | Close connection and return it to pool |
|
|
445
|
+
| `beginTransaction(isolationLevel?)` | Begin a transaction |
|
|
446
|
+
| `commitTransaction()` | Commit the current transaction |
|
|
447
|
+
| `rollbackTransaction()` | Roll back the current transaction |
|
|
448
|
+
| `executeParametrized(query, params?)` | Execute a parameterized SQL query |
|
|
449
|
+
| `bulkInsert(tableName, columnMetas, records)` | Bulk insert using the native bulk API |
|
|
450
|
+
| `executeDefs<T = DataRecord>(defs, resultMetas?)` | Build and execute `QueryDef` array, parse results |
|
|
466
451
|
|
|
467
452
|
---
|
|
468
453
|
|
|
469
|
-
### `
|
|
454
|
+
### `PooledDbConn`
|
|
470
455
|
|
|
471
|
-
|
|
456
|
+
`DbConn` wrapper that manages connection pool lifecycle. Returned by `createDbConn`. Calling `close()` returns the underlying physical connection to the pool rather than terminating it.
|
|
472
457
|
|
|
473
458
|
```typescript
|
|
474
|
-
import {
|
|
459
|
+
import { createDbConn } from "@simplysm/orm-node";
|
|
475
460
|
|
|
476
|
-
const
|
|
461
|
+
const conn = await createDbConn(config); // returns PooledDbConn
|
|
462
|
+
await conn.connect(); // acquires physical connection from pool
|
|
463
|
+
await conn.close(); // releases physical connection back to pool
|
|
477
464
|
```
|
|
478
465
|
|
|
479
|
-
**
|
|
466
|
+
**Constructor**
|
|
480
467
|
|
|
481
468
|
```typescript
|
|
482
|
-
|
|
469
|
+
new PooledDbConn(
|
|
470
|
+
pool: Pool<DbConn>,
|
|
471
|
+
initialConfig: DbConnConfig,
|
|
472
|
+
getLastCreateError?: () => Error | undefined,
|
|
473
|
+
)
|
|
483
474
|
```
|
|
484
475
|
|
|
485
|
-
|
|
476
|
+
**Properties**
|
|
486
477
|
|
|
487
|
-
|
|
478
|
+
| Property | Type | Description |
|
|
479
|
+
|----------|------|-------------|
|
|
480
|
+
| `config` | `DbConnConfig` | Active connection configuration |
|
|
481
|
+
| `isConnected` | `boolean` | Whether a physical connection is currently held |
|
|
482
|
+
| `isInTransaction` | `boolean` | Whether a transaction is in progress |
|
|
488
483
|
|
|
489
|
-
|
|
490
|
-
|------|-------|-------------|
|
|
491
|
-
| `DB_CONN_CONNECT_TIMEOUT` | `10000` | Connection establishment timeout in ms (10 seconds) |
|
|
492
|
-
| `DB_CONN_DEFAULT_TIMEOUT` | `600000` | Query default timeout in ms (10 minutes) |
|
|
493
|
-
| `DB_CONN_ERRORS` | `{ NOT_CONNECTED, ALREADY_CONNECTED }` | Standard connection error message strings |
|
|
484
|
+
**Methods**
|
|
494
485
|
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
486
|
+
| Method | Description |
|
|
487
|
+
|--------|-------------|
|
|
488
|
+
| `connect()` | Acquire connection from pool |
|
|
489
|
+
| `close()` | Roll back pending transaction (if any) and release connection to pool |
|
|
490
|
+
| `beginTransaction(isolationLevel?)` | Begin a transaction |
|
|
491
|
+
| `commitTransaction()` | Commit the current transaction |
|
|
492
|
+
| `rollbackTransaction()` | Roll back the current transaction |
|
|
493
|
+
| `execute(queries)` | Execute SQL string array |
|
|
494
|
+
| `executeParametrized(query, params?)` | Execute parameterized SQL query |
|
|
495
|
+
| `bulkInsert(tableName, columnMetas, records)` | Bulk insert using native bulk API |
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mssql-db-conn.d.ts","sourceRoot":"","sources":["..\\..\\src\\connections\\mssql-db-conn.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"mssql-db-conn.d.ts","sourceRoot":"","sources":["..\\..\\src\\connections\\mssql-db-conn.ts"],"names":[],"mappings":"AACA,OAAO,EAOL,YAAY,EAGb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,UAAU,EAAY,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAIL,KAAK,MAAM,EACX,KAAK,iBAAiB,EACvB,MAAM,kBAAkB,CAAC;AAM1B;;;;GAIG;AACH,qBAAa,WAAY,SAAQ,YAAY,CAAC;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,CAAE,YAAW,MAAM;IAW5E,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,QAAQ,CAAC,MAAM,EAAE,iBAAiB;IAXpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2B;IAEpD,OAAO,CAAC,KAAK,CAAC,CAAyB;IACvC,OAAO,CAAC,YAAY,CAAC,CAAgC;IACrD,OAAO,CAAC,SAAS,CAA6B;IAE9C,WAAW,UAAS;IACpB,eAAe,UAAS;gBAGL,QAAQ,EAAE,cAAc,SAAS,CAAC,EAC1C,MAAM,EAAE,iBAAiB;IAK9B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA4DxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBtB,gBAAgB,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBhE,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBlC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBpC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;IAUhE,mBAAmB,CACvB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;IA+FjC,UAAU,CACd,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EACvC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GACjC,OAAO,CAAC,IAAI,CAAC;IAoDhB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,wCAAwC;IAqBhD,OAAO,CAAC,uCAAuC;IA4C/C;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;CAmB1B"}
|
|
@@ -2,13 +2,13 @@ import consola from "consola";
|
|
|
2
2
|
import {
|
|
3
3
|
DateOnly,
|
|
4
4
|
DateTime,
|
|
5
|
-
|
|
5
|
+
json,
|
|
6
|
+
str,
|
|
7
|
+
wait,
|
|
6
8
|
SdError,
|
|
7
9
|
EventEmitter,
|
|
8
|
-
strIsNullOrEmpty,
|
|
9
10
|
Time,
|
|
10
|
-
Uuid
|
|
11
|
-
waitUntil
|
|
11
|
+
Uuid
|
|
12
12
|
} from "@simplysm/core-common";
|
|
13
13
|
import {
|
|
14
14
|
DB_CONN_CONNECT_TIMEOUT,
|
|
@@ -86,10 +86,10 @@ class MssqlDbConn extends EventEmitter {
|
|
|
86
86
|
}
|
|
87
87
|
const conn = this._conn;
|
|
88
88
|
conn.cancel();
|
|
89
|
-
await
|
|
89
|
+
await wait.until(() => this._requests.length < 1, 3e4, 100);
|
|
90
90
|
await new Promise((resolve) => {
|
|
91
91
|
conn.on("end", () => {
|
|
92
|
-
|
|
92
|
+
wait.until(() => this._conn == null, 3e4, 100).then(() => resolve()).catch(() => resolve());
|
|
93
93
|
});
|
|
94
94
|
conn.close();
|
|
95
95
|
});
|
|
@@ -145,7 +145,7 @@ class MssqlDbConn extends EventEmitter {
|
|
|
145
145
|
}
|
|
146
146
|
async execute(queries) {
|
|
147
147
|
const results = [];
|
|
148
|
-
for (const query of queries.filter((item) => !
|
|
148
|
+
for (const query of queries.filter((item) => !str.isNullOrEmpty(item))) {
|
|
149
149
|
const resultItems = await this.executeParametrized(query);
|
|
150
150
|
results.push(...resultItems);
|
|
151
151
|
}
|
|
@@ -163,11 +163,11 @@ class MssqlDbConn extends EventEmitter {
|
|
|
163
163
|
if (err != null) {
|
|
164
164
|
rejected = true;
|
|
165
165
|
this._requests = this._requests.filter((r) => r !== queryRequest);
|
|
166
|
-
const
|
|
167
|
-
if (
|
|
166
|
+
const errCode = "code" in err ? err.code : void 0;
|
|
167
|
+
if (errCode === "ECANCEL") {
|
|
168
168
|
reject(new SdError(err, "Query was cancelled."));
|
|
169
169
|
} else {
|
|
170
|
-
const lineNumber =
|
|
170
|
+
const lineNumber = "lineNumber" in err && typeof err.lineNumber === "number" ? err.lineNumber : void 0;
|
|
171
171
|
if (lineNumber != null && lineNumber > 0) {
|
|
172
172
|
const splitQuery = query.split("\n");
|
|
173
173
|
splitQuery[lineNumber - 1] = "==> " + splitQuery[lineNumber - 1];
|
|
@@ -246,9 +246,9 @@ ${query}
|
|
|
246
246
|
new SdError(
|
|
247
247
|
err,
|
|
248
248
|
`Bulk Insert error
|
|
249
|
-
${
|
|
249
|
+
${json.stringify(tediousColumnDefs)}
|
|
250
250
|
-- data
|
|
251
|
-
${
|
|
251
|
+
${json.stringify(records).substring(0, 1e4)}...
|
|
252
252
|
--`
|
|
253
253
|
)
|
|
254
254
|
);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/connections/mssql-db-conn.ts"],
|
|
4
|
-
"mappings": "AAAA,OAAO,aAAa;AACpB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AAIP,MAAM,SAAS,QAAQ,QAAQ,eAAe;AAOvC,MAAM,oBAAoB,aAAgD;AAAA,EAU/E,YACmB,UACR,QACT;AACA,UAAM;AAHW;AACR;AAAA,EAGX;AAAA,EAdiB,WAAW;AAAA,EAEpB;AAAA,EACA;AAAA,EACA,YAAmC,CAAC;AAAA,EAE5C,cAAc;AAAA,EACd,kBAAkB;AAAA,EASlB,MAAM,UAAyB;AAC7B,QAAI,KAAK,aAAa;AACpB,YAAM,IAAI,QAAQ,eAAe,iBAAiB;AAAA,IACpD;AAEA,UAAM,OAAO,IAAI,KAAK,SAAS,WAAW;AAAA,MACxC,QAAQ,KAAK,OAAO;AAAA,MACpB,gBAAgB;AAAA,QACd,MAAM;AAAA,QACN,SAAS;AAAA,UACP,UAAU,KAAK,OAAO;AAAA,UACtB,UAAU,KAAK,OAAO;AAAA,QACxB;AAAA,MACF;AAAA,MACA,SAAS;AAAA,QACP,UAAU,KAAK,OAAO;AAAA,QACtB,MAAM,KAAK,OAAO;AAAA,QAClB,qBAAqB;AAAA,QACrB,QAAQ;AAAA,QACR,SAAS,KAAK,OAAO,YAAY;AAAA,QACjC,gBAAgB,KAAK;AAAA,QACrB,wBAAwB;AAAA,QACxB,gBAAgB;AAAA,MAClB;AAAA,IACF,CAAC;AAED,SAAK,GAAG,eAAe,CAAC,SAAS;AAC/B,aAAO,MAAM,QAAQ,KAAK,OAAO;AAAA,IACnC,CAAC;AAED,SAAK,GAAG,gBAAgB,CAAC,UAAU;AACjC,aAAO,MAAM,gBAAgB,MAAM,OAAO;AAAA,IAC5C,CAAC;AAED,SAAK,GAAG,SAAS,CAAC,UAAU;AAC1B,aAAO,MAAM,SAAS,MAAM,OAAO;AAAA,IACrC,CAAC;AAED,SAAK,GAAG,OAAO,MAAM;AACnB,WAAK,KAAK,OAAO;AACjB,WAAK,YAAY;AAAA,IACnB,CAAC;AAED,UAAM,IAAI,QAAc,CAAC,SAAS,WAAW;AAC3C,WAAK,QAAQ,CAAC,QAA2B;AACvC,YAAI,OAAO,MAAM;AACf,iBAAO,IAAI,QAAQ,GAAG,CAAC;AACvB;AAAA,QACF;AAEA,aAAK,cAAc;AACnB,aAAK,cAAc;AACnB,aAAK,kBAAkB;AACvB,gBAAQ;AAAA,MACV,CAAC;AAAA,IACH,CAAC;AAED,SAAK,QAAQ;AAAA,EACf;AAAA,EAEA,MAAM,QAAuB;AAC3B,SAAK,aAAa;AAElB,QAAI,KAAK,SAAS,QAAQ,CAAC,KAAK,aAAa;AAC3C;AAAA,IACF;AAEA,UAAM,OAAO,KAAK;AAGlB,SAAK,OAAO;AACZ,UAAM,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mysql-db-conn.d.ts","sourceRoot":"","sources":["..\\..\\src\\connections\\mysql-db-conn.ts"],"names":[],"mappings":"AAMA,OAAO,
|
|
1
|
+
{"version":3,"file":"mysql-db-conn.d.ts","sourceRoot":"","sources":["..\\..\\src\\connections\\mysql-db-conn.ts"],"names":[],"mappings":"AAMA,OAAO,EAML,YAAY,EAGb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,UAAU,EAAY,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAGL,KAAK,MAAM,EACX,KAAK,iBAAiB,EACvB,MAAM,kBAAkB,CAAC;AAI1B;;;;GAIG;AACH,qBAAa,WAAY,SAAQ,YAAY,CAAC;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,CAAE,YAAW,MAAM;IAW5E,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,QAAQ,CAAC,MAAM,EAAE,iBAAiB;IAXpC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAU;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2B;IAEpD,OAAO,CAAC,KAAK,CAAC,CAAa;IAC3B,OAAO,CAAC,YAAY,CAAC,CAAgC;IAErD,WAAW,UAAS;IACpB,eAAe,UAAS;gBAGL,OAAO,EAAE,cAAc,gBAAgB,CAAC,EAChD,MAAM,EAAE,iBAAiB;IAK9B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAgCxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAatB,gBAAgB,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBhE,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAMlC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAMpC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;IAShE,mBAAmB,CACvB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;IA4CjC,UAAU,CACd,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EACvC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GACjC,OAAO,CAAC,IAAI,CAAC;IAyDhB;;OAEG;IACH,OAAO,CAAC,aAAa;IAiDrB,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,aAAa;CAQtB"}
|
|
@@ -4,12 +4,12 @@ import os from "os";
|
|
|
4
4
|
import path from "path";
|
|
5
5
|
import consola from "consola";
|
|
6
6
|
import {
|
|
7
|
-
|
|
7
|
+
bytes,
|
|
8
|
+
str,
|
|
8
9
|
DateOnly,
|
|
9
10
|
DateTime,
|
|
10
11
|
SdError,
|
|
11
12
|
EventEmitter,
|
|
12
|
-
strIsNullOrEmpty,
|
|
13
13
|
Time,
|
|
14
14
|
Uuid
|
|
15
15
|
} from "@simplysm/core-common";
|
|
@@ -89,7 +89,7 @@ class MysqlDbConn extends EventEmitter {
|
|
|
89
89
|
}
|
|
90
90
|
async execute(queries) {
|
|
91
91
|
const results = [];
|
|
92
|
-
for (const query of queries.filter((item) => !
|
|
92
|
+
for (const query of queries.filter((item) => !str.isNullOrEmpty(item))) {
|
|
93
93
|
const resultItems = await this.executeParametrized(query);
|
|
94
94
|
results.push(...resultItems);
|
|
95
95
|
}
|
|
@@ -182,8 +182,8 @@ class MysqlDbConn extends EventEmitter {
|
|
|
182
182
|
case "varchar":
|
|
183
183
|
case "char":
|
|
184
184
|
case "text": {
|
|
185
|
-
const
|
|
186
|
-
return
|
|
185
|
+
const strVal = value;
|
|
186
|
+
return strVal.replace(/\\/g, "\\\\").replace(/\0/g, "\\0").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\r/g, "\\r");
|
|
187
187
|
}
|
|
188
188
|
case "datetime":
|
|
189
189
|
return value.toFormatString("yyyy-MM-dd HH:mm:ss.fff");
|
|
@@ -195,7 +195,7 @@ class MysqlDbConn extends EventEmitter {
|
|
|
195
195
|
return value.toString().replace(/-/g, "");
|
|
196
196
|
// Hex for BINARY(16) storage
|
|
197
197
|
case "binary":
|
|
198
|
-
return
|
|
198
|
+
return bytes.toHex(value);
|
|
199
199
|
default:
|
|
200
200
|
throw new SdError(`Unsupported DataType: ${JSON.stringify(dataType)}`);
|
|
201
201
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/connections/mysql-db-conn.ts"],
|
|
4
|
-
"mappings": "AAAA,SAAS,kBAAkB;AAC3B,OAAO,QAAQ;AACf,OAAO,QAAQ;AACf,OAAO,UAAU;AAEjB,OAAO,aAAa;AACpB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,OAGK;AAEP,MAAM,SAAS,QAAQ,QAAQ,eAAe;AAOvC,MAAM,oBAAoB,aAAgD;AAAA,EAU/E,YACmB,SACR,QACT;AACA,UAAM;AAHW;AACR;AAAA,EAGX;AAAA,EAdA,OAAwB,aAAa;AAAA,EACpB,WAAW;AAAA,EAEpB;AAAA,EACA;AAAA,EAER,cAAc;AAAA,EACd,kBAAkB;AAAA,EASlB,MAAM,UAAyB;AAC7B,QAAI,KAAK,aAAa;AACpB,YAAM,IAAI,QAAQ,eAAe,iBAAiB;AAAA,IACpD;AAEA,UAAM,OAAO,MAAM,KAAK,QAAQ,iBAAiB;AAAA,MAC/C,MAAM,KAAK,OAAO;AAAA,MAClB,MAAM,KAAK,OAAO;AAAA,MAClB,MAAM,KAAK,OAAO;AAAA,MAClB,UAAU,KAAK,OAAO;AAAA;AAAA;AAAA,MAGtB,UAAU,KAAK,OAAO,aAAa,YAAY,aAAa,SAAY,KAAK,OAAO;AAAA,MACpF,oBAAoB;AAAA,MACpB,SAAS;AAAA,MACT,qBAAqB,CAAC,aAAqB,GAAG,iBAAiB,QAAQ;AAAA;AAAA,IACzE,CAAwD;AAExD,SAAK,GAAG,OAAO,MAAM;AACnB,WAAK,KAAK,OAAO;AACjB,WAAK,YAAY;AAAA,IACnB,CAAC;AAED,SAAK,GAAG,SAAS,CAAC,UAAU;AAC1B,aAAO,MAAM,uBAAuB,MAAM,OAAO;AAAA,IACnD,CAAC;AAED,SAAK,QAAQ;AACb,SAAK,cAAc;AACnB,SAAK,cAAc;AAAA,EACrB;AAAA,EAEA,MAAM,QAAuB;AAC3B,SAAK,aAAa;AAElB,QAAI,KAAK,SAAS,QAAQ,CAAC,KAAK,aAAa;AAC3C;AAAA,IACF;AAEA,UAAM,KAAK,MAAM,IAAI;AAErB,SAAK,KAAK,OAAO;AACjB,SAAK,YAAY;AAAA,EACnB;AAAA,EAEA,MAAM,iBAAiB,gBAAgD;AACrE,UAAM,OAAO,KAAK,iBAAiB;AAEnC,UAAM,SACJ,kBACA,KAAK,OAAO,yBACZ,oBACA,QAAQ,MAAM,GAAG;AAGnB,UAAM,KAAK,MAAM;AAAA,MACf,KAAK,2CAA2C,KAAK;AAAA,MACrD,SAAS,KAAK;AAAA,IAChB,CAAC;AAGD,UAAM,KAAK,iBAAiB;AAE5B,SAAK,kBAAkB;AAAA,EACzB;AAAA,EAEA,MAAM,oBAAmC;AACvC,UAAM,OAAO,KAAK,iBAAiB;AACnC,UAAM,KAAK,OAAO;AAClB,SAAK,kBAAkB;AAAA,EACzB;AAAA,EAEA,MAAM,sBAAqC;AACzC,UAAM,OAAO,KAAK,iBAAiB;AACnC,UAAM,KAAK,SAAS;AACpB,SAAK,kBAAkB;AAAA,EACzB;AAAA,EAEA,MAAM,QAAQ,SAAyD;AACrE,UAAM,UAAuC,CAAC;AAC9C,eAAW,SAAS,QAAQ,OAAO,CAAC,SAAS,CAAC,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgresql-db-conn.d.ts","sourceRoot":"","sources":["..\\..\\src\\connections\\postgresql-db-conn.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"postgresql-db-conn.d.ts","sourceRoot":"","sources":["..\\..\\src\\connections\\postgresql-db-conn.ts"],"names":[],"mappings":"AAEA,OAAO,EAML,YAAY,EAGb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,UAAU,EAAY,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAIL,KAAK,MAAM,EACX,KAAK,sBAAsB,EAC5B,MAAM,kBAAkB,CAAC;AAK1B;;;;GAIG;AACH,qBAAa,gBAAiB,SAAQ,YAAY,CAAC;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,CAAE,YAAW,MAAM;IAUjF,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,QAAQ,CAAC,MAAM,EAAE,sBAAsB;IAXzC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2B;IAEpD,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,YAAY,CAAC,CAAgC;IAErD,WAAW,UAAS;IACpB,eAAe,UAAS;gBAGL,GAAG,EAAE,cAAc,IAAI,CAAC,EACxB,cAAc,EAAE,cAAc,iBAAiB,CAAC,EACxD,MAAM,EAAE,sBAAsB;IAKnC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA+BxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAatB,gBAAgB,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAehE,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAMlC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAMpC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;IAShE,mBAAmB,CACvB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;IAmBjC,UAAU,CACd,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EACvC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GACjC,OAAO,CAAC,IAAI,CAAC;IAsChB;;OAEG;IACH,OAAO,CAAC,aAAa;IAqDrB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,aAAa;CAQtB"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { Readable } from "stream";
|
|
2
2
|
import consola from "consola";
|
|
3
3
|
import {
|
|
4
|
-
|
|
4
|
+
bytes,
|
|
5
|
+
str,
|
|
5
6
|
DateOnly,
|
|
6
7
|
DateTime,
|
|
7
8
|
SdError,
|
|
8
9
|
EventEmitter,
|
|
9
|
-
strIsNullOrEmpty,
|
|
10
10
|
Time,
|
|
11
11
|
Uuid
|
|
12
12
|
} from "@simplysm/core-common";
|
|
@@ -81,7 +81,7 @@ class PostgresqlDbConn extends EventEmitter {
|
|
|
81
81
|
}
|
|
82
82
|
async execute(queries) {
|
|
83
83
|
const results = [];
|
|
84
|
-
for (const query of queries.filter((item) => !
|
|
84
|
+
for (const query of queries.filter((item) => !str.isNullOrEmpty(item))) {
|
|
85
85
|
const resultItems = await this.executeParametrized(query);
|
|
86
86
|
results.push(...resultItems);
|
|
87
87
|
}
|
|
@@ -145,11 +145,11 @@ class PostgresqlDbConn extends EventEmitter {
|
|
|
145
145
|
case "varchar":
|
|
146
146
|
case "char":
|
|
147
147
|
case "text": {
|
|
148
|
-
const
|
|
149
|
-
if (
|
|
150
|
-
return '"' +
|
|
148
|
+
const strVal = value;
|
|
149
|
+
if (strVal.includes('"') || strVal.includes(",") || strVal.includes("\n") || strVal.includes("\r") || strVal.includes("\\")) {
|
|
150
|
+
return '"' + strVal.replace(/"/g, '""') + '"';
|
|
151
151
|
}
|
|
152
|
-
return
|
|
152
|
+
return strVal;
|
|
153
153
|
}
|
|
154
154
|
case "datetime":
|
|
155
155
|
return value.toFormatString("yyyy-MM-dd HH:mm:ss.fff");
|
|
@@ -160,7 +160,7 @@ class PostgresqlDbConn extends EventEmitter {
|
|
|
160
160
|
case "uuid":
|
|
161
161
|
return value.toString();
|
|
162
162
|
case "binary":
|
|
163
|
-
return '"\\x' +
|
|
163
|
+
return '"\\x' + bytes.toHex(value) + '"';
|
|
164
164
|
// PostgreSQL bytea hex format (wrapped in CSV double quotes)
|
|
165
165
|
default:
|
|
166
166
|
throw new SdError(`Unsupported DataType: ${JSON.stringify(dataType)}`);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/connections/postgresql-db-conn.ts"],
|
|
4
|
-
"mappings": "AAAA,SAAS,gBAAgB;AACzB,OAAO,aAAa;AACpB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AAGP,MAAM,SAAS,QAAQ,QAAQ,oBAAoB;AAO5C,MAAM,yBAAyB,aAAgD;AAAA,EASpF,YACmB,KACA,gBACR,QACT;AACA,UAAM;AAJW;AACA;AACR;AAAA,EAGX;AAAA,EAdiB,WAAW;AAAA,EAEpB;AAAA,EACA;AAAA,EAER,cAAc;AAAA,EACd,kBAAkB;AAAA,EAUlB,MAAM,UAAyB;AAC7B,QAAI,KAAK,aAAa;AACpB,YAAM,IAAI,QAAQ,eAAe,iBAAiB;AAAA,IACpD;AAEA,UAAM,SAAS,IAAI,KAAK,IAAI,OAAO;AAAA,MACjC,MAAM,KAAK,OAAO;AAAA,MAClB,MAAM,KAAK,OAAO,QAAQ;AAAA,MAC1B,MAAM,KAAK,OAAO;AAAA,MAClB,UAAU,KAAK,OAAO;AAAA,MACtB,UAAU,KAAK,OAAO;AAAA,MACtB,yBAAyB;AAAA,MACzB,eAAe,KAAK;AAAA,IACtB,CAAC;AAED,WAAO,GAAG,OAAO,MAAM;AACrB,WAAK,KAAK,OAAO;AACjB,WAAK,YAAY;AAAA,IACnB,CAAC;AAED,WAAO,GAAG,SAAS,CAAC,UAAU;AAC5B,aAAO,MAAM,uBAAuB,MAAM,OAAO;AAAA,IACnD,CAAC;AAED,UAAM,OAAO,QAAQ;AAErB,SAAK,UAAU;AACf,SAAK,cAAc;AACnB,SAAK,cAAc;AAAA,EACrB;AAAA,EAEA,MAAM,QAAuB;AAC3B,SAAK,aAAa;AAElB,QAAI,KAAK,WAAW,QAAQ,CAAC,KAAK,aAAa;AAC7C;AAAA,IACF;AAEA,UAAM,KAAK,QAAQ,IAAI;AAEvB,SAAK,KAAK,OAAO;AACjB,SAAK,YAAY;AAAA,EACnB;AAAA,EAEA,MAAM,iBAAiB,gBAAgD;AACrE,SAAK,iBAAiB;AAEtB,UAAM,SACJ,kBACA,KAAK,OAAO,yBACZ,oBACA,QAAQ,MAAM,GAAG;AAEnB,UAAM,KAAK,QAAS,MAAM,OAAO;AACjC,UAAM,KAAK,QAAS,MAAM,mCAAmC,KAAK,EAAE;AAEpE,SAAK,kBAAkB;AAAA,EACzB;AAAA,EAEA,MAAM,oBAAmC;AACvC,SAAK,iBAAiB;AACtB,UAAM,KAAK,QAAS,MAAM,QAAQ;AAClC,SAAK,kBAAkB;AAAA,EACzB;AAAA,EAEA,MAAM,sBAAqC;AACzC,SAAK,iBAAiB;AACtB,UAAM,KAAK,QAAS,MAAM,UAAU;AACpC,SAAK,kBAAkB;AAAA,EACzB;AAAA,EAEA,MAAM,QAAQ,SAAyD;AACrE,UAAM,UAAuC,CAAC;AAC9C,eAAW,SAAS,QAAQ,OAAO,CAAC,SAAS,CAAC,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/create-orm.d.ts
CHANGED
|
@@ -63,13 +63,13 @@ export interface Orm<TDef extends DbContextDef<any, any, any>> {
|
|
|
63
63
|
*
|
|
64
64
|
* // Execute within a transaction
|
|
65
65
|
* await orm.connect(async (db) => {
|
|
66
|
-
* const users = await db.user().
|
|
66
|
+
* const users = await db.user().execute();
|
|
67
67
|
* return users;
|
|
68
68
|
* });
|
|
69
69
|
*
|
|
70
70
|
* // Execute without a transaction
|
|
71
71
|
* await orm.connectWithoutTransaction(async (db) => {
|
|
72
|
-
* const users = await db.user().
|
|
72
|
+
* const users = await db.user().execute();
|
|
73
73
|
* return users;
|
|
74
74
|
* });
|
|
75
75
|
* ```
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@simplysm/orm-node",
|
|
3
|
-
"version": "13.0.
|
|
3
|
+
"version": "13.0.77",
|
|
4
4
|
"description": "Simplysm package - ORM module (node)",
|
|
5
5
|
"author": "simplysm",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
"dependencies": {
|
|
21
21
|
"consola": "^3.4.2",
|
|
22
22
|
"generic-pool": "^3.9.0",
|
|
23
|
-
"@simplysm/core-common": "13.0.
|
|
24
|
-
"@simplysm/orm-common": "13.0.
|
|
23
|
+
"@simplysm/core-common": "13.0.77",
|
|
24
|
+
"@simplysm/orm-common": "13.0.77"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@types/pg": "^8.18.0",
|
|
@@ -2,13 +2,13 @@ import consola from "consola";
|
|
|
2
2
|
import {
|
|
3
3
|
DateOnly,
|
|
4
4
|
DateTime,
|
|
5
|
-
|
|
5
|
+
json,
|
|
6
|
+
str,
|
|
7
|
+
wait,
|
|
6
8
|
SdError,
|
|
7
9
|
EventEmitter,
|
|
8
|
-
strIsNullOrEmpty,
|
|
9
10
|
Time,
|
|
10
11
|
Uuid,
|
|
11
|
-
waitUntil,
|
|
12
12
|
} from "@simplysm/core-common";
|
|
13
13
|
import type { ColumnMeta, DataType, IsolationLevel } from "@simplysm/orm-common";
|
|
14
14
|
import {
|
|
@@ -116,12 +116,12 @@ export class MssqlDbConn extends EventEmitter<{ close: void }> implements DbConn
|
|
|
116
116
|
|
|
117
117
|
// Cancel in-progress requests
|
|
118
118
|
conn.cancel();
|
|
119
|
-
await
|
|
119
|
+
await wait.until(() => this._requests.length < 1, 30000, 100);
|
|
120
120
|
|
|
121
121
|
// Wait for connection termination
|
|
122
122
|
await new Promise<void>((resolve) => {
|
|
123
123
|
conn.on("end", () => {
|
|
124
|
-
|
|
124
|
+
wait.until(() => this._conn == null, 30000, 100)
|
|
125
125
|
.then(() => resolve())
|
|
126
126
|
.catch(() => resolve());
|
|
127
127
|
});
|
|
@@ -194,7 +194,7 @@ export class MssqlDbConn extends EventEmitter<{ close: void }> implements DbConn
|
|
|
194
194
|
|
|
195
195
|
async execute(queries: string[]): Promise<Record<string, unknown>[][]> {
|
|
196
196
|
const results: Record<string, unknown>[][] = [];
|
|
197
|
-
for (const query of queries.filter((item) => !
|
|
197
|
+
for (const query of queries.filter((item) => !str.isNullOrEmpty(item))) {
|
|
198
198
|
const resultItems = await this.executeParametrized(query);
|
|
199
199
|
results.push(...resultItems);
|
|
200
200
|
}
|
|
@@ -221,11 +221,11 @@ export class MssqlDbConn extends EventEmitter<{ close: void }> implements DbConn
|
|
|
221
221
|
rejected = true;
|
|
222
222
|
this._requests = this._requests.filter((r) => r !== queryRequest);
|
|
223
223
|
|
|
224
|
-
const
|
|
225
|
-
if (
|
|
224
|
+
const errCode = "code" in err ? err.code : undefined;
|
|
225
|
+
if (errCode === "ECANCEL") {
|
|
226
226
|
reject(new SdError(err, "Query was cancelled."));
|
|
227
227
|
} else {
|
|
228
|
-
const lineNumber =
|
|
228
|
+
const lineNumber = "lineNumber" in err && typeof err.lineNumber === "number" ? err.lineNumber : undefined;
|
|
229
229
|
if (lineNumber != null && lineNumber > 0) {
|
|
230
230
|
const splitQuery = query.split("\n");
|
|
231
231
|
splitQuery[lineNumber - 1] = "==> " + splitQuery[lineNumber - 1];
|
|
@@ -320,7 +320,7 @@ export class MssqlDbConn extends EventEmitter<{ close: void }> implements DbConn
|
|
|
320
320
|
reject(
|
|
321
321
|
new SdError(
|
|
322
322
|
err,
|
|
323
|
-
`Bulk Insert error\n${
|
|
323
|
+
`Bulk Insert error\n${json.stringify(tediousColumnDefs)}\n-- data\n${json.stringify(records).substring(0, 10000)}...\n--`,
|
|
324
324
|
),
|
|
325
325
|
);
|
|
326
326
|
return;
|
|
@@ -5,12 +5,12 @@ import path from "path";
|
|
|
5
5
|
import type { Connection } from "mysql2/promise";
|
|
6
6
|
import consola from "consola";
|
|
7
7
|
import {
|
|
8
|
-
|
|
8
|
+
bytes,
|
|
9
|
+
str,
|
|
9
10
|
DateOnly,
|
|
10
11
|
DateTime,
|
|
11
12
|
SdError,
|
|
12
13
|
EventEmitter,
|
|
13
|
-
strIsNullOrEmpty,
|
|
14
14
|
Time,
|
|
15
15
|
Uuid,
|
|
16
16
|
} from "@simplysm/core-common";
|
|
@@ -126,7 +126,7 @@ export class MysqlDbConn extends EventEmitter<{ close: void }> implements DbConn
|
|
|
126
126
|
|
|
127
127
|
async execute(queries: string[]): Promise<Record<string, unknown>[][]> {
|
|
128
128
|
const results: Record<string, unknown>[][] = [];
|
|
129
|
-
for (const query of queries.filter((item) => !
|
|
129
|
+
for (const query of queries.filter((item) => !str.isNullOrEmpty(item))) {
|
|
130
130
|
const resultItems = await this.executeParametrized(query);
|
|
131
131
|
results.push(...resultItems);
|
|
132
132
|
}
|
|
@@ -263,9 +263,9 @@ export class MysqlDbConn extends EventEmitter<{ close: void }> implements DbConn
|
|
|
263
263
|
case "varchar":
|
|
264
264
|
case "char":
|
|
265
265
|
case "text": {
|
|
266
|
-
const
|
|
266
|
+
const strVal = value as string;
|
|
267
267
|
// Escape tab, newline, backslash
|
|
268
|
-
return
|
|
268
|
+
return strVal
|
|
269
269
|
.replace(/\\/g, "\\\\")
|
|
270
270
|
.replace(/\0/g, "\\0")
|
|
271
271
|
.replace(/\t/g, "\\t")
|
|
@@ -286,7 +286,7 @@ export class MysqlDbConn extends EventEmitter<{ close: void }> implements DbConn
|
|
|
286
286
|
return (value as Uuid).toString().replace(/-/g, ""); // Hex for BINARY(16) storage
|
|
287
287
|
|
|
288
288
|
case "binary":
|
|
289
|
-
return
|
|
289
|
+
return bytes.toHex(value as Uint8Array);
|
|
290
290
|
|
|
291
291
|
default:
|
|
292
292
|
throw new SdError(`Unsupported DataType: ${JSON.stringify(dataType)}`);
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { Readable } from "stream";
|
|
2
2
|
import consola from "consola";
|
|
3
3
|
import {
|
|
4
|
-
|
|
4
|
+
bytes,
|
|
5
|
+
str,
|
|
5
6
|
DateOnly,
|
|
6
7
|
DateTime,
|
|
7
8
|
SdError,
|
|
8
9
|
EventEmitter,
|
|
9
|
-
strIsNullOrEmpty,
|
|
10
10
|
Time,
|
|
11
11
|
Uuid,
|
|
12
12
|
} from "@simplysm/core-common";
|
|
@@ -117,7 +117,7 @@ export class PostgresqlDbConn extends EventEmitter<{ close: void }> implements D
|
|
|
117
117
|
|
|
118
118
|
async execute(queries: string[]): Promise<Record<string, unknown>[][]> {
|
|
119
119
|
const results: Record<string, unknown>[][] = [];
|
|
120
|
-
for (const query of queries.filter((item) => !
|
|
120
|
+
for (const query of queries.filter((item) => !str.isNullOrEmpty(item))) {
|
|
121
121
|
const resultItems = await this.executeParametrized(query);
|
|
122
122
|
results.push(...resultItems);
|
|
123
123
|
}
|
|
@@ -210,18 +210,18 @@ export class PostgresqlDbConn extends EventEmitter<{ close: void }> implements D
|
|
|
210
210
|
case "varchar":
|
|
211
211
|
case "char":
|
|
212
212
|
case "text": {
|
|
213
|
-
const
|
|
213
|
+
const strVal = value as string;
|
|
214
214
|
// CSV format: wrap with double quotes, escape internal double quotes with double quotes
|
|
215
215
|
if (
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
216
|
+
strVal.includes('"') ||
|
|
217
|
+
strVal.includes(",") ||
|
|
218
|
+
strVal.includes("\n") ||
|
|
219
|
+
strVal.includes("\r") ||
|
|
220
|
+
strVal.includes("\\")
|
|
221
221
|
) {
|
|
222
|
-
return '"' +
|
|
222
|
+
return '"' + strVal.replace(/"/g, '""') + '"';
|
|
223
223
|
}
|
|
224
|
-
return
|
|
224
|
+
return strVal;
|
|
225
225
|
}
|
|
226
226
|
|
|
227
227
|
case "datetime":
|
|
@@ -237,7 +237,7 @@ export class PostgresqlDbConn extends EventEmitter<{ close: void }> implements D
|
|
|
237
237
|
return (value as Uuid).toString();
|
|
238
238
|
|
|
239
239
|
case "binary":
|
|
240
|
-
return '"\\x' +
|
|
240
|
+
return '"\\x' + bytes.toHex(value as Uint8Array) + '"'; // PostgreSQL bytea hex format (wrapped in CSV double quotes)
|
|
241
241
|
|
|
242
242
|
default:
|
|
243
243
|
throw new SdError(`Unsupported DataType: ${JSON.stringify(dataType)}`);
|
package/src/create-orm.ts
CHANGED
|
@@ -78,13 +78,13 @@ export interface Orm<TDef extends DbContextDef<any, any, any>> {
|
|
|
78
78
|
*
|
|
79
79
|
* // Execute within a transaction
|
|
80
80
|
* await orm.connect(async (db) => {
|
|
81
|
-
* const users = await db.user().
|
|
81
|
+
* const users = await db.user().execute();
|
|
82
82
|
* return users;
|
|
83
83
|
* });
|
|
84
84
|
*
|
|
85
85
|
* // Execute without a transaction
|
|
86
86
|
* await orm.connectWithoutTransaction(async (db) => {
|
|
87
|
-
* const users = await db.user().
|
|
87
|
+
* const users = await db.user().execute();
|
|
88
88
|
* return users;
|
|
89
89
|
* });
|
|
90
90
|
* ```
|