@simplysm/orm-node 13.0.99 → 14.0.1
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/dist/connections/mssql-db-conn.d.ts +5 -5
- package/dist/connections/mssql-db-conn.js +356 -369
- package/dist/connections/mssql-db-conn.js.map +1 -6
- package/dist/connections/mysql-db-conn.d.ts +3 -3
- package/dist/connections/mysql-db-conn.js +227 -215
- package/dist/connections/mysql-db-conn.js.map +1 -6
- package/dist/connections/postgresql-db-conn.d.ts +3 -3
- package/dist/connections/postgresql-db-conn.js +185 -183
- package/dist/connections/postgresql-db-conn.js.map +1 -6
- package/dist/create-db-conn.d.ts +3 -3
- package/dist/create-db-conn.js +43 -27
- package/dist/create-db-conn.js.map +1 -6
- package/dist/create-orm.d.ts +18 -18
- package/dist/create-orm.js +62 -31
- package/dist/create-orm.js.map +1 -6
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -6
- package/dist/node-db-context-executor.d.ts +28 -28
- package/dist/node-db-context-executor.js +125 -117
- package/dist/node-db-context-executor.js.map +1 -6
- package/dist/types/db-conn.d.ts +37 -37
- package/dist/types/db-conn.js +26 -17
- package/dist/types/db-conn.js.map +1 -6
- package/package.json +9 -9
- package/src/connections/mssql-db-conn.ts +22 -22
- package/src/connections/mysql-db-conn.ts +27 -27
- package/src/connections/postgresql-db-conn.ts +16 -16
- package/src/create-db-conn.ts +7 -7
- package/src/create-orm.ts +21 -21
- package/src/index.ts +3 -3
- package/src/node-db-context-executor.ts +32 -32
- package/src/types/db-conn.ts +40 -40
- package/README.md +0 -227
|
@@ -1,197 +1,199 @@
|
|
|
1
1
|
import { Readable } from "stream";
|
|
2
2
|
import consola from "consola";
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
str,
|
|
6
|
-
DateOnly,
|
|
7
|
-
DateTime,
|
|
8
|
-
SdError,
|
|
9
|
-
EventEmitter,
|
|
10
|
-
Time,
|
|
11
|
-
Uuid
|
|
12
|
-
} from "@simplysm/core-common";
|
|
13
|
-
import {
|
|
14
|
-
DB_CONN_CONNECT_TIMEOUT,
|
|
15
|
-
DB_CONN_DEFAULT_TIMEOUT,
|
|
16
|
-
DB_CONN_ERRORS
|
|
17
|
-
} from "../types/db-conn.js";
|
|
3
|
+
import { bytes, str, DateOnly, DateTime, SdError, EventEmitter, Time, Uuid, } from "@simplysm/core-common";
|
|
4
|
+
import { DB_CONN_CONNECT_TIMEOUT, DB_CONN_DEFAULT_TIMEOUT, DB_CONN_ERRORS, } from "../types/db-conn.js";
|
|
18
5
|
const logger = consola.withTag("postgresql-db-conn");
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
6
|
+
/**
|
|
7
|
+
* PostgreSQL 데이터베이스 연결 클래스
|
|
8
|
+
*
|
|
9
|
+
* pg 라이브러리를 사용하여 PostgreSQL 연결을 관리한다.
|
|
10
|
+
*/
|
|
11
|
+
export class PostgresqlDbConn extends EventEmitter {
|
|
12
|
+
_pg;
|
|
13
|
+
_pgCopyStreams;
|
|
14
|
+
config;
|
|
15
|
+
_timeout = DB_CONN_DEFAULT_TIMEOUT;
|
|
16
|
+
_client;
|
|
17
|
+
_connTimeout;
|
|
18
|
+
isConnected = false;
|
|
19
|
+
isInTransaction = false;
|
|
20
|
+
constructor(_pg, _pgCopyStreams, config) {
|
|
21
|
+
super();
|
|
22
|
+
this._pg = _pg;
|
|
23
|
+
this._pgCopyStreams = _pgCopyStreams;
|
|
24
|
+
this.config = config;
|
|
34
25
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
26
|
+
async connect() {
|
|
27
|
+
if (this.isConnected) {
|
|
28
|
+
throw new SdError(DB_CONN_ERRORS.ALREADY_CONNECTED);
|
|
29
|
+
}
|
|
30
|
+
const client = new this._pg.Client({
|
|
31
|
+
host: this.config.host,
|
|
32
|
+
port: this.config.port ?? 5432,
|
|
33
|
+
user: this.config.username,
|
|
34
|
+
password: this.config.password,
|
|
35
|
+
database: this.config.database,
|
|
36
|
+
connectionTimeoutMillis: DB_CONN_CONNECT_TIMEOUT,
|
|
37
|
+
query_timeout: this._timeout,
|
|
38
|
+
});
|
|
39
|
+
client.on("end", () => {
|
|
40
|
+
this.emit("close");
|
|
41
|
+
this._resetState();
|
|
42
|
+
});
|
|
43
|
+
client.on("error", (error) => {
|
|
44
|
+
logger.error("DB 연결 오류", error.message);
|
|
45
|
+
});
|
|
46
|
+
await client.connect();
|
|
47
|
+
this._client = client;
|
|
48
|
+
this._startTimeout();
|
|
49
|
+
this.isConnected = true;
|
|
50
|
+
}
|
|
51
|
+
async close() {
|
|
52
|
+
this._stopTimeout();
|
|
53
|
+
if (this._client == null || !this.isConnected) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
await this._client.end();
|
|
57
|
+
this.emit("close");
|
|
58
|
+
this._resetState();
|
|
59
|
+
}
|
|
60
|
+
async beginTransaction(isolationLevel) {
|
|
61
|
+
this._assertConnected();
|
|
62
|
+
const level = (isolationLevel ??
|
|
63
|
+
this.config.defaultIsolationLevel ??
|
|
64
|
+
"READ_UNCOMMITTED").replace(/_/g, " ");
|
|
65
|
+
await this._client.query("BEGIN");
|
|
66
|
+
await this._client.query(`SET TRANSACTION ISOLATION LEVEL ${level}`);
|
|
67
|
+
this.isInTransaction = true;
|
|
60
68
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
this._assertConnected();
|
|
79
|
-
await this._client.query("ROLLBACK");
|
|
80
|
-
this.isInTransaction = false;
|
|
81
|
-
}
|
|
82
|
-
async execute(queries) {
|
|
83
|
-
const results = [];
|
|
84
|
-
for (const query of queries.filter((item) => !str.isNullOrEmpty(item))) {
|
|
85
|
-
const resultItems = await this.executeParametrized(query);
|
|
86
|
-
results.push(...resultItems);
|
|
69
|
+
async commitTransaction() {
|
|
70
|
+
this._assertConnected();
|
|
71
|
+
await this._client.query("COMMIT");
|
|
72
|
+
this.isInTransaction = false;
|
|
73
|
+
}
|
|
74
|
+
async rollbackTransaction() {
|
|
75
|
+
this._assertConnected();
|
|
76
|
+
await this._client.query("ROLLBACK");
|
|
77
|
+
this.isInTransaction = false;
|
|
78
|
+
}
|
|
79
|
+
async execute(queries) {
|
|
80
|
+
const results = [];
|
|
81
|
+
for (const query of queries.filter((item) => !str.isNullOrEmpty(item))) {
|
|
82
|
+
const resultItems = await this.executeParametrized(query);
|
|
83
|
+
results.push(...resultItems);
|
|
84
|
+
}
|
|
85
|
+
return results;
|
|
87
86
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
87
|
+
async executeParametrized(query, params) {
|
|
88
|
+
this._assertConnected();
|
|
89
|
+
logger.debug("쿼리 실행", { queryLength: query.length, params });
|
|
90
|
+
try {
|
|
91
|
+
const result = await this._client.query(query, params);
|
|
92
|
+
this._startTimeout();
|
|
93
|
+
// PostgreSQL은 단일 결과 집합을 반환한다
|
|
94
|
+
return [result.rows];
|
|
95
|
+
}
|
|
96
|
+
catch (err) {
|
|
97
|
+
this._startTimeout();
|
|
98
|
+
const error = err instanceof Error ? err : new Error(String(err));
|
|
99
|
+
throw new SdError(error, "쿼리 실행 오류\n-- query\n" + query.trim() + "\n--");
|
|
100
|
+
}
|
|
101
101
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
(
|
|
114
|
-
|
|
115
|
-
|
|
102
|
+
async bulkInsert(tableName, columnMetas, records) {
|
|
103
|
+
this._assertConnected();
|
|
104
|
+
if (records.length === 0)
|
|
105
|
+
return;
|
|
106
|
+
const colNames = Object.keys(columnMetas);
|
|
107
|
+
const wrappedCols = colNames.map((c) => `"${c}"`).join(", ");
|
|
108
|
+
// COPY FROM STDIN 스트림 생성
|
|
109
|
+
const copyQuery = `COPY ${tableName} (${wrappedCols}) FROM STDIN WITH (FORMAT csv, NULL '\\N')`;
|
|
110
|
+
const stream = this._client.query(this._pgCopyStreams.from(copyQuery));
|
|
111
|
+
// CSV 데이터 생성
|
|
112
|
+
const csvLines = [];
|
|
113
|
+
for (const record of records) {
|
|
114
|
+
const row = colNames.map((colName) => this._escapeForCsv(record[colName], columnMetas[colName].dataType));
|
|
115
|
+
csvLines.push(row.join(","));
|
|
116
|
+
}
|
|
117
|
+
const csvContent = csvLines.join("\n") + "\n";
|
|
118
|
+
// 스트림을 통해 데이터 전송
|
|
119
|
+
await new Promise((resolve, reject) => {
|
|
120
|
+
const readable = Readable.from([csvContent]);
|
|
121
|
+
readable.on("error", reject);
|
|
122
|
+
stream.on("error", reject);
|
|
123
|
+
stream.on("finish", resolve);
|
|
124
|
+
readable.pipe(stream);
|
|
125
|
+
});
|
|
116
126
|
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
127
|
+
// ─────────────────────────────────────────────
|
|
128
|
+
// 내부 헬퍼
|
|
129
|
+
// ─────────────────────────────────────────────
|
|
130
|
+
/**
|
|
131
|
+
* PostgreSQL COPY CSV용 값 이스케이프
|
|
132
|
+
*/
|
|
133
|
+
_escapeForCsv(value, dataType) {
|
|
134
|
+
if (value == null) {
|
|
135
|
+
return "\\N"; // NULL 표현
|
|
136
|
+
}
|
|
137
|
+
switch (dataType.type) {
|
|
138
|
+
case "int":
|
|
139
|
+
case "bigint":
|
|
140
|
+
case "float":
|
|
141
|
+
case "double":
|
|
142
|
+
case "decimal":
|
|
143
|
+
return String(value);
|
|
144
|
+
case "boolean":
|
|
145
|
+
return value ? "true" : "false";
|
|
146
|
+
case "varchar":
|
|
147
|
+
case "char":
|
|
148
|
+
case "text": {
|
|
149
|
+
const strVal = value;
|
|
150
|
+
// CSV 형식: 큰따옴표로 감싸고, 내부 큰따옴표는 이중 큰따옴표로 이스케이프
|
|
151
|
+
if (strVal.includes('"') ||
|
|
152
|
+
strVal.includes(",") ||
|
|
153
|
+
strVal.includes("\n") ||
|
|
154
|
+
strVal.includes("\r") ||
|
|
155
|
+
strVal.includes("\\")) {
|
|
156
|
+
return '"' + strVal.replace(/"/g, '""') + '"';
|
|
157
|
+
}
|
|
158
|
+
return strVal;
|
|
159
|
+
}
|
|
160
|
+
case "datetime":
|
|
161
|
+
return value.toFormatString("yyyy-MM-dd HH:mm:ss.fff");
|
|
162
|
+
case "date":
|
|
163
|
+
return value.toFormatString("yyyy-MM-dd");
|
|
164
|
+
case "time":
|
|
165
|
+
return value.toFormatString("HH:mm:ss");
|
|
166
|
+
case "uuid":
|
|
167
|
+
return value.toString();
|
|
168
|
+
case "binary":
|
|
169
|
+
return '"\\x' + bytes.toHex(value) + '"'; // PostgreSQL bytea hex 형식 (CSV 큰따옴표로 감쌈)
|
|
170
|
+
default:
|
|
171
|
+
throw new SdError(`지원하지 않는 DataType: ${JSON.stringify(dataType)}`);
|
|
172
|
+
}
|
|
135
173
|
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
case "float":
|
|
140
|
-
case "double":
|
|
141
|
-
case "decimal":
|
|
142
|
-
return String(value);
|
|
143
|
-
case "boolean":
|
|
144
|
-
return value ? "true" : "false";
|
|
145
|
-
case "varchar":
|
|
146
|
-
case "char":
|
|
147
|
-
case "text": {
|
|
148
|
-
const strVal = value;
|
|
149
|
-
if (strVal.includes('"') || strVal.includes(",") || strVal.includes("\n") || strVal.includes("\r") || strVal.includes("\\")) {
|
|
150
|
-
return '"' + strVal.replace(/"/g, '""') + '"';
|
|
174
|
+
_assertConnected() {
|
|
175
|
+
if (this._client == null || !this.isConnected) {
|
|
176
|
+
throw new SdError(DB_CONN_ERRORS.NOT_CONNECTED);
|
|
151
177
|
}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
case "time":
|
|
159
|
-
return value.toFormatString("HH:mm:ss");
|
|
160
|
-
case "uuid":
|
|
161
|
-
return value.toString();
|
|
162
|
-
case "binary":
|
|
163
|
-
return '"\\x' + bytes.toHex(value) + '"';
|
|
164
|
-
// PostgreSQL bytea hex format (wrapped in CSV double quotes)
|
|
165
|
-
default:
|
|
166
|
-
throw new SdError(`Unsupported DataType: ${JSON.stringify(dataType)}`);
|
|
178
|
+
this._startTimeout();
|
|
179
|
+
}
|
|
180
|
+
_resetState() {
|
|
181
|
+
this.isConnected = false;
|
|
182
|
+
this.isInTransaction = false;
|
|
183
|
+
this._client = undefined;
|
|
167
184
|
}
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
185
|
+
_stopTimeout() {
|
|
186
|
+
if (this._connTimeout != null) {
|
|
187
|
+
clearTimeout(this._connTimeout);
|
|
188
|
+
}
|
|
172
189
|
}
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
_stopTimeout() {
|
|
181
|
-
if (this._connTimeout != null) {
|
|
182
|
-
clearTimeout(this._connTimeout);
|
|
190
|
+
_startTimeout() {
|
|
191
|
+
this._stopTimeout();
|
|
192
|
+
this._connTimeout = setTimeout(() => {
|
|
193
|
+
this.close().catch((err) => {
|
|
194
|
+
logger.error("연결 종료 오류", err instanceof Error ? err.message : String(err));
|
|
195
|
+
});
|
|
196
|
+
}, this._timeout * 2);
|
|
183
197
|
}
|
|
184
|
-
}
|
|
185
|
-
_startTimeout() {
|
|
186
|
-
this._stopTimeout();
|
|
187
|
-
this._connTimeout = setTimeout(() => {
|
|
188
|
-
this.close().catch((err) => {
|
|
189
|
-
logger.error("close error", err instanceof Error ? err.message : String(err));
|
|
190
|
-
});
|
|
191
|
-
}, this._timeout * 2);
|
|
192
|
-
}
|
|
193
198
|
}
|
|
194
|
-
|
|
195
|
-
PostgresqlDbConn
|
|
196
|
-
};
|
|
197
|
-
//# sourceMappingURL=postgresql-db-conn.js.map
|
|
199
|
+
//# sourceMappingURL=postgresql-db-conn.js.map
|
|
@@ -1,6 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/connections/postgresql-db-conn.ts"],
|
|
4
|
-
"mappings": "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",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
|
1
|
+
{"version":3,"file":"postgresql-db-conn.js","sourceRoot":"","sources":["..\\..\\src\\connections\\postgresql-db-conn.ts"],"names":[],"mappings":"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"}
|
package/dist/create-db-conn.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { DbConn, DbConnConfig } from "./types/db-conn";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* DB 연결 생성
|
|
4
4
|
*
|
|
5
|
-
* @param config -
|
|
6
|
-
* @returns DB
|
|
5
|
+
* @param config - 데이터베이스 연결 설정
|
|
6
|
+
* @returns DB 연결 객체 (아직 연결되지 않음 - connect()를 별도로 호출해야 함)
|
|
7
7
|
*/
|
|
8
8
|
export declare function createDbConn(config: DbConnConfig): Promise<DbConn>;
|
|
9
9
|
//# sourceMappingURL=create-db-conn.d.ts.map
|
package/dist/create-db-conn.js
CHANGED
|
@@ -1,35 +1,51 @@
|
|
|
1
1
|
import { MysqlDbConn } from "./connections/mysql-db-conn.js";
|
|
2
2
|
import { MssqlDbConn } from "./connections/mssql-db-conn.js";
|
|
3
3
|
import { PostgresqlDbConn } from "./connections/postgresql-db-conn.js";
|
|
4
|
+
/**
|
|
5
|
+
* DB 연결 팩토리
|
|
6
|
+
*
|
|
7
|
+
* 데이터베이스 연결 인스턴스를 생성한다.
|
|
8
|
+
* MSSQL, MySQL, PostgreSQL을 지원한다.
|
|
9
|
+
*/
|
|
10
|
+
// 지연 로딩 모듈 캐시
|
|
4
11
|
const modules = {};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
/**
|
|
13
|
+
* DB 연결 생성
|
|
14
|
+
*
|
|
15
|
+
* @param config - 데이터베이스 연결 설정
|
|
16
|
+
* @returns DB 연결 객체 (아직 연결되지 않음 - connect()를 별도로 호출해야 함)
|
|
17
|
+
*/
|
|
18
|
+
export async function createDbConn(config) {
|
|
19
|
+
if (config.dialect === "mysql") {
|
|
20
|
+
const mysql = await ensureModule("mysql");
|
|
21
|
+
return new MysqlDbConn(mysql, config);
|
|
22
|
+
}
|
|
23
|
+
else if (config.dialect === "postgresql") {
|
|
24
|
+
const pg = await ensureModule("pg");
|
|
25
|
+
const pgCopyStreams = await ensureModule("pgCopyStreams");
|
|
26
|
+
return new PostgresqlDbConn(pg, pgCopyStreams, config);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
// mssql, mssql-azure
|
|
30
|
+
const tedious = await ensureModule("tedious");
|
|
31
|
+
return new MssqlDbConn(tedious, config);
|
|
32
|
+
}
|
|
17
33
|
}
|
|
18
34
|
async function ensureModule(name) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
35
|
+
if (modules[name] == null) {
|
|
36
|
+
if (name === "mysql") {
|
|
37
|
+
modules.mysql = await import("mysql2/promise");
|
|
38
|
+
}
|
|
39
|
+
else if (name === "pg") {
|
|
40
|
+
modules.pg = await import("pg");
|
|
41
|
+
}
|
|
42
|
+
else if (name === "pgCopyStreams") {
|
|
43
|
+
modules.pgCopyStreams = await import("pg-copy-streams");
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
modules.tedious = await import("tedious");
|
|
47
|
+
}
|
|
28
48
|
}
|
|
29
|
-
|
|
30
|
-
return modules[name];
|
|
49
|
+
return modules[name];
|
|
31
50
|
}
|
|
32
|
-
|
|
33
|
-
createDbConn
|
|
34
|
-
};
|
|
35
|
-
//# sourceMappingURL=create-db-conn.js.map
|
|
51
|
+
//# sourceMappingURL=create-db-conn.js.map
|
|
@@ -1,6 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/create-db-conn.ts"],
|
|
4
|
-
"mappings": "AACA,SAAS,mBAAmB;AAC5B,SAAS,mBAAmB;AAC5B,SAAS,wBAAwB;AAUjC,MAAM,UAKF,CAAC;AAQL,eAAsB,aAAa,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,eAAe,MAAM;AAAA,EACvD,OAAO;AAEL,UAAM,UAAU,MAAM,aAAa,SAAS;AAC5C,WAAO,IAAI,YAAY,SAAS,MAAM;AAAA,EACxC;AACF;AAEA,eAAe,aACb,MAC2C;AAC3C,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
|
+
{"version":3,"file":"create-db-conn.js","sourceRoot":"","sources":["..\\src\\create-db-conn.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEpE;;;;;GAKG;AAEH,cAAc;AACd,MAAM,OAAO,GAKT,EAAE,CAAC;AAEP;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAoB;IACrD,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,IAAI,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;SAAM,IAAI,MAAM,CAAC,OAAO,KAAK,YAAY,EAAE,CAAC;QAC3C,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,eAAe,CAAC,CAAC;QAC1D,OAAO,IAAI,gBAAgB,CAAC,EAAE,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;SAAM,CAAC;QACN,qBAAqB;QACrB,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC;QAC9C,OAAO,IAAI,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,IAAO;IAEP,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;QAC1B,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,OAAO,CAAC,KAAK,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACjD,CAAC;aAAM,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,CAAC,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;aAAM,IAAI,IAAI,KAAK,eAAe,EAAE,CAAC;YACpC,OAAO,CAAC,aAAa,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAAE,CAAC;AACxB,CAAC"}
|
package/dist/create-orm.d.ts
CHANGED
|
@@ -1,50 +1,50 @@
|
|
|
1
1
|
import { type DbContextDef, type DbContextInstance, type IsolationLevel } from "@simplysm/orm-common";
|
|
2
2
|
import type { DbConnConfig } from "./types/db-conn";
|
|
3
3
|
/**
|
|
4
|
-
* ORM
|
|
4
|
+
* ORM 옵션
|
|
5
5
|
*
|
|
6
|
-
*
|
|
6
|
+
* DbConnConfig보다 우선하는 DbContext 옵션
|
|
7
7
|
*/
|
|
8
8
|
export interface OrmOptions {
|
|
9
9
|
/**
|
|
10
|
-
*
|
|
10
|
+
* 데이터베이스 이름 (DbConnConfig의 database 대신 사용)
|
|
11
11
|
*/
|
|
12
12
|
database?: string;
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
14
|
+
* 스키마 이름 (MSSQL: dbo, PostgreSQL: public)
|
|
15
15
|
*/
|
|
16
16
|
schema?: string;
|
|
17
17
|
}
|
|
18
18
|
/**
|
|
19
|
-
* ORM
|
|
19
|
+
* ORM 인스턴스 타입
|
|
20
20
|
*
|
|
21
|
-
*
|
|
21
|
+
* createOrm에서 반환하는 객체의 타입
|
|
22
22
|
*/
|
|
23
23
|
export interface Orm<TDef extends DbContextDef<any, any, any>> {
|
|
24
24
|
readonly dbContextDef: TDef;
|
|
25
25
|
readonly config: DbConnConfig;
|
|
26
26
|
readonly options?: OrmOptions;
|
|
27
27
|
/**
|
|
28
|
-
*
|
|
28
|
+
* 트랜잭션 내에서 콜백을 실행한다
|
|
29
29
|
*
|
|
30
|
-
* @param callback -
|
|
31
|
-
* @param isolationLevel -
|
|
32
|
-
* @returns
|
|
30
|
+
* @param callback - DB 연결 후 실행할 콜백
|
|
31
|
+
* @param isolationLevel - 트랜잭션 격리 수준
|
|
32
|
+
* @returns 콜백 결과
|
|
33
33
|
*/
|
|
34
34
|
connect<R>(callback: (conn: DbContextInstance<TDef>) => Promise<R>, isolationLevel?: IsolationLevel): Promise<R>;
|
|
35
35
|
/**
|
|
36
|
-
*
|
|
36
|
+
* 트랜잭션 없이 콜백을 실행한다
|
|
37
37
|
*
|
|
38
|
-
* @param callback -
|
|
39
|
-
* @returns
|
|
38
|
+
* @param callback - DB 연결 후 실행할 콜백
|
|
39
|
+
* @returns 콜백 결과
|
|
40
40
|
*/
|
|
41
41
|
connectWithoutTransaction<R>(callback: (conn: DbContextInstance<TDef>) => Promise<R>): Promise<R>;
|
|
42
42
|
}
|
|
43
43
|
/**
|
|
44
|
-
* Node.js ORM
|
|
44
|
+
* Node.js ORM 팩토리 함수
|
|
45
45
|
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
46
|
+
* DbContext와 DB 연결을 관리하는 인스턴스를 생성한다.
|
|
47
|
+
* DbContext 정의와 연결 설정을 받아 트랜잭션을 관리한다.
|
|
48
48
|
*
|
|
49
49
|
* @example
|
|
50
50
|
* ```typescript
|
|
@@ -61,13 +61,13 @@ export interface Orm<TDef extends DbContextDef<any, any, any>> {
|
|
|
61
61
|
* database: "mydb",
|
|
62
62
|
* });
|
|
63
63
|
*
|
|
64
|
-
* //
|
|
64
|
+
* // 트랜잭션 내에서 실행
|
|
65
65
|
* await orm.connect(async (db) => {
|
|
66
66
|
* const users = await db.user().execute();
|
|
67
67
|
* return users;
|
|
68
68
|
* });
|
|
69
69
|
*
|
|
70
|
-
* //
|
|
70
|
+
* // 트랜잭션 없이 실행
|
|
71
71
|
* await orm.connectWithoutTransaction(async (db) => {
|
|
72
72
|
* const users = await db.user().execute();
|
|
73
73
|
* return users;
|