@simplysm/orm-node 13.0.100 → 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.
@@ -1,197 +1,199 @@
1
1
  import { Readable } from "stream";
2
2
  import consola from "consola";
3
- import {
4
- bytes,
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
- class PostgresqlDbConn extends EventEmitter {
20
- constructor(_pg, _pgCopyStreams, config) {
21
- super();
22
- this._pg = _pg;
23
- this._pgCopyStreams = _pgCopyStreams;
24
- this.config = config;
25
- }
26
- _timeout = DB_CONN_DEFAULT_TIMEOUT;
27
- _client;
28
- _connTimeout;
29
- isConnected = false;
30
- isInTransaction = false;
31
- async connect() {
32
- if (this.isConnected) {
33
- throw new SdError(DB_CONN_ERRORS.ALREADY_CONNECTED);
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
- const client = new this._pg.Client({
36
- host: this.config.host,
37
- port: this.config.port ?? 5432,
38
- user: this.config.username,
39
- password: this.config.password,
40
- database: this.config.database,
41
- connectionTimeoutMillis: DB_CONN_CONNECT_TIMEOUT,
42
- query_timeout: this._timeout
43
- });
44
- client.on("end", () => {
45
- this.emit("close");
46
- this._resetState();
47
- });
48
- client.on("error", (error) => {
49
- logger.error("DB connection error", error.message);
50
- });
51
- await client.connect();
52
- this._client = client;
53
- this._startTimeout();
54
- this.isConnected = true;
55
- }
56
- async close() {
57
- this._stopTimeout();
58
- if (this._client == null || !this.isConnected) {
59
- return;
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
- await this._client.end();
62
- this.emit("close");
63
- this._resetState();
64
- }
65
- async beginTransaction(isolationLevel) {
66
- this._assertConnected();
67
- const level = (isolationLevel ?? this.config.defaultIsolationLevel ?? "READ_UNCOMMITTED").replace(/_/g, " ");
68
- await this._client.query("BEGIN");
69
- await this._client.query(`SET TRANSACTION ISOLATION LEVEL ${level}`);
70
- this.isInTransaction = true;
71
- }
72
- async commitTransaction() {
73
- this._assertConnected();
74
- await this._client.query("COMMIT");
75
- this.isInTransaction = false;
76
- }
77
- async rollbackTransaction() {
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
- return results;
89
- }
90
- async executeParametrized(query, params) {
91
- this._assertConnected();
92
- logger.debug("Query execution", { queryLength: query.length, params });
93
- try {
94
- const result = await this._client.query(query, params);
95
- this._startTimeout();
96
- return [result.rows];
97
- } catch (err) {
98
- this._startTimeout();
99
- const error = err instanceof Error ? err : new Error(String(err));
100
- throw new SdError(error, "Error executing query\n-- query\n" + query.trim() + "\n--");
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
- async bulkInsert(tableName, columnMetas, records) {
104
- this._assertConnected();
105
- if (records.length === 0) return;
106
- const colNames = Object.keys(columnMetas);
107
- const wrappedCols = colNames.map((c) => `"${c}"`).join(", ");
108
- const copyQuery = `COPY ${tableName} (${wrappedCols}) FROM STDIN WITH (FORMAT csv, NULL '\\N')`;
109
- const stream = this._client.query(this._pgCopyStreams.from(copyQuery));
110
- const csvLines = [];
111
- for (const record of records) {
112
- const row = colNames.map(
113
- (colName) => this._escapeForCsv(record[colName], columnMetas[colName].dataType)
114
- );
115
- csvLines.push(row.join(","));
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
- const csvContent = csvLines.join("\n") + "\n";
118
- await new Promise((resolve, reject) => {
119
- const readable = Readable.from([csvContent]);
120
- readable.on("error", reject);
121
- stream.on("error", reject);
122
- stream.on("finish", resolve);
123
- readable.pipe(stream);
124
- });
125
- }
126
- // ─────────────────────────────────────────────
127
- // Private helpers
128
- // ─────────────────────────────────────────────
129
- /**
130
- * Escape value for PostgreSQL COPY CSV
131
- */
132
- _escapeForCsv(value, dataType) {
133
- if (value == null) {
134
- return "\\N";
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
- switch (dataType.type) {
137
- case "int":
138
- case "bigint":
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
- return strVal;
153
- }
154
- case "datetime":
155
- return value.toFormatString("yyyy-MM-dd HH:mm:ss.fff");
156
- case "date":
157
- return value.toFormatString("yyyy-MM-dd");
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
- _assertConnected() {
170
- if (this._client == null || !this.isConnected) {
171
- throw new SdError(DB_CONN_ERRORS.NOT_CONNECTED);
185
+ _stopTimeout() {
186
+ if (this._connTimeout != null) {
187
+ clearTimeout(this._connTimeout);
188
+ }
172
189
  }
173
- this._startTimeout();
174
- }
175
- _resetState() {
176
- this.isConnected = false;
177
- this.isInTransaction = false;
178
- this._client = void 0;
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
- export {
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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"}
@@ -1,9 +1,9 @@
1
1
  import type { DbConn, DbConnConfig } from "./types/db-conn";
2
2
  /**
3
- * Create DB connection
3
+ * DB 연결 생성
4
4
  *
5
- * @param config - Database connection configuration
6
- * @returns DB connection object (not yet connected call connect() separately)
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
@@ -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
- async function createDbConn(config) {
6
- if (config.dialect === "mysql") {
7
- const mysql = await ensureModule("mysql");
8
- return new MysqlDbConn(mysql, config);
9
- } else if (config.dialect === "postgresql") {
10
- const pg = await ensureModule("pg");
11
- const pgCopyStreams = await ensureModule("pgCopyStreams");
12
- return new PostgresqlDbConn(pg, pgCopyStreams, config);
13
- } else {
14
- const tedious = await ensureModule("tedious");
15
- return new MssqlDbConn(tedious, config);
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
- if (modules[name] == null) {
20
- if (name === "mysql") {
21
- modules.mysql = await import("mysql2/promise");
22
- } else if (name === "pg") {
23
- modules.pg = await import("pg");
24
- } else if (name === "pgCopyStreams") {
25
- modules.pgCopyStreams = await import("pg-copy-streams");
26
- } else {
27
- modules.tedious = await import("tedious");
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
- export {
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"}
@@ -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 options
4
+ * ORM 옵션
5
5
  *
6
- * DbContext options that take precedence over DbConnConfig
6
+ * DbConnConfig보다 우선하는 DbContext 옵션
7
7
  */
8
8
  export interface OrmOptions {
9
9
  /**
10
- * Database name (used instead of DbConnConfig's database)
10
+ * 데이터베이스 이름 (DbConnConfig의 database 대신 사용)
11
11
  */
12
12
  database?: string;
13
13
  /**
14
- * Schema name (MSSQL: dbo, PostgreSQL: public)
14
+ * 스키마 이름 (MSSQL: dbo, PostgreSQL: public)
15
15
  */
16
16
  schema?: string;
17
17
  }
18
18
  /**
19
- * ORM instance type
19
+ * ORM 인스턴스 타입
20
20
  *
21
- * Type of the object returned from createOrm
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
- * Execute callback within a transaction
28
+ * 트랜잭션 내에서 콜백을 실행한다
29
29
  *
30
- * @param callback - Callback to execute after DB connection
31
- * @param isolationLevel - Transaction isolation level
32
- * @returns Callback result
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
- * Execute callback without a transaction
36
+ * 트랜잭션 없이 콜백을 실행한다
37
37
  *
38
- * @param callback - Callback to execute after DB connection
39
- * @returns Callback result
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 factory function
44
+ * Node.js ORM 팩토리 함수
45
45
  *
46
- * Creates an instance that manages DbContext and DB connections.
47
- * Receives DbContext definition and connection configuration to manage transactions.
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
- * // Execute within a transaction
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
- * // Execute without a transaction
70
+ * // 트랜잭션 없이 실행
71
71
  * await orm.connectWithoutTransaction(async (db) => {
72
72
  * const users = await db.user().execute();
73
73
  * return users;