@simplysm/orm-node 13.0.0-beta.6 → 13.0.2
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 +28 -23
- package/dist/connections/mssql-db-conn.d.ts.map +1 -0
- package/dist/connections/mssql-db-conn.js +3 -3
- package/dist/connections/mssql-db-conn.js.map +1 -2
- package/dist/connections/mysql-db-conn.d.ts.map +1 -0
- package/dist/connections/mysql-db-conn.js +3 -3
- package/dist/connections/mysql-db-conn.js.map +1 -2
- package/dist/connections/postgresql-db-conn.d.ts.map +1 -0
- package/dist/connections/postgresql-db-conn.js +3 -3
- package/dist/connections/postgresql-db-conn.js.map +1 -2
- package/dist/create-db-conn.d.ts +12 -0
- package/dist/create-db-conn.d.ts.map +1 -0
- package/dist/create-db-conn.js +75 -0
- package/dist/create-db-conn.js.map +6 -0
- package/dist/{orm-node/src/sd-orm.d.ts → create-orm.d.ts} +37 -37
- package/dist/create-orm.d.ts.map +1 -0
- package/dist/create-orm.js +32 -0
- package/dist/create-orm.js.map +6 -0
- package/dist/{orm-node/src/index.d.ts → index.d.ts} +2 -2
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -8
- package/dist/index.js.map +0 -1
- package/dist/node-db-context-executor.d.ts.map +1 -0
- package/dist/node-db-context-executor.js +3 -3
- package/dist/node-db-context-executor.js.map +1 -2
- package/dist/pooled-db-conn.d.ts.map +1 -0
- package/dist/pooled-db-conn.js +3 -3
- package/dist/pooled-db-conn.js.map +1 -2
- package/dist/types/db-conn.d.ts.map +1 -0
- package/dist/types/db-conn.js.map +0 -1
- package/package.json +12 -8
- package/src/connections/mssql-db-conn.ts +2 -2
- package/src/connections/mysql-db-conn.ts +2 -2
- package/src/connections/postgresql-db-conn.ts +2 -2
- package/src/create-db-conn.ts +111 -0
- package/src/create-orm.ts +118 -0
- package/src/index.ts +2 -2
- package/src/node-db-context-executor.ts +2 -2
- package/src/pooled-db-conn.ts +2 -2
- package/.cache/typecheck-node.tsbuildinfo +0 -1
- package/dist/core-common/src/common.types.d.ts +0 -74
- package/dist/core-common/src/common.types.d.ts.map +0 -1
- package/dist/core-common/src/env.d.ts +0 -6
- package/dist/core-common/src/env.d.ts.map +0 -1
- package/dist/core-common/src/errors/argument-error.d.ts +0 -25
- package/dist/core-common/src/errors/argument-error.d.ts.map +0 -1
- package/dist/core-common/src/errors/not-implemented-error.d.ts +0 -29
- package/dist/core-common/src/errors/not-implemented-error.d.ts.map +0 -1
- package/dist/core-common/src/errors/sd-error.d.ts +0 -27
- package/dist/core-common/src/errors/sd-error.d.ts.map +0 -1
- package/dist/core-common/src/errors/timeout-error.d.ts +0 -31
- package/dist/core-common/src/errors/timeout-error.d.ts.map +0 -1
- package/dist/core-common/src/extensions/arr-ext.d.ts +0 -15
- package/dist/core-common/src/extensions/arr-ext.d.ts.map +0 -1
- package/dist/core-common/src/extensions/arr-ext.helpers.d.ts +0 -19
- package/dist/core-common/src/extensions/arr-ext.helpers.d.ts.map +0 -1
- package/dist/core-common/src/extensions/arr-ext.types.d.ts +0 -215
- package/dist/core-common/src/extensions/arr-ext.types.d.ts.map +0 -1
- package/dist/core-common/src/extensions/map-ext.d.ts +0 -57
- package/dist/core-common/src/extensions/map-ext.d.ts.map +0 -1
- package/dist/core-common/src/extensions/set-ext.d.ts +0 -36
- package/dist/core-common/src/extensions/set-ext.d.ts.map +0 -1
- package/dist/core-common/src/features/debounce-queue.d.ts +0 -53
- package/dist/core-common/src/features/debounce-queue.d.ts.map +0 -1
- package/dist/core-common/src/features/event-emitter.d.ts +0 -66
- package/dist/core-common/src/features/event-emitter.d.ts.map +0 -1
- package/dist/core-common/src/features/serial-queue.d.ts +0 -47
- package/dist/core-common/src/features/serial-queue.d.ts.map +0 -1
- package/dist/core-common/src/index.d.ts +0 -32
- package/dist/core-common/src/index.d.ts.map +0 -1
- package/dist/core-common/src/types/date-only.d.ts +0 -152
- package/dist/core-common/src/types/date-only.d.ts.map +0 -1
- package/dist/core-common/src/types/date-time.d.ts +0 -96
- package/dist/core-common/src/types/date-time.d.ts.map +0 -1
- package/dist/core-common/src/types/lazy-gc-map.d.ts +0 -80
- package/dist/core-common/src/types/lazy-gc-map.d.ts.map +0 -1
- package/dist/core-common/src/types/time.d.ts +0 -68
- package/dist/core-common/src/types/time.d.ts.map +0 -1
- package/dist/core-common/src/types/uuid.d.ts +0 -35
- package/dist/core-common/src/types/uuid.d.ts.map +0 -1
- package/dist/core-common/src/utils/bytes.d.ts +0 -51
- package/dist/core-common/src/utils/bytes.d.ts.map +0 -1
- package/dist/core-common/src/utils/date-format.d.ts +0 -90
- package/dist/core-common/src/utils/date-format.d.ts.map +0 -1
- package/dist/core-common/src/utils/json.d.ts +0 -34
- package/dist/core-common/src/utils/json.d.ts.map +0 -1
- package/dist/core-common/src/utils/num.d.ts +0 -60
- package/dist/core-common/src/utils/num.d.ts.map +0 -1
- package/dist/core-common/src/utils/obj.d.ts +0 -258
- package/dist/core-common/src/utils/obj.d.ts.map +0 -1
- package/dist/core-common/src/utils/path.d.ts +0 -23
- package/dist/core-common/src/utils/path.d.ts.map +0 -1
- package/dist/core-common/src/utils/primitive.d.ts +0 -18
- package/dist/core-common/src/utils/primitive.d.ts.map +0 -1
- package/dist/core-common/src/utils/str.d.ts +0 -103
- package/dist/core-common/src/utils/str.d.ts.map +0 -1
- package/dist/core-common/src/utils/template-strings.d.ts +0 -84
- package/dist/core-common/src/utils/template-strings.d.ts.map +0 -1
- package/dist/core-common/src/utils/transferable.d.ts +0 -47
- package/dist/core-common/src/utils/transferable.d.ts.map +0 -1
- package/dist/core-common/src/utils/wait.d.ts +0 -19
- package/dist/core-common/src/utils/wait.d.ts.map +0 -1
- package/dist/core-common/src/utils/xml.d.ts +0 -36
- package/dist/core-common/src/utils/xml.d.ts.map +0 -1
- package/dist/core-common/src/zip/sd-zip.d.ts +0 -80
- package/dist/core-common/src/zip/sd-zip.d.ts.map +0 -1
- package/dist/db-conn-factory.js +0 -88
- package/dist/db-conn-factory.js.map +0 -7
- package/dist/orm-common/src/db-context.d.ts +0 -669
- package/dist/orm-common/src/db-context.d.ts.map +0 -1
- package/dist/orm-common/src/errors/db-transaction-error.d.ts +0 -51
- package/dist/orm-common/src/errors/db-transaction-error.d.ts.map +0 -1
- package/dist/orm-common/src/exec/executable.d.ts +0 -79
- package/dist/orm-common/src/exec/executable.d.ts.map +0 -1
- package/dist/orm-common/src/exec/queryable.d.ts +0 -708
- package/dist/orm-common/src/exec/queryable.d.ts.map +0 -1
- package/dist/orm-common/src/exec/search-parser.d.ts +0 -72
- package/dist/orm-common/src/exec/search-parser.d.ts.map +0 -1
- package/dist/orm-common/src/expr/expr-unit.d.ts +0 -25
- package/dist/orm-common/src/expr/expr-unit.d.ts.map +0 -1
- package/dist/orm-common/src/expr/expr.d.ts +0 -1369
- package/dist/orm-common/src/expr/expr.d.ts.map +0 -1
- package/dist/orm-common/src/index.d.ts +0 -32
- package/dist/orm-common/src/index.d.ts.map +0 -1
- package/dist/orm-common/src/models/system-migration.d.ts +0 -10
- package/dist/orm-common/src/models/system-migration.d.ts.map +0 -1
- package/dist/orm-common/src/query-builder/base/expr-renderer-base.d.ts +0 -95
- package/dist/orm-common/src/query-builder/base/expr-renderer-base.d.ts.map +0 -1
- package/dist/orm-common/src/query-builder/base/query-builder-base.d.ts +0 -66
- package/dist/orm-common/src/query-builder/base/query-builder-base.d.ts.map +0 -1
- package/dist/orm-common/src/query-builder/mssql/mssql-expr-renderer.d.ts +0 -84
- package/dist/orm-common/src/query-builder/mssql/mssql-expr-renderer.d.ts.map +0 -1
- package/dist/orm-common/src/query-builder/mssql/mssql-query-builder.d.ts +0 -45
- package/dist/orm-common/src/query-builder/mssql/mssql-query-builder.d.ts.map +0 -1
- package/dist/orm-common/src/query-builder/mysql/mysql-expr-renderer.d.ts +0 -84
- package/dist/orm-common/src/query-builder/mysql/mysql-expr-renderer.d.ts.map +0 -1
- package/dist/orm-common/src/query-builder/mysql/mysql-query-builder.d.ts +0 -54
- package/dist/orm-common/src/query-builder/mysql/mysql-query-builder.d.ts.map +0 -1
- package/dist/orm-common/src/query-builder/postgresql/postgresql-expr-renderer.d.ts +0 -84
- package/dist/orm-common/src/query-builder/postgresql/postgresql-expr-renderer.d.ts.map +0 -1
- package/dist/orm-common/src/query-builder/postgresql/postgresql-query-builder.d.ts +0 -52
- package/dist/orm-common/src/query-builder/postgresql/postgresql-query-builder.d.ts.map +0 -1
- package/dist/orm-common/src/query-builder/query-builder.d.ts +0 -7
- package/dist/orm-common/src/query-builder/query-builder.d.ts.map +0 -1
- package/dist/orm-common/src/schema/factory/column-builder.d.ts +0 -394
- package/dist/orm-common/src/schema/factory/column-builder.d.ts.map +0 -1
- package/dist/orm-common/src/schema/factory/index-builder.d.ts +0 -151
- package/dist/orm-common/src/schema/factory/index-builder.d.ts.map +0 -1
- package/dist/orm-common/src/schema/factory/relation-builder.d.ts +0 -337
- package/dist/orm-common/src/schema/factory/relation-builder.d.ts.map +0 -1
- package/dist/orm-common/src/schema/procedure-builder.d.ts +0 -202
- package/dist/orm-common/src/schema/procedure-builder.d.ts.map +0 -1
- package/dist/orm-common/src/schema/table-builder.d.ts +0 -259
- package/dist/orm-common/src/schema/table-builder.d.ts.map +0 -1
- package/dist/orm-common/src/schema/view-builder.d.ts +0 -183
- package/dist/orm-common/src/schema/view-builder.d.ts.map +0 -1
- package/dist/orm-common/src/types/column.d.ts +0 -172
- package/dist/orm-common/src/types/column.d.ts.map +0 -1
- package/dist/orm-common/src/types/db.d.ts +0 -175
- package/dist/orm-common/src/types/db.d.ts.map +0 -1
- package/dist/orm-common/src/types/expr.d.ts +0 -474
- package/dist/orm-common/src/types/expr.d.ts.map +0 -1
- package/dist/orm-common/src/types/query-def.d.ts +0 -351
- package/dist/orm-common/src/types/query-def.d.ts.map +0 -1
- package/dist/orm-common/src/utils/result-parser.d.ts +0 -38
- package/dist/orm-common/src/utils/result-parser.d.ts.map +0 -1
- package/dist/orm-node/src/connections/mssql-db-conn.d.ts.map +0 -1
- package/dist/orm-node/src/connections/mysql-db-conn.d.ts.map +0 -1
- package/dist/orm-node/src/connections/postgresql-db-conn.d.ts.map +0 -1
- package/dist/orm-node/src/db-conn-factory.d.ts +0 -25
- package/dist/orm-node/src/db-conn-factory.d.ts.map +0 -1
- package/dist/orm-node/src/index.d.ts.map +0 -1
- package/dist/orm-node/src/node-db-context-executor.d.ts.map +0 -1
- package/dist/orm-node/src/pooled-db-conn.d.ts.map +0 -1
- package/dist/orm-node/src/sd-orm.d.ts.map +0 -1
- package/dist/orm-node/src/types/db-conn.d.ts.map +0 -1
- package/dist/sd-orm.js +0 -44
- package/dist/sd-orm.js.map +0 -7
- package/src/db-conn-factory.ts +0 -114
- package/src/sd-orm.ts +0 -102
- /package/dist/{orm-node/src/connections → connections}/mssql-db-conn.d.ts +0 -0
- /package/dist/{orm-node/src/connections → connections}/mysql-db-conn.d.ts +0 -0
- /package/dist/{orm-node/src/connections → connections}/postgresql-db-conn.d.ts +0 -0
- /package/dist/{orm-node/src/node-db-context-executor.d.ts → node-db-context-executor.d.ts} +0 -0
- /package/dist/{orm-node/src/pooled-db-conn.d.ts → pooled-db-conn.d.ts} +0 -0
- /package/dist/{orm-node/src/types → types}/db-conn.d.ts +0 -0
package/README.md
CHANGED
|
@@ -28,28 +28,33 @@ npm install pg pg-copy-streams
|
|
|
28
28
|
## Architecture
|
|
29
29
|
|
|
30
30
|
```
|
|
31
|
-
|
|
31
|
+
createOrm() (top-level entry point)
|
|
32
32
|
└── NodeDbContextExecutor (executor between DbContext and actual DB)
|
|
33
|
-
└──
|
|
33
|
+
└── createDbConn() (connection creation and pool management)
|
|
34
34
|
└── PooledDbConn (connection pool wrapper)
|
|
35
35
|
└── MysqlDbConn / MssqlDbConn / PostgresqlDbConn (DBMS-specific low-level connections)
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
-
- `
|
|
38
|
+
- `createOrm()` is the top-level factory function that takes a `DbContext` type and connection settings to manage transactions.
|
|
39
39
|
- `NodeDbContextExecutor` is the executor used by `DbContext`, converting `QueryDef` to SQL and executing it.
|
|
40
|
-
- `
|
|
40
|
+
- `createDbConn()` is a factory function that acquires connections from the connection pool.
|
|
41
41
|
- `PooledDbConn` is a connection pool wrapper based on `generic-pool`, returning connections to the pool instead of closing them after use.
|
|
42
42
|
- Each DBMS-specific connection class (`MysqlDbConn`, `MssqlDbConn`, `PostgresqlDbConn`) directly uses low-level DB drivers.
|
|
43
43
|
|
|
44
44
|
## Core Modules
|
|
45
45
|
|
|
46
|
+
### Functions
|
|
47
|
+
|
|
48
|
+
| Function | Description |
|
|
49
|
+
|----------|-------------|
|
|
50
|
+
| `createOrm()` | ORM factory function. Takes `DbContext` type and connection settings to manage transaction-based connections. |
|
|
51
|
+
| `createDbConn()` | Connection factory function. Caches connection pools by configuration and returns `PooledDbConn`. |
|
|
52
|
+
|
|
46
53
|
### Classes
|
|
47
54
|
|
|
48
55
|
| Class | Description |
|
|
49
56
|
|--------|------|
|
|
50
|
-
| `SdOrm` | ORM top-level class. Takes `DbContext` type and connection settings to manage transaction-based connections. |
|
|
51
57
|
| `NodeDbContextExecutor` | `DbContextExecutor` implementation. Converts `QueryDef` to SQL, executes it, and parses results. |
|
|
52
|
-
| `DbConnFactory` | Connection factory. Caches connection pools by configuration and returns `PooledDbConn`. |
|
|
53
58
|
| `PooledDbConn` | Connection pool wrapper. Acquires/returns physical connections from `generic-pool`, implements `DbConn` interface. |
|
|
54
59
|
| `MysqlDbConn` | MySQL connection class. Uses `mysql2/promise` driver. |
|
|
55
60
|
| `MssqlDbConn` | MSSQL/Azure SQL connection class. Uses `tedious` driver. |
|
|
@@ -65,7 +70,7 @@ SdOrm (top-level entry point)
|
|
|
65
70
|
| `MssqlDbConnConfig` | MSSQL connection config. `dialect: "mssql" \| "mssql-azure"`. |
|
|
66
71
|
| `PostgresqlDbConnConfig` | PostgreSQL connection config. `dialect: "postgresql"`. |
|
|
67
72
|
| `DbPoolConfig` | Connection pool config (`min`, `max`, `acquireTimeoutMillis`, `idleTimeoutMillis`). |
|
|
68
|
-
| `
|
|
73
|
+
| `OrmOptions` | `createOrm()` options. `database`, `schema` settings that override `DbConnConfig`. |
|
|
69
74
|
|
|
70
75
|
### Constants and Utility Functions
|
|
71
76
|
|
|
@@ -77,12 +82,12 @@ SdOrm (top-level entry point)
|
|
|
77
82
|
|
|
78
83
|
## Usage
|
|
79
84
|
|
|
80
|
-
### Basic Usage with
|
|
85
|
+
### Basic Usage with createOrm
|
|
81
86
|
|
|
82
|
-
`
|
|
87
|
+
`createOrm()` is the top-level factory function used with `DbContext`. It automatically handles transaction management.
|
|
83
88
|
|
|
84
89
|
```typescript
|
|
85
|
-
import {
|
|
90
|
+
import { createOrm } from "@simplysm/orm-node";
|
|
86
91
|
import { DbContext, queryable, Table } from "@simplysm/orm-common";
|
|
87
92
|
|
|
88
93
|
// 1. Define table
|
|
@@ -100,8 +105,8 @@ class MyDb extends DbContext {
|
|
|
100
105
|
readonly user = queryable(this, User);
|
|
101
106
|
}
|
|
102
107
|
|
|
103
|
-
// 3. Create
|
|
104
|
-
const orm =
|
|
108
|
+
// 3. Create ORM instance
|
|
109
|
+
const orm = createOrm(MyDb, {
|
|
105
110
|
dialect: "mysql",
|
|
106
111
|
host: "localhost",
|
|
107
112
|
port: 3306,
|
|
@@ -148,12 +153,12 @@ Supported isolation levels (`IsolationLevel`):
|
|
|
148
153
|
- `"REPEATABLE_READ"`
|
|
149
154
|
- `"SERIALIZABLE"`
|
|
150
155
|
|
|
151
|
-
### Overriding database/schema via
|
|
156
|
+
### Overriding database/schema via OrmOptions
|
|
152
157
|
|
|
153
|
-
Using `
|
|
158
|
+
Using `OrmOptions`, you can use different values instead of the `database`/`schema` set in `DbConnConfig`.
|
|
154
159
|
|
|
155
160
|
```typescript
|
|
156
|
-
const orm =
|
|
161
|
+
const orm = createOrm(MyDb, {
|
|
157
162
|
dialect: "postgresql",
|
|
158
163
|
host: "localhost",
|
|
159
164
|
port: 5432,
|
|
@@ -172,7 +177,7 @@ const orm = new SdOrm(MyDb, {
|
|
|
172
177
|
Configure connection pool via the `pool` field in `DbConnConfig`. The pool is based on the `generic-pool` library, and pools are automatically cached for identical configurations.
|
|
173
178
|
|
|
174
179
|
```typescript
|
|
175
|
-
const orm =
|
|
180
|
+
const orm = createOrm(MyDb, {
|
|
176
181
|
dialect: "mssql",
|
|
177
182
|
host: "localhost",
|
|
178
183
|
port: 1433,
|
|
@@ -188,15 +193,15 @@ const orm = new SdOrm(MyDb, {
|
|
|
188
193
|
});
|
|
189
194
|
```
|
|
190
195
|
|
|
191
|
-
### Low-Level Connection with
|
|
196
|
+
### Low-Level Connection with createDbConn
|
|
192
197
|
|
|
193
|
-
You can connect directly to the DB and execute SQL without `
|
|
198
|
+
You can connect directly to the DB and execute SQL without `createOrm`/`DbContext`. `createDbConn()` returns `PooledDbConn` from the connection pool.
|
|
194
199
|
|
|
195
200
|
```typescript
|
|
196
|
-
import {
|
|
201
|
+
import { createDbConn } from "@simplysm/orm-node";
|
|
197
202
|
|
|
198
203
|
// Create connection (acquire from pool)
|
|
199
|
-
const conn = await
|
|
204
|
+
const conn = await createDbConn({
|
|
200
205
|
dialect: "mysql",
|
|
201
206
|
host: "localhost",
|
|
202
207
|
port: 3306,
|
|
@@ -233,7 +238,7 @@ try {
|
|
|
233
238
|
Each connection class supports parameter binding via the `executeParametrized()` method.
|
|
234
239
|
|
|
235
240
|
```typescript
|
|
236
|
-
const conn = await
|
|
241
|
+
const conn = await createDbConn({
|
|
237
242
|
dialect: "postgresql",
|
|
238
243
|
host: "localhost",
|
|
239
244
|
port: 5432,
|
|
@@ -266,7 +271,7 @@ Supports bulk data insertion using native bulk APIs for each DBMS.
|
|
|
266
271
|
```typescript
|
|
267
272
|
import type { ColumnMeta } from "@simplysm/orm-common";
|
|
268
273
|
|
|
269
|
-
const conn = await
|
|
274
|
+
const conn = await createDbConn({
|
|
270
275
|
dialect: "mysql",
|
|
271
276
|
host: "localhost",
|
|
272
277
|
port: 3306,
|
|
@@ -398,7 +403,7 @@ The common interface implemented by all DBMS-specific connection classes (`Mysql
|
|
|
398
403
|
|
|
399
404
|
### Driver Lazy Loading
|
|
400
405
|
|
|
401
|
-
DBMS-specific drivers (`mysql2`, `tedious`, `pg`) are lazy-loaded within `
|
|
406
|
+
DBMS-specific drivers (`mysql2`, `tedious`, `pg`) are lazy-loaded within `createDbConn()`. Therefore, import errors won't occur even if unused drivers are not installed.
|
|
402
407
|
|
|
403
408
|
### PooledDbConn close Behavior
|
|
404
409
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mssql-db-conn.d.ts","sourceRoot":"","sources":["../../src/connections/mssql-db-conn.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,YAAY,EAKb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,UAAU,EAAY,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAA2C,KAAK,MAAM,EAAE,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAMhH;;;;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;IAuBhE,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBlC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBpC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;IAUhD,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;IA6F5E,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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import consola from "consola";
|
|
2
2
|
import {
|
|
3
3
|
DateOnly,
|
|
4
4
|
DateTime,
|
|
@@ -10,8 +10,8 @@ import {
|
|
|
10
10
|
Uuid,
|
|
11
11
|
waitUntil
|
|
12
12
|
} from "@simplysm/core-common";
|
|
13
|
-
import { DB_CONN_DEFAULT_TIMEOUT, DB_CONN_ERRORS } from "../types/db-conn";
|
|
14
|
-
const logger =
|
|
13
|
+
import { DB_CONN_DEFAULT_TIMEOUT, DB_CONN_ERRORS } from "../types/db-conn.js";
|
|
14
|
+
const logger = consola.withTag("mssql-db-conn");
|
|
15
15
|
class MssqlDbConn extends EventEmitter {
|
|
16
16
|
constructor(_tedious, config) {
|
|
17
17
|
super();
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/connections/mssql-db-conn.ts"],
|
|
4
|
-
"sourcesContent": ["import { createConsola } from \"consola\";\nimport {\n DateOnly,\n DateTime,\n jsonStringify,\n SdError,\n EventEmitter,\n strIsNullOrEmpty,\n Time,\n Uuid,\n waitUntil,\n} from \"@simplysm/core-common\";\nimport type { ColumnMeta, DataType, IsolationLevel } from \"@simplysm/orm-common\";\nimport { DB_CONN_DEFAULT_TIMEOUT, DB_CONN_ERRORS, type DbConn, type MssqlDbConnConfig } from \"../types/db-conn\";\nimport type tediousType from \"tedious\";\nimport type { DataType as TediousDataType } from \"tedious/lib/data-type\";\n\nconst logger = createConsola().withTag(\"mssql-db-conn\");\n\n/**\n * MSSQL \uB370\uC774\uD130\uBCA0\uC774\uC2A4 \uC5F0\uACB0 \uD074\uB798\uC2A4\n *\n * tedious \uB77C\uC774\uBE0C\uB7EC\uB9AC\uB97C \uC0AC\uC6A9\uD558\uC5EC MSSQL/Azure SQL \uC5F0\uACB0\uC744 \uAD00\uB9AC\uD569\uB2C8\uB2E4.\n */\nexport class MssqlDbConn extends EventEmitter<{ close: void }> implements DbConn {\n private readonly _timeout = DB_CONN_DEFAULT_TIMEOUT;\n\n private _conn?: tediousType.Connection;\n private _connTimeout?: ReturnType<typeof setTimeout>;\n private _requests: tediousType.Request[] = [];\n\n isConnected = false;\n isOnTransaction = false;\n\n constructor(\n private readonly _tedious: typeof import(\"tedious\"),\n readonly config: MssqlDbConnConfig,\n ) {\n super();\n }\n\n async connect(): Promise<void> {\n if (this.isConnected) {\n throw new SdError(DB_CONN_ERRORS.ALREADY_CONNECTED);\n }\n\n const conn = new this._tedious.Connection({\n server: this.config.host,\n authentication: {\n type: \"default\",\n options: {\n userName: this.config.username,\n password: this.config.password,\n },\n },\n options: {\n database: this.config.database,\n port: this.config.port,\n rowCollectionOnDone: true,\n useUTC: false,\n encrypt: this.config.dialect === \"mssql-azure\",\n requestTimeout: this._timeout,\n trustServerCertificate: true,\n connectTimeout: this._timeout * 5,\n } as tediousType.ConnectionOptions,\n });\n\n conn.on(\"infoMessage\", (info) => {\n logger.debug(\"info\", info.message);\n });\n\n conn.on(\"errorMessage\", (error) => {\n logger.error(\"errorMessage\", error.message);\n });\n\n conn.on(\"error\", (error) => {\n logger.error(\"error\", error.message);\n });\n\n conn.on(\"end\", () => {\n this.emit(\"close\");\n this._resetState();\n });\n\n await new Promise<void>((resolve, reject) => {\n conn.connect((err: Error | undefined) => {\n if (err != null) {\n reject(new SdError(err));\n return;\n }\n\n this._startTimeout();\n this.isConnected = true;\n this.isOnTransaction = false;\n resolve();\n });\n });\n\n this._conn = conn;\n }\n\n async close(): Promise<void> {\n this._stopTimeout();\n\n if (this._conn == null || !this.isConnected) {\n return;\n }\n\n const conn = this._conn;\n\n // \uC9C4\uD589 \uC911\uC778 \uC694\uCCAD \uCDE8\uC18C\n conn.cancel();\n await waitUntil(() => this._requests.length < 1, 30000, 100);\n\n // \uC5F0\uACB0 \uC885\uB8CC \uB300\uAE30\n await new Promise<void>((resolve) => {\n conn.on(\"end\", () => {\n waitUntil(() => this._conn == null, 30000, 100)\n .then(() => resolve())\n .catch(() => resolve());\n });\n conn.close();\n });\n }\n\n async beginTransaction(isolationLevel?: IsolationLevel): Promise<void> {\n this._assertConnected();\n this._startTimeout();\n\n const conn = this._conn!;\n\n await new Promise<void>((resolve, reject) => {\n conn.beginTransaction(\n (err) => {\n if (err != null) {\n reject(new SdError(err));\n return;\n }\n\n this.isOnTransaction = true;\n resolve();\n },\n \"\",\n this._tedious.ISOLATION_LEVEL[isolationLevel ?? this.config.defaultIsolationLevel ?? \"READ_UNCOMMITTED\"],\n );\n });\n }\n\n async commitTransaction(): Promise<void> {\n this._assertConnected();\n this._startTimeout();\n\n const conn = this._conn!;\n\n await new Promise<void>((resolve, reject) => {\n conn.commitTransaction((err) => {\n if (err != null) {\n reject(new SdError(err));\n return;\n }\n\n this.isOnTransaction = false;\n resolve();\n });\n });\n }\n\n async rollbackTransaction(): Promise<void> {\n this._assertConnected();\n this._startTimeout();\n\n const conn = this._conn!;\n\n await new Promise<void>((resolve, reject) => {\n conn.rollbackTransaction((err) => {\n if (err != null) {\n reject(new SdError(err));\n return;\n }\n\n this.isOnTransaction = false;\n resolve();\n });\n });\n }\n\n async execute(queries: string[]): Promise<unknown[][]> {\n const results: unknown[][] = [];\n for (const query of queries.filter((item) => !strIsNullOrEmpty(item))) {\n const resultItems = await this.executeParametrized(query);\n results.push(...resultItems);\n }\n\n return results;\n }\n\n async executeParametrized(query: string, params?: unknown[]): Promise<unknown[][]> {\n this._assertConnected();\n this._startTimeout();\n\n const conn = this._conn!;\n\n const results: unknown[][] = [];\n\n logger.debug(\"\uCFFC\uB9AC \uC2E4\uD589\", { queryLength: query.length, params });\n await new Promise<void>((resolve, reject) => {\n let rejected = false;\n const queryRequest = new this._tedious.Request(query, (err) => {\n if (err != null) {\n rejected = true;\n this._requests = this._requests.filter((r) => r !== queryRequest);\n\n const errRec = err as unknown as Record<string, unknown>;\n if (errRec[\"code\"] === \"ECANCEL\") {\n reject(new SdError(err, \"\uCFFC\uB9AC\uAC00 \uCDE8\uC18C\uB418\uC5C8\uC2B5\uB2C8\uB2E4.\"));\n } else {\n const lineNumber = errRec[\"lineNumber\"] as number | undefined;\n if (lineNumber != null && lineNumber > 0) {\n const splitQuery = query.split(\"\\n\");\n splitQuery[lineNumber - 1] = \"==> \" + splitQuery[lineNumber - 1];\n reject(new SdError(err, `\uCFFC\uB9AC \uC218\uD589\uC911 \uC624\uB958\uBC1C\uC0DD\\n-- query\\n${splitQuery.join(\"\\n\")}\\n--`));\n } else {\n reject(new SdError(err, `\uCFFC\uB9AC \uC218\uD589\uC911 \uC624\uB958\uBC1C\uC0DD\\n-- query\\n${query}\\n--`));\n }\n }\n }\n });\n\n queryRequest\n .on(\"done\", (_rowCount, _more, rst) => {\n this._startTimeout();\n\n if (rejected) {\n return;\n }\n\n results.push(this._parseRowsToRecords(rst));\n })\n .on(\"doneInProc\", (_rowCount, _more, rst) => {\n this._startTimeout();\n\n if (rejected) {\n return;\n }\n\n results.push(this._parseRowsToRecords(rst));\n })\n .on(\"error\", (err) => {\n this._startTimeout();\n\n if (rejected) {\n return;\n }\n\n rejected = true;\n this._requests = this._requests.filter((r) => r !== queryRequest);\n reject(new SdError(err, `\uCFFC\uB9AC \uC218\uD589\uC911 \uC624\uB958\uBC1C\uC0DD\\n-- query\\n${query}\\n--`));\n })\n .on(\"requestCompleted\", () => {\n this._startTimeout();\n\n if (rejected) {\n return;\n }\n\n this._requests = this._requests.filter((r) => r !== queryRequest);\n resolve();\n });\n\n this._requests.push(queryRequest);\n\n if (params != null) {\n for (let i = 0; i < params.length; i++) {\n const paramValue = params[i];\n const paramName = `p${i}`;\n const type = this._guessTediousType(paramValue);\n\n queryRequest.addParameter(paramName, type, paramValue);\n }\n\n conn.execSql(queryRequest);\n } else {\n conn.execSqlBatch(queryRequest);\n }\n });\n\n return results;\n }\n\n async bulkInsert(\n tableName: string,\n columnMetas: Record<string, ColumnMeta>,\n records: Record<string, unknown>[],\n ): Promise<void> {\n if (records.length === 0) return;\n\n this._assertConnected();\n this._startTimeout();\n\n const tediousColumnDefs = Object.entries(columnMetas).map(([name, meta]) =>\n this._convertColumnMetaToTediousBulkColumnDef(name, meta),\n );\n\n await new Promise<void>((resolve, reject) => {\n const bulkLoad = this._conn!.newBulkLoad(tableName, (err) => {\n if (err != null) {\n reject(\n new SdError(\n err,\n `Bulk Insert \uC624\uB958\uBC1C\uC0DD\\n${jsonStringify(tediousColumnDefs)}\\n-- data\\n${jsonStringify(records).substring(0, 10000)}...\\n--`,\n ),\n );\n return;\n }\n resolve();\n });\n\n const colNames = Object.keys(columnMetas);\n\n for (const tediousColumnDef of tediousColumnDefs) {\n bulkLoad.addColumn(tediousColumnDef.name, tediousColumnDef.type, tediousColumnDef.options);\n }\n\n // \uB808\uCF54\uB4DC\uB97C row \uBC30\uC5F4\uB85C \uBCC0\uD658 (\uCEEC\uB7FC \uC21C\uC11C \uC720\uC9C0, \uAC12 \uBCC0\uD658 \uD3EC\uD568)\n const rows = records.map((record) =>\n colNames.map((colName) => {\n const val = record[colName];\n if (val instanceof Uuid) return val.toString();\n // eslint-disable-next-line no-restricted-globals -- tedious \uB77C\uC774\uBE0C\uB7EC\uB9AC\uAC00 Buffer\uB97C \uC694\uAD6C\uD568\n if (val instanceof Uint8Array) return Buffer.from(val);\n if (val instanceof DateTime) return val.date;\n if (val instanceof DateOnly) return val.date;\n if (val instanceof Time) return val.toFormatString(\"HH:mm:ss\");\n return val;\n }),\n );\n\n this._conn!.execBulkLoad(bulkLoad, rows);\n });\n }\n\n // \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n // Private helpers\n // \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n private _assertConnected(): void {\n if (this._conn == null || !this.isConnected) {\n throw new SdError(DB_CONN_ERRORS.NOT_CONNECTED);\n }\n }\n\n private _parseRowsToRecords(\n rows: Array<Array<{ metadata: { colName: string }; value: unknown }>> | undefined,\n ): Record<string, unknown>[] {\n return (rows ?? []).map((item) => {\n const resultItem: Record<string, unknown> = {};\n for (const col of item) {\n resultItem[col.metadata.colName] = col.value;\n }\n return resultItem;\n });\n }\n\n private _resetState(): void {\n this.isConnected = false;\n this.isOnTransaction = false;\n this._conn = undefined;\n this._requests = [];\n }\n\n private _stopTimeout(): void {\n if (this._connTimeout != null) {\n clearTimeout(this._connTimeout);\n }\n }\n\n private _startTimeout(): void {\n this._stopTimeout();\n this._connTimeout = setTimeout(() => {\n this.close().catch((err) => {\n logger.error(\"close error\", err instanceof Error ? err.message : String(err));\n });\n }, this._timeout * 2);\n }\n\n private _convertColumnMetaToTediousBulkColumnDef(\n name: string,\n meta: ColumnMeta,\n ): {\n name: string;\n type: TediousDataType;\n options: TediousColumnOptions;\n } {\n const tediousDataType = this._convertDataTypeToTediousBulkColumnType(meta.dataType);\n return {\n name,\n type: tediousDataType.type,\n options: {\n length: tediousDataType.length,\n nullable: meta.nullable ?? false,\n precision: tediousDataType.precision,\n scale: tediousDataType.scale,\n },\n };\n }\n\n private _convertDataTypeToTediousBulkColumnType(dataType: DataType): {\n type: TediousDataType;\n length?: number;\n precision?: number;\n scale?: number;\n } {\n switch (dataType.type) {\n case \"int\":\n return { type: this._tedious.TYPES.Int };\n case \"bigint\":\n return { type: this._tedious.TYPES.BigInt };\n case \"float\":\n return { type: this._tedious.TYPES.Real };\n case \"double\":\n return { type: this._tedious.TYPES.Float };\n case \"decimal\":\n return {\n type: this._tedious.TYPES.Decimal,\n precision: dataType.precision,\n scale: dataType.scale,\n };\n case \"varchar\":\n return { type: this._tedious.TYPES.NVarChar, length: dataType.length };\n case \"char\":\n return { type: this._tedious.TYPES.NChar, length: dataType.length };\n case \"text\":\n return { type: this._tedious.TYPES.NText };\n case \"binary\":\n return { type: this._tedious.TYPES.VarBinary, length: Infinity };\n case \"boolean\":\n return { type: this._tedious.TYPES.Bit };\n case \"datetime\":\n return { type: this._tedious.TYPES.DateTime2 };\n case \"date\":\n return { type: this._tedious.TYPES.Date };\n case \"time\":\n return { type: this._tedious.TYPES.Time };\n case \"uuid\":\n return { type: this._tedious.TYPES.UniqueIdentifier };\n default:\n throw new SdError(`\uC9C0\uC6D0\uD558\uC9C0 \uC54A\uB294 DataType: ${JSON.stringify(dataType)}`);\n }\n }\n\n /**\n * \uAC12\uC758 \uD0C0\uC785\uC744 \uCD94\uB860\uD558\uC5EC Tedious \uB370\uC774\uD130 \uD0C0\uC785 \uBC18\uD658\n *\n * @param value - \uD0C0\uC785\uC744 \uCD94\uB860\uD560 \uAC12 (null/undefined \uC804\uB2EC \uC2DC \uC624\uB958 \uBC1C\uC0DD)\n * @throws null/undefined\uAC00 \uC804\uB2EC\uB418\uBA74 \uC624\uB958 \uBC1C\uC0DD\n */\n private _guessTediousType(value: unknown): TediousDataType {\n if (value == null) {\n throw new SdError(\"_guessTediousType: null/undefined \uAC12\uC740 \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.\");\n }\n if (typeof value === \"string\") {\n return this._tedious.TYPES.NVarChar;\n }\n if (typeof value === \"number\") {\n return Number.isInteger(value) ? this._tedious.TYPES.BigInt : this._tedious.TYPES.Decimal;\n }\n if (typeof value === \"boolean\") return this._tedious.TYPES.Bit;\n if (value instanceof DateTime) return this._tedious.TYPES.DateTime2;\n if (value instanceof DateOnly) return this._tedious.TYPES.Date;\n if (value instanceof Time) return this._tedious.TYPES.Time;\n if (value instanceof Uuid) return this._tedious.TYPES.UniqueIdentifier;\n if (value instanceof Uint8Array) return this._tedious.TYPES.VarBinary;\n\n throw new SdError(`\uC54C \uC218 \uC5C6\uB294 \uAC12 \uD0C0\uC785: ${typeof value}`);\n }\n}\n\ninterface TediousColumnOptions {\n length?: number;\n precision?: number;\n scale?: number;\n nullable?: boolean;\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"mappings": "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",
|
|
6
5
|
"names": []
|
|
7
6
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mysql-db-conn.d.ts","sourceRoot":"","sources":["../../src/connections/mysql-db-conn.ts"],"names":[],"mappings":"AAMA,OAAO,EAKL,YAAY,EAIb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,UAAU,EAAY,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAA2C,KAAK,MAAM,EAAE,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAIhH;;;;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;IAiBhE,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAMlC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAMpC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;IAShD,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;IAsC5E,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;IAuDhB;;OAEG;IACH,OAAO,CAAC,aAAa;IA4CrB,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,aAAa;CAQtB"}
|
|
@@ -2,7 +2,7 @@ import { randomUUID } from "crypto";
|
|
|
2
2
|
import fs from "fs";
|
|
3
3
|
import os from "os";
|
|
4
4
|
import path from "path";
|
|
5
|
-
import
|
|
5
|
+
import consola from "consola";
|
|
6
6
|
import {
|
|
7
7
|
bytesToHex,
|
|
8
8
|
DateOnly,
|
|
@@ -13,8 +13,8 @@ import {
|
|
|
13
13
|
Time,
|
|
14
14
|
Uuid
|
|
15
15
|
} from "@simplysm/core-common";
|
|
16
|
-
import { DB_CONN_DEFAULT_TIMEOUT, DB_CONN_ERRORS } from "../types/db-conn";
|
|
17
|
-
const logger =
|
|
16
|
+
import { DB_CONN_DEFAULT_TIMEOUT, DB_CONN_ERRORS } from "../types/db-conn.js";
|
|
17
|
+
const logger = consola.withTag("mysql-db-conn");
|
|
18
18
|
class MysqlDbConn extends EventEmitter {
|
|
19
19
|
constructor(_mysql2, config) {
|
|
20
20
|
super();
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/connections/mysql-db-conn.ts"],
|
|
4
|
-
"sourcesContent": ["import { randomUUID } from \"crypto\";\nimport fs from \"fs\";\nimport os from \"os\";\nimport path from \"path\";\nimport type { Connection } from \"mysql2/promise\";\nimport { createConsola } from \"consola\";\nimport {\n bytesToHex,\n DateOnly,\n DateTime,\n SdError,\n EventEmitter,\n strIsNullOrEmpty,\n Time,\n Uuid,\n} from \"@simplysm/core-common\";\nimport type { ColumnMeta, DataType, IsolationLevel } from \"@simplysm/orm-common\";\nimport { DB_CONN_DEFAULT_TIMEOUT, DB_CONN_ERRORS, type DbConn, type MysqlDbConnConfig } from \"../types/db-conn\";\n\nconst logger = createConsola().withTag(\"mysql-db-conn\");\n\n/**\n * MySQL \uB370\uC774\uD130\uBCA0\uC774\uC2A4 \uC5F0\uACB0 \uD074\uB798\uC2A4\n *\n * mysql2/promise \uB77C\uC774\uBE0C\uB7EC\uB9AC\uB97C \uC0AC\uC6A9\uD558\uC5EC MySQL \uC5F0\uACB0\uC744 \uAD00\uB9AC\uD569\uB2C8\uB2E4.\n */\nexport class MysqlDbConn extends EventEmitter<{ close: void }> implements DbConn {\n private static readonly _ROOT_USER = \"root\";\n private readonly _timeout = DB_CONN_DEFAULT_TIMEOUT;\n\n private _conn?: Connection;\n private _connTimeout?: ReturnType<typeof setTimeout>;\n\n isConnected = false;\n isOnTransaction = false;\n\n constructor(\n private readonly _mysql2: typeof import(\"mysql2/promise\"),\n readonly config: MysqlDbConnConfig,\n ) {\n super();\n }\n\n async connect(): Promise<void> {\n if (this.isConnected) {\n throw new SdError(DB_CONN_ERRORS.ALREADY_CONNECTED);\n }\n\n const conn = await this._mysql2.createConnection({\n host: this.config.host,\n port: this.config.port,\n user: this.config.username,\n password: this.config.password,\n // root \uC0AC\uC6A9\uC790\uB294 \uD2B9\uC815 database\uC5D0 \uBC14\uC778\uB529\uB418\uC9C0 \uC54A\uACE0 \uC5F0\uACB0\uD558\uC5EC\n // \uBAA8\uB4E0 \uB370\uC774\uD130\uBCA0\uC774\uC2A4\uC5D0 \uC811\uADFC\uD560 \uC218 \uC788\uB3C4\uB85D \uD568 (\uAD00\uB9AC \uC791\uC5C5\uC6A9)\n database: this.config.username === MysqlDbConn._ROOT_USER ? undefined : this.config.database,\n multipleStatements: true,\n charset: \"utf8mb4\",\n infileStreamFactory: (filePath: string) => fs.createReadStream(filePath), // LOAD DATA LOCAL INFILE \uC9C0\uC6D0\n } as Parameters<typeof this._mysql2.createConnection>[0]);\n\n conn.on(\"end\", () => {\n this.emit(\"close\");\n this._resetState();\n });\n\n conn.on(\"error\", (error) => {\n logger.error(\"DB \uC5F0\uACB0 \uC624\uB958\", error.message);\n });\n\n this._conn = conn;\n this._startTimeout();\n this.isConnected = true;\n }\n\n async close(): Promise<void> {\n this._stopTimeout();\n\n if (this._conn == null || !this.isConnected) {\n return;\n }\n\n await this._conn.end();\n\n this.emit(\"close\");\n this._resetState();\n }\n\n async beginTransaction(isolationLevel?: IsolationLevel): Promise<void> {\n const conn = this._assertConnected();\n\n const level = (isolationLevel ?? this.config.defaultIsolationLevel ?? \"READ_UNCOMMITTED\").replace(/_/g, \" \");\n\n // \uACA9\uB9AC \uC218\uC900\uC744 \uBA3C\uC800 \uC124\uC815 (\uB2E4\uC74C \uD2B8\uB79C\uC7AD\uC158\uC5D0 \uC801\uC6A9\uB428)\n await conn.query({\n sql: `SET SESSION TRANSACTION ISOLATION LEVEL ${level}`,\n timeout: this._timeout,\n });\n\n // \uADF8 \uB2E4\uC74C \uD2B8\uB79C\uC7AD\uC158 \uC2DC\uC791\n await conn.beginTransaction();\n\n this.isOnTransaction = true;\n }\n\n async commitTransaction(): Promise<void> {\n const conn = this._assertConnected();\n await conn.commit();\n this.isOnTransaction = false;\n }\n\n async rollbackTransaction(): Promise<void> {\n const conn = this._assertConnected();\n await conn.rollback();\n this.isOnTransaction = false;\n }\n\n async execute(queries: string[]): Promise<unknown[][]> {\n const results: unknown[][] = [];\n for (const query of queries.filter((item) => !strIsNullOrEmpty(item))) {\n const resultItems = await this.executeParametrized(query);\n results.push(...resultItems);\n }\n return results;\n }\n\n async executeParametrized(query: string, params?: unknown[]): Promise<unknown[][]> {\n const conn = this._assertConnected();\n\n logger.debug(\"\uCFFC\uB9AC \uC2E4\uD589\", { queryLength: query.length, params });\n\n try {\n const [queryResults] = await conn.query({\n sql: query,\n timeout: this._timeout,\n values: params,\n });\n\n this._startTimeout();\n\n // MySQL\uC740 INSERT/UPDATE/DELETE \uBB38\uC5D0 \uB300\uD574 ResultSetHeader\uB97C \uBC18\uD658\uD568\n // SELECT \uACB0\uACFC\uB9CC \uCD94\uCD9C\uD558\uAE30 \uC704\uD574 ResultSetHeader \uAC1D\uCCB4\uB97C \uD544\uD130\uB9C1\uD568\n // ResultSetHeader\uB294 affectedRows, fieldCount \uB4F1\uC758 \uD544\uB4DC\uB97C \uAC00\uC9C0\uACE0 \uC788\uC74C\n const result: unknown[] = [];\n if (queryResults instanceof Array) {\n for (const queryResult of queryResults.filter(\n (item: unknown) =>\n !(typeof item === \"object\" && item !== null && \"affectedRows\" in item && \"fieldCount\" in item),\n )) {\n result.push(queryResult);\n }\n }\n\n return [result];\n } catch (err) {\n this._startTimeout();\n const error = err as Error & { sql?: string };\n throw new SdError(\n error,\n \"\uCFFC\uB9AC \uC218\uD589\uC911 \uC624\uB958\uBC1C\uC0DD\" + (error.sql != null ? \"\\n-- query\\n\" + error.sql.trim() + \"\\n--\" : \"\"),\n );\n }\n }\n\n async bulkInsert(\n tableName: string,\n columnMetas: Record<string, ColumnMeta>,\n records: Record<string, unknown>[],\n ): Promise<void> {\n const conn = this._assertConnected();\n\n if (records.length === 0) return;\n\n const colNames = Object.keys(columnMetas);\n\n // \uC784\uC2DC CSV \uD30C\uC77C \uC0DD\uC131\n const tmpDir = os.tmpdir();\n const tmpFile = path.join(tmpDir, `mysql_bulk_${randomUUID()}.csv`);\n\n try {\n // CSV \uB370\uC774\uD130 \uC0DD\uC131\n const csvLines: string[] = [];\n for (const record of records) {\n const row = colNames.map((colName) => this._escapeForCsv(record[colName], columnMetas[colName].dataType));\n csvLines.push(row.join(\"\\t\"));\n }\n const csvContent = csvLines.join(\"\\n\");\n\n // \uD30C\uC77C \uC4F0\uAE30\n await fs.promises.writeFile(tmpFile, csvContent, \"utf8\");\n\n // UUID/binary \uCEEC\uB7FC\uC740 \uC784\uC2DC \uBCC0\uC218\uB85C \uC77D\uACE0 SET \uC808\uC5D0\uC11C UNHEX() \uBCC0\uD658\n const binaryColNames = colNames.filter((c) => {\n const dt = columnMetas[c].dataType.type;\n return dt === \"uuid\" || dt === \"binary\";\n });\n const normalCols = colNames.map((c) => {\n if (binaryColNames.includes(c)) return `@_${c}`;\n return `\\`${c}\\``;\n });\n const setClauses = binaryColNames.map((c) => `\\`${c}\\` = UNHEX(@_${c})`);\n\n // LOAD DATA LOCAL INFILE \uC2E4\uD589\n let query = `LOAD DATA LOCAL INFILE ? INTO TABLE ${tableName} FIELDS TERMINATED BY '\\\\t' LINES TERMINATED BY '\\\\n' (${normalCols.join(\", \")})`;\n if (setClauses.length > 0) {\n query += ` SET ${setClauses.join(\", \")}`;\n }\n\n await conn.query({ sql: query, timeout: this._timeout, values: [tmpFile] });\n } finally {\n // \uC784\uC2DC \uD30C\uC77C \uC0AD\uC81C\n try {\n await fs.promises.unlink(tmpFile);\n } catch {\n // \uC0AD\uC81C \uC2E4\uD328 \uBB34\uC2DC\n }\n }\n }\n\n // \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n // Private helpers\n // \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n /**\n * MySQL LOAD DATA INFILE\uC6A9 \uAC12 \uC774\uC2A4\uCF00\uC774\uD504\n */\n private _escapeForCsv(value: unknown, dataType: DataType): string {\n if (value == null) {\n return \"\\\\N\"; // MySQL NULL \uD45C\uD604\n }\n\n switch (dataType.type) {\n case \"int\":\n case \"bigint\":\n case \"float\":\n case \"double\":\n case \"decimal\":\n return String(value);\n\n case \"boolean\":\n return (value as boolean) ? \"1\" : \"0\";\n\n case \"varchar\":\n case \"char\":\n case \"text\": {\n const str = value as string;\n // \uD0ED, \uC904\uBC14\uAFC8, \uBC31\uC2AC\uB798\uC2DC \uC774\uC2A4\uCF00\uC774\uD504\n return str.replace(/\\\\/g, \"\\\\\\\\\").replace(/\\t/g, \"\\\\t\").replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\");\n }\n\n case \"datetime\":\n return (value as DateTime).toFormatString(\"yyyy-MM-dd HH:mm:ss.fff\");\n\n case \"date\":\n return (value as DateOnly).toFormatString(\"yyyy-MM-dd\");\n\n case \"time\":\n return (value as Time).toFormatString(\"HH:mm:ss\");\n\n case \"uuid\":\n return (value as Uuid).toString().replace(/-/g, \"\"); // BINARY(16) \uC800\uC7A5\uC6A9 hex\n\n case \"binary\":\n return bytesToHex(value as Uint8Array);\n\n default:\n throw new SdError(`\uC9C0\uC6D0\uD558\uC9C0 \uC54A\uB294 DataType: ${JSON.stringify(dataType)}`);\n }\n }\n\n private _assertConnected(): Connection {\n if (this._conn == null || !this.isConnected) {\n throw new SdError(DB_CONN_ERRORS.NOT_CONNECTED);\n }\n this._startTimeout();\n return this._conn;\n }\n\n private _resetState(): void {\n this.isConnected = false;\n this.isOnTransaction = false;\n this._conn = undefined;\n }\n\n private _stopTimeout(): void {\n if (this._connTimeout != null) {\n clearTimeout(this._connTimeout);\n }\n }\n\n private _startTimeout(): void {\n this._stopTimeout();\n this._connTimeout = setTimeout(() => {\n this.close().catch((err) => {\n logger.error(\"close error\", err instanceof Error ? err.message : String(err));\n });\n }, this._timeout * 2);\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"mappings": "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",
|
|
6
5
|
"names": []
|
|
7
6
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgresql-db-conn.d.ts","sourceRoot":"","sources":["../../src/connections/postgresql-db-conn.ts"],"names":[],"mappings":"AAEA,OAAO,EAKL,YAAY,EAIb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,UAAU,EAAY,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAA2C,KAAK,MAAM,EAAE,KAAK,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAErH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAIvD;;;;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,WAAW;IAC5B,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,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,eAAe,EAC3D,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;IAWhE,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAMlC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAMpC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;IAShD,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;IAmB5E,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;IAoChB;;OAEG;IACH,OAAO,CAAC,aAAa;IA+CrB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,aAAa;CAQtB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Readable } from "stream";
|
|
2
|
-
import
|
|
2
|
+
import consola from "consola";
|
|
3
3
|
import {
|
|
4
4
|
bytesToHex,
|
|
5
5
|
DateOnly,
|
|
@@ -10,8 +10,8 @@ import {
|
|
|
10
10
|
Time,
|
|
11
11
|
Uuid
|
|
12
12
|
} from "@simplysm/core-common";
|
|
13
|
-
import { DB_CONN_DEFAULT_TIMEOUT, DB_CONN_ERRORS } from "../types/db-conn";
|
|
14
|
-
const logger =
|
|
13
|
+
import { DB_CONN_DEFAULT_TIMEOUT, DB_CONN_ERRORS } from "../types/db-conn.js";
|
|
14
|
+
const logger = consola.withTag("postgresql-db-conn");
|
|
15
15
|
class PostgresqlDbConn extends EventEmitter {
|
|
16
16
|
constructor(_pg, _pgCopyFrom, config) {
|
|
17
17
|
super();
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/connections/postgresql-db-conn.ts"],
|
|
4
|
-
"
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"mappings": "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",
|
|
6
5
|
"names": []
|
|
7
6
|
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { DbConn, DbConnConfig } from "./types/db-conn";
|
|
2
|
+
/**
|
|
3
|
+
* DB 연결 생성
|
|
4
|
+
*
|
|
5
|
+
* 커넥션 풀에서 연결을 획득하여 반환한다.
|
|
6
|
+
* 풀이 없는 경우 새로 생성한다.
|
|
7
|
+
*
|
|
8
|
+
* @param config - 데이터베이스 연결 설정
|
|
9
|
+
* @returns 풀링된 DB 연결 객체
|
|
10
|
+
*/
|
|
11
|
+
export declare function createDbConn(config: DbConnConfig): Promise<DbConn>;
|
|
12
|
+
//# sourceMappingURL=create-db-conn.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-db-conn.d.ts","sourceRoot":"","sources":["../src/create-db-conn.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAwB5D;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAMlE"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { createPool } from "generic-pool";
|
|
2
|
+
import { PooledDbConn } from "./pooled-db-conn.js";
|
|
3
|
+
import { MysqlDbConn } from "./connections/mysql-db-conn.js";
|
|
4
|
+
import { MssqlDbConn } from "./connections/mssql-db-conn.js";
|
|
5
|
+
import { PostgresqlDbConn } from "./connections/postgresql-db-conn.js";
|
|
6
|
+
const poolMap = /* @__PURE__ */ new Map();
|
|
7
|
+
const modules = {};
|
|
8
|
+
function createDbConn(config) {
|
|
9
|
+
const pool = getOrCreatePool(config);
|
|
10
|
+
return Promise.resolve(new PooledDbConn(pool, config));
|
|
11
|
+
}
|
|
12
|
+
function getOrCreatePool(config) {
|
|
13
|
+
const configKey = JSON.stringify(
|
|
14
|
+
config,
|
|
15
|
+
(_, value) => value != null && typeof value === "object" && !Array.isArray(value) ? Object.fromEntries(Object.entries(value).sort(([a], [b]) => a.localeCompare(b))) : value
|
|
16
|
+
);
|
|
17
|
+
if (!poolMap.has(configKey)) {
|
|
18
|
+
const pool = createPool(
|
|
19
|
+
{
|
|
20
|
+
create: async () => {
|
|
21
|
+
const conn = await createRawConnection(config);
|
|
22
|
+
await conn.connect();
|
|
23
|
+
return conn;
|
|
24
|
+
},
|
|
25
|
+
destroy: async (conn) => {
|
|
26
|
+
await conn.close();
|
|
27
|
+
},
|
|
28
|
+
validate: (conn) => {
|
|
29
|
+
return Promise.resolve(conn.isConnected);
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
min: config.pool?.min ?? 1,
|
|
34
|
+
max: config.pool?.max ?? 10,
|
|
35
|
+
acquireTimeoutMillis: config.pool?.acquireTimeoutMillis ?? 3e4,
|
|
36
|
+
idleTimeoutMillis: config.pool?.idleTimeoutMillis ?? 3e4,
|
|
37
|
+
testOnBorrow: true
|
|
38
|
+
// [중요] 빌려줄 때 validate 실행 여부
|
|
39
|
+
}
|
|
40
|
+
);
|
|
41
|
+
poolMap.set(configKey, pool);
|
|
42
|
+
}
|
|
43
|
+
return poolMap.get(configKey);
|
|
44
|
+
}
|
|
45
|
+
async function createRawConnection(config) {
|
|
46
|
+
if (config.dialect === "mysql") {
|
|
47
|
+
const mysql = await ensureModule("mysql");
|
|
48
|
+
return new MysqlDbConn(mysql, config);
|
|
49
|
+
} else if (config.dialect === "postgresql") {
|
|
50
|
+
const pg = await ensureModule("pg");
|
|
51
|
+
const pgCopyStreams = await ensureModule("pgCopyStreams");
|
|
52
|
+
return new PostgresqlDbConn(pg, pgCopyStreams.from, config);
|
|
53
|
+
} else {
|
|
54
|
+
const tedious = await ensureModule("tedious");
|
|
55
|
+
return new MssqlDbConn(tedious, config);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
async function ensureModule(name) {
|
|
59
|
+
if (modules[name] == null) {
|
|
60
|
+
if (name === "mysql") {
|
|
61
|
+
modules.mysql = await import("mysql2/promise");
|
|
62
|
+
} else if (name === "pg") {
|
|
63
|
+
modules.pg = await import("pg");
|
|
64
|
+
} else if (name === "pgCopyStreams") {
|
|
65
|
+
modules.pgCopyStreams = await import("pg-copy-streams");
|
|
66
|
+
} else {
|
|
67
|
+
modules.tedious = await import("tedious");
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return modules[name];
|
|
71
|
+
}
|
|
72
|
+
export {
|
|
73
|
+
createDbConn
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=create-db-conn.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/create-db-conn.ts"],
|
|
4
|
+
"mappings": "AACA,SAAS,kBAAkB;AAE3B,SAAS,oBAAoB;AAC7B,SAAS,mBAAmB;AAC5B,SAAS,mBAAmB;AAC5B,SAAS,wBAAwB;AAUjC,MAAM,UAAU,oBAAI,IAA0B;AAG9C,MAAM,UAKF,CAAC;AAWE,SAAS,aAAa,QAAuC;AAElE,QAAM,OAAO,gBAAgB,MAAM;AAGnC,SAAO,QAAQ,QAAQ,IAAI,aAAa,MAAM,MAAM,CAAC;AACvD;AAEA,SAAS,gBAAgB,QAAoC;AAE3D,QAAM,YAAY,KAAK;AAAA,IAAU;AAAA,IAAQ,CAAC,GAAG,UAC3C,SAAS,QAAQ,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK,IAC9D,OAAO,YAAY,OAAO,QAAQ,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,IAC/E;AAAA,EACN;AAEA,MAAI,CAAC,QAAQ,IAAI,SAAS,GAAG;AAC3B,UAAM,OAAO;AAAA,MACX;AAAA,QACE,QAAQ,YAAY;AAClB,gBAAM,OAAO,MAAM,oBAAoB,MAAM;AAC7C,gBAAM,KAAK,QAAQ;AACnB,iBAAO;AAAA,QACT;AAAA,QACA,SAAS,OAAO,SAAS;AACvB,gBAAM,KAAK,MAAM;AAAA,QACnB;AAAA,QACA,UAAU,CAAC,SAAS;AAElB,iBAAO,QAAQ,QAAQ,KAAK,WAAW;AAAA,QACzC;AAAA,MACF;AAAA,MACA;AAAA,QACE,KAAK,OAAO,MAAM,OAAO;AAAA,QACzB,KAAK,OAAO,MAAM,OAAO;AAAA,QACzB,sBAAsB,OAAO,MAAM,wBAAwB;AAAA,QAC3D,mBAAmB,OAAO,MAAM,qBAAqB;AAAA,QACrD,cAAc;AAAA;AAAA,MAChB;AAAA,IACF;AAEA,YAAQ,IAAI,WAAW,IAAI;AAAA,EAC7B;AAEA,SAAO,QAAQ,IAAI,SAAS;AAC9B;AAEA,eAAe,oBAAoB,QAAuC;AACxE,MAAI,OAAO,YAAY,SAAS;AAC9B,UAAM,QAAQ,MAAM,aAAa,OAAO;AACxC,WAAO,IAAI,YAAY,OAAO,MAAM;AAAA,EACtC,WAAW,OAAO,YAAY,cAAc;AAC1C,UAAM,KAAK,MAAM,aAAa,IAAI;AAClC,UAAM,gBAAgB,MAAM,aAAa,eAAe;AACxD,WAAO,IAAI,iBAAiB,IAAI,cAAc,MAAM,MAAM;AAAA,EAC5D,OAAO;AAEL,UAAM,UAAU,MAAM,aAAa,SAAS;AAC5C,WAAO,IAAI,YAAY,SAAS,MAAM;AAAA,EACxC;AACF;AAEA,eAAe,aAA6C,MAAoD;AAC9G,MAAI,QAAQ,IAAI,KAAK,MAAM;AACzB,QAAI,SAAS,SAAS;AACpB,cAAQ,QAAQ,MAAM,OAAO,gBAAgB;AAAA,IAC/C,WAAW,SAAS,MAAM;AACxB,cAAQ,KAAK,MAAM,OAAO,IAAI;AAAA,IAChC,WAAW,SAAS,iBAAiB;AACnC,cAAQ,gBAAgB,MAAM,OAAO,iBAAiB;AAAA,IACxD,OAAO;AACL,cAAQ,UAAU,MAAM,OAAO,SAAS;AAAA,IAC1C;AAAA,EACF;AACA,SAAO,QAAQ,IAAI;AACrB;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import type { Type } from "@simplysm/core-common";
|
|
1
|
+
import { type DbContextDef, type DbContextInstance, type IsolationLevel } from "@simplysm/orm-common";
|
|
3
2
|
import type { DbConnConfig } from "./types/db-conn";
|
|
4
3
|
/**
|
|
5
|
-
*
|
|
4
|
+
* Orm 옵션
|
|
6
5
|
*
|
|
7
6
|
* DbConnConfig보다 우선 적용되는 DbContext 옵션
|
|
8
7
|
*/
|
|
9
|
-
export interface
|
|
8
|
+
export interface OrmOptions {
|
|
10
9
|
/**
|
|
11
10
|
* 데이터베이스 이름 (DbConnConfig의 database 대신 사용)
|
|
12
11
|
*/
|
|
@@ -17,18 +16,43 @@ export interface SdOrmOptions {
|
|
|
17
16
|
schema?: string;
|
|
18
17
|
}
|
|
19
18
|
/**
|
|
20
|
-
*
|
|
19
|
+
* Orm 인스턴스 타입
|
|
21
20
|
*
|
|
22
|
-
*
|
|
23
|
-
|
|
21
|
+
* createOrm에서 반환되는 객체의 타입
|
|
22
|
+
*/
|
|
23
|
+
export interface Orm<TDef extends DbContextDef<any, any, any>> {
|
|
24
|
+
readonly dbContextDef: TDef;
|
|
25
|
+
readonly config: DbConnConfig;
|
|
26
|
+
readonly options?: OrmOptions;
|
|
27
|
+
/**
|
|
28
|
+
* 트랜잭션 내에서 콜백 실행
|
|
29
|
+
*
|
|
30
|
+
* @param callback - DB 연결 후 실행할 콜백
|
|
31
|
+
* @param isolationLevel - 트랜잭션 격리 수준
|
|
32
|
+
* @returns 콜백 결과
|
|
33
|
+
*/
|
|
34
|
+
connect<R>(callback: (conn: DbContextInstance<TDef>) => Promise<R>, isolationLevel?: IsolationLevel): Promise<R>;
|
|
35
|
+
/**
|
|
36
|
+
* 트랜잭션 없이 콜백 실행
|
|
37
|
+
*
|
|
38
|
+
* @param callback - DB 연결 후 실행할 콜백
|
|
39
|
+
* @returns 콜백 결과
|
|
40
|
+
*/
|
|
41
|
+
connectWithoutTransaction<R>(callback: (conn: DbContextInstance<TDef>) => Promise<R>): Promise<R>;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Node.js ORM 팩토리 함수
|
|
45
|
+
*
|
|
46
|
+
* DbContext와 DB 연결을 관리하는 인스턴스를 생성합니다.
|
|
47
|
+
* DbContext 정의와 연결 설정을 받아 트랜잭션을 관리합니다.
|
|
24
48
|
*
|
|
25
49
|
* @example
|
|
26
50
|
* ```typescript
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
* }
|
|
51
|
+
* const MyDb = defineDbContext({
|
|
52
|
+
* user: (db) => queryable(db, User),
|
|
53
|
+
* });
|
|
30
54
|
*
|
|
31
|
-
* const orm =
|
|
55
|
+
* const orm = createOrm(MyDb, {
|
|
32
56
|
* dialect: "mysql",
|
|
33
57
|
* host: "localhost",
|
|
34
58
|
* port: 3306,
|
|
@@ -50,29 +74,5 @@ export interface SdOrmOptions {
|
|
|
50
74
|
* });
|
|
51
75
|
* ```
|
|
52
76
|
*/
|
|
53
|
-
export declare
|
|
54
|
-
|
|
55
|
-
readonly config: DbConnConfig;
|
|
56
|
-
readonly options?: SdOrmOptions | undefined;
|
|
57
|
-
constructor(dbContextType: Type<T>, config: DbConnConfig, options?: SdOrmOptions | undefined);
|
|
58
|
-
/**
|
|
59
|
-
* 트랜잭션 내에서 콜백 실행
|
|
60
|
-
*
|
|
61
|
-
* @param callback - DB 연결 후 실행할 콜백
|
|
62
|
-
* @param isolationLevel - 트랜잭션 격리 수준
|
|
63
|
-
* @returns 콜백 결과
|
|
64
|
-
*/
|
|
65
|
-
connect<R>(callback: (conn: T) => Promise<R>, isolationLevel?: IsolationLevel): Promise<R>;
|
|
66
|
-
/**
|
|
67
|
-
* 트랜잭션 없이 콜백 실행
|
|
68
|
-
*
|
|
69
|
-
* @param callback - DB 연결 후 실행할 콜백
|
|
70
|
-
* @returns 콜백 결과
|
|
71
|
-
*/
|
|
72
|
-
connectWithoutTransaction<R>(callback: (conn: T) => Promise<R>): Promise<R>;
|
|
73
|
-
/**
|
|
74
|
-
* DbContext 인스턴스 생성
|
|
75
|
-
*/
|
|
76
|
-
private _createDbContext;
|
|
77
|
-
}
|
|
78
|
-
//# sourceMappingURL=sd-orm.d.ts.map
|
|
77
|
+
export declare function createOrm<TDef extends DbContextDef<any, any, any>>(dbContextDef: TDef, config: DbConnConfig, options?: OrmOptions): Orm<TDef>;
|
|
78
|
+
//# sourceMappingURL=create-orm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-orm.d.ts","sourceRoot":"","sources":["../src/create-orm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACvH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAGpD;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,GAAG,CAAC,IAAI,SAAS,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAC3D,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC;IAE9B;;;;;;OAMG;IACH,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAEjH;;;;;OAKG;IACH,yBAAyB,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACnG;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,SAAS,CAAC,IAAI,SAAS,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAChE,YAAY,EAAE,IAAI,EAClB,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,UAAU,GACnB,GAAG,CAAC,IAAI,CAAC,CA8BX"}
|