@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/src/create-orm.ts CHANGED
@@ -8,26 +8,26 @@ import type { DbConnConfig } from "./types/db-conn";
8
8
  import { NodeDbContextExecutor } from "./node-db-context-executor";
9
9
 
10
10
  /**
11
- * ORM options
11
+ * ORM 옵션
12
12
  *
13
- * DbContext options that take precedence over DbConnConfig
13
+ * DbConnConfig보다 우선하는 DbContext 옵션
14
14
  */
15
15
  export interface OrmOptions {
16
16
  /**
17
- * Database name (used instead of DbConnConfig's database)
17
+ * 데이터베이스 이름 (DbConnConfig의 database 대신 사용)
18
18
  */
19
19
  database?: string;
20
20
 
21
21
  /**
22
- * Schema name (MSSQL: dbo, PostgreSQL: public)
22
+ * 스키마 이름 (MSSQL: dbo, PostgreSQL: public)
23
23
  */
24
24
  schema?: string;
25
25
  }
26
26
 
27
27
  /**
28
- * ORM instance type
28
+ * ORM 인스턴스 타입
29
29
  *
30
- * Type of the object returned from createOrm
30
+ * createOrm에서 반환하는 객체의 타입
31
31
  */
32
32
  export interface Orm<TDef extends DbContextDef<any, any, any>> {
33
33
  readonly dbContextDef: TDef;
@@ -35,11 +35,11 @@ export interface Orm<TDef extends DbContextDef<any, any, any>> {
35
35
  readonly options?: OrmOptions;
36
36
 
37
37
  /**
38
- * Execute callback within a transaction
38
+ * 트랜잭션 내에서 콜백을 실행한다
39
39
  *
40
- * @param callback - Callback to execute after DB connection
41
- * @param isolationLevel - Transaction isolation level
42
- * @returns Callback result
40
+ * @param callback - DB 연결 실행할 콜백
41
+ * @param isolationLevel - 트랜잭션 격리 수준
42
+ * @returns 콜백 결과
43
43
  */
44
44
  connect<R>(
45
45
  callback: (conn: DbContextInstance<TDef>) => Promise<R>,
@@ -47,19 +47,19 @@ export interface Orm<TDef extends DbContextDef<any, any, any>> {
47
47
  ): Promise<R>;
48
48
 
49
49
  /**
50
- * Execute callback without a transaction
50
+ * 트랜잭션 없이 콜백을 실행한다
51
51
  *
52
- * @param callback - Callback to execute after DB connection
53
- * @returns Callback result
52
+ * @param callback - DB 연결 실행할 콜백
53
+ * @returns 콜백 결과
54
54
  */
55
55
  connectWithoutTransaction<R>(callback: (conn: DbContextInstance<TDef>) => Promise<R>): Promise<R>;
56
56
  }
57
57
 
58
58
  /**
59
- * Node.js ORM factory function
59
+ * Node.js ORM 팩토리 함수
60
60
  *
61
- * Creates an instance that manages DbContext and DB connections.
62
- * Receives DbContext definition and connection configuration to manage transactions.
61
+ * DbContext와 DB 연결을 관리하는 인스턴스를 생성한다.
62
+ * DbContext 정의와 연결 설정을 받아 트랜잭션을 관리한다.
63
63
  *
64
64
  * @example
65
65
  * ```typescript
@@ -76,13 +76,13 @@ export interface Orm<TDef extends DbContextDef<any, any, any>> {
76
76
  * database: "mydb",
77
77
  * });
78
78
  *
79
- * // Execute within a transaction
79
+ * // 트랜잭션 내에서 실행
80
80
  * await orm.connect(async (db) => {
81
81
  * const users = await db.user().execute();
82
82
  * return users;
83
83
  * });
84
84
  *
85
- * // Execute without a transaction
85
+ * // 트랜잭션 없이 실행
86
86
  * await orm.connectWithoutTransaction(async (db) => {
87
87
  * const users = await db.user().execute();
88
88
  * return users;
@@ -95,13 +95,13 @@ export function createOrm<TDef extends DbContextDef<any, any, any>>(
95
95
  options?: OrmOptions,
96
96
  ): Orm<TDef> {
97
97
  function _createDbContext(): DbContextInstance<TDef> {
98
- // database from options first, then from config
98
+ // options의 database 우선 사용, 없으면 config에서
99
99
  const database = options?.database ?? ("database" in config ? config.database : undefined);
100
100
  if (database == null || database === "") {
101
- throw new Error("database is required");
101
+ throw new Error("database 필수입니다");
102
102
  }
103
103
 
104
- // schema from options first, then from config
104
+ // options의 schema 우선 사용, 없으면 config에서
105
105
  const schema = options?.schema ?? ("schema" in config ? config.schema : undefined);
106
106
 
107
107
  return createDbContext(dbContextDef, new NodeDbContextExecutor(config), {
package/src/index.ts CHANGED
@@ -1,12 +1,12 @@
1
- // Types
1
+ // 타입
2
2
  export * from "./types/db-conn";
3
3
 
4
- // Connections
4
+ // 연결
5
5
  export * from "./connections/mssql-db-conn";
6
6
  export * from "./connections/mysql-db-conn";
7
7
  export * from "./connections/postgresql-db-conn";
8
8
 
9
- // Core
9
+ // 코어
10
10
  export * from "./create-db-conn";
11
11
  export * from "./node-db-context-executor";
12
12
  export * from "./create-orm";
@@ -14,9 +14,9 @@ import { DB_CONN_ERRORS, getDialectFromConfig } from "./types/db-conn";
14
14
  import { createDbConn } from "./create-db-conn";
15
15
 
16
16
  /**
17
- * DbContextExecutor for Node.js environment
17
+ * Node.js 환경용 DbContextExecutor
18
18
  *
19
- * Executor used by DbContext that handles actual DB connections.
19
+ * DbContext에서 사용하는 실제 DB 연결을 처리하는 실행자.
20
20
  */
21
21
  export class NodeDbContextExecutor implements DbContextExecutor {
22
22
  private _conn?: DbConn;
@@ -27,7 +27,7 @@ export class NodeDbContextExecutor implements DbContextExecutor {
27
27
  }
28
28
 
29
29
  /**
30
- * Establish DB connection
30
+ * DB 연결을 수립한다
31
31
  */
32
32
  async connect(): Promise<void> {
33
33
  this._conn = await createDbConn(this._config);
@@ -35,9 +35,9 @@ export class NodeDbContextExecutor implements DbContextExecutor {
35
35
  }
36
36
 
37
37
  /**
38
- * Close DB connection
38
+ * DB 연결을 종료한다
39
39
  *
40
- * @throws {Error} When not connected
40
+ * @throws {Error} 연결되지 않은 경우
41
41
  */
42
42
  async close(): Promise<void> {
43
43
  const conn = this._requireConn();
@@ -46,10 +46,10 @@ export class NodeDbContextExecutor implements DbContextExecutor {
46
46
  }
47
47
 
48
48
  /**
49
- * Begin transaction
49
+ * 트랜잭션을 시작한다
50
50
  *
51
- * @param isolationLevel - Transaction isolation level
52
- * @throws {Error} When not connected
51
+ * @param isolationLevel - 트랜잭션 격리 수준
52
+ * @throws {Error} 연결되지 않은 경우
53
53
  */
54
54
  async beginTransaction(isolationLevel?: IsolationLevel): Promise<void> {
55
55
  const conn = this._requireConn();
@@ -57,9 +57,9 @@ export class NodeDbContextExecutor implements DbContextExecutor {
57
57
  }
58
58
 
59
59
  /**
60
- * Commit transaction
60
+ * 트랜잭션을 커밋한다
61
61
  *
62
- * @throws {Error} When not connected
62
+ * @throws {Error} 연결되지 않은 경우
63
63
  */
64
64
  async commitTransaction(): Promise<void> {
65
65
  const conn = this._requireConn();
@@ -67,9 +67,9 @@ export class NodeDbContextExecutor implements DbContextExecutor {
67
67
  }
68
68
 
69
69
  /**
70
- * Rollback transaction
70
+ * 트랜잭션을 롤백한다
71
71
  *
72
- * @throws {Error} When not connected
72
+ * @throws {Error} 연결되지 않은 경우
73
73
  */
74
74
  async rollbackTransaction(): Promise<void> {
75
75
  const conn = this._requireConn();
@@ -77,12 +77,12 @@ export class NodeDbContextExecutor implements DbContextExecutor {
77
77
  }
78
78
 
79
79
  /**
80
- * Execute parameterized query
80
+ * 파라미터화된 쿼리를 실행한다
81
81
  *
82
- * @param query - SQL query string
83
- * @param params - Query parameter array
84
- * @returns Query result array
85
- * @throws {Error} When not connected
82
+ * @param query - SQL 쿼리 문자열
83
+ * @param params - 쿼리 파라미터 배열
84
+ * @returns 쿼리 결과 배열
85
+ * @throws {Error} 연결되지 않은 경우
86
86
  */
87
87
  async executeParametrized(
88
88
  query: string,
@@ -93,12 +93,12 @@ export class NodeDbContextExecutor implements DbContextExecutor {
93
93
  }
94
94
 
95
95
  /**
96
- * Bulk insert data (using native bulk API)
96
+ * 대량 데이터 삽입 (네이티브 bulk API 사용)
97
97
  *
98
- * @param tableName - Target table name
99
- * @param columnMetas - Column metadata
100
- * @param records - Record array to insert
101
- * @throws {Error} When not connected
98
+ * @param tableName - 대상 테이블 이름
99
+ * @param columnMetas - 컬럼 메타데이터
100
+ * @param records - 삽입할 레코드 배열
101
+ * @throws {Error} 연결되지 않은 경우
102
102
  */
103
103
  async bulkInsert(
104
104
  tableName: string,
@@ -110,14 +110,14 @@ export class NodeDbContextExecutor implements DbContextExecutor {
110
110
  }
111
111
 
112
112
  /**
113
- * Execute QueryDef array
113
+ * QueryDef 배열을 실행한다
114
114
  *
115
- * Converts QueryDef to SQL and executes, parses results using ResultMeta.
115
+ * QueryDef SQL 변환하여 실행하고, ResultMeta를 사용하여 결과를 파싱한다.
116
116
  *
117
- * @param defs - QueryDef array to execute
118
- * @param resultMetas - Result parsing metadata array (used for type conversion)
119
- * @returns Array of execution results for each QueryDef
120
- * @throws {Error} When not connected
117
+ * @param defs - 실행할 QueryDef 배열
118
+ * @param resultMetas - 결과 파싱 메타데이터 배열 (타입 변환에 사용)
119
+ * @returns QueryDef의 실행 결과 배열
120
+ * @throws {Error} 연결되지 않은 경우
121
121
  */
122
122
  async executeDefs<T = DataRecord>(
123
123
  defs: QueryDef[],
@@ -127,15 +127,15 @@ export class NodeDbContextExecutor implements DbContextExecutor {
127
127
 
128
128
  const builder = createQueryBuilder(this._dialect);
129
129
 
130
- // When configured not to fetch data, send one request with a single query
131
- // Since results are not needed, return empty arrays matching defs.length to maintain interface contract
130
+ // 데이터를 가져올 필요가 없도록 설정된 경우, 단일 쿼리로 번의 요청을 보낸다
131
+ // 결과가 필요 없으므로 인터페이스 계약을 유지하기 위해 defs.length 맞는 배열을 반환
132
132
  if (resultMetas != null && resultMetas.every((item) => item == null)) {
133
133
  const combinedSql = defs.map((def) => builder.build(def).sql).join("\n");
134
134
  await conn.execute([combinedSql]);
135
135
  return defs.map(() => []) as T[][];
136
136
  }
137
137
 
138
- // Execute each def individually
138
+ // def 개별적으로 실행
139
139
  const results: T[][] = [];
140
140
  for (let i = 0; i < defs.length; i++) {
141
141
  const def = defs[i];
@@ -144,7 +144,7 @@ export class NodeDbContextExecutor implements DbContextExecutor {
144
144
 
145
145
  const rawResults = await conn.execute([buildResult.sql]);
146
146
 
147
- // Use result set at specified index if resultSetIndex is specified
147
+ // resultSetIndex가 지정된 경우 해당 인덱스의 결과 집합을 사용
148
148
  const targetResultSet =
149
149
  buildResult.resultSetIndex != null ? rawResults[buildResult.resultSetIndex] : rawResults[0];
150
150
 
@@ -2,112 +2,112 @@ import type { EventEmitter } from "@simplysm/core-common";
2
2
  import type { ColumnMeta, Dialect, IsolationLevel } from "@simplysm/orm-common";
3
3
 
4
4
  // ============================================
5
- // Common constants
5
+ // 공통 상수
6
6
  // ============================================
7
7
 
8
8
  /**
9
- * DB connection establishment timeout (10 seconds)
9
+ * DB 연결 수립 타임아웃 (10)
10
10
  */
11
11
  export const DB_CONN_CONNECT_TIMEOUT = 10 * 1000;
12
12
 
13
13
  /**
14
- * DB query default timeout (10 minutes)
14
+ * DB 쿼리 기본 타임아웃 (10)
15
15
  */
16
16
  export const DB_CONN_DEFAULT_TIMEOUT = 10 * 60 * 1000;
17
17
 
18
18
  /**
19
- * DB connection error messages
19
+ * DB 연결 오류 메시지
20
20
  */
21
21
  export const DB_CONN_ERRORS = {
22
- NOT_CONNECTED: "'Connection' is not connected.",
23
- ALREADY_CONNECTED: "'Connection' is already connected.",
22
+ NOT_CONNECTED: "'Connection' 연결되어 있지 않습니다.",
23
+ ALREADY_CONNECTED: "'Connection' 이미 연결되어 있습니다.",
24
24
  } as const;
25
25
 
26
26
  // ============================================
27
- // IDbConn Interface
27
+ // IDbConn 인터페이스
28
28
  // ============================================
29
29
 
30
30
  /**
31
- * Low-level DB connection interface
31
+ * 저수준 DB 연결 인터페이스
32
32
  *
33
- * Implementations for each DBMS implement this interface.
34
- * - {@link MysqlDbConn} - MySQL connection
35
- * - {@link MssqlDbConn} - MSSQL connection
36
- * - {@link PostgresqlDbConn} - PostgreSQL connection
33
+ * DBMS 구현체가 인터페이스를 구현한다.
34
+ * - {@link MysqlDbConn} - MySQL 연결
35
+ * - {@link MssqlDbConn} - MSSQL 연결
36
+ * - {@link PostgresqlDbConn} - PostgreSQL 연결
37
37
  *
38
38
  * @remarks
39
- * Inherits from EventEmitter and emits 'close' events.
39
+ * EventEmitter 상속하며 'close' 이벤트를 발생시킨다.
40
40
  */
41
41
  export interface DbConn extends EventEmitter<{ close: void }> {
42
42
  /**
43
- * Connection configuration
43
+ * 연결 설정
44
44
  */
45
45
  config: DbConnConfig;
46
46
 
47
47
  /**
48
- * Whether connected
48
+ * 연결 여부
49
49
  */
50
50
  isConnected: boolean;
51
51
 
52
52
  /**
53
- * Whether transaction is in progress
53
+ * 트랜잭션 진행 여부
54
54
  */
55
55
  isInTransaction: boolean;
56
56
 
57
57
  /**
58
- * Establish DB connection
58
+ * DB 연결을 수립한다
59
59
  */
60
60
  connect(): Promise<void>;
61
61
 
62
62
  /**
63
- * Close DB connection
63
+ * DB 연결을 종료한다
64
64
  */
65
65
  close(): Promise<void>;
66
66
 
67
67
  /**
68
- * Begin transaction
68
+ * 트랜잭션을 시작한다
69
69
  *
70
- * @param isolationLevel - Isolation level (optional)
70
+ * @param isolationLevel - 격리 수준 (선택사항)
71
71
  */
72
72
  beginTransaction(isolationLevel?: IsolationLevel): Promise<void>;
73
73
 
74
74
  /**
75
- * Commit transaction
75
+ * 트랜잭션을 커밋한다
76
76
  */
77
77
  commitTransaction(): Promise<void>;
78
78
 
79
79
  /**
80
- * Rollback transaction
80
+ * 트랜잭션을 롤백한다
81
81
  */
82
82
  rollbackTransaction(): Promise<void>;
83
83
 
84
84
  /**
85
- * Execute SQL query array
85
+ * SQL 쿼리 배열을 실행한다
86
86
  *
87
- * @param queries - SQL string array to execute
88
- * @returns Array of result arrays for each query
87
+ * @param queries - 실행할 SQL 문자열 배열
88
+ * @returns 쿼리의 결과 배열
89
89
  */
90
90
  execute(queries: string[]): Promise<Record<string, unknown>[][]>;
91
91
 
92
92
  /**
93
- * Execute parameterized query
93
+ * 파라미터화된 쿼리를 실행한다
94
94
  *
95
- * @param query - SQL query string
96
- * @param params - Binding parameters (optional)
97
- * @returns Array of result arrays
95
+ * @param query - SQL 쿼리 문자열
96
+ * @param params - 바인딩 파라미터 (선택사항)
97
+ * @returns 결과 배열
98
98
  */
99
99
  executeParametrized(query: string, params?: unknown[]): Promise<Record<string, unknown>[][]>;
100
100
 
101
101
  /**
102
- * Bulk INSERT (using native bulk API)
102
+ * Bulk INSERT (네이티브 bulk API 사용)
103
103
  *
104
104
  * - MSSQL: tedious BulkLoad
105
- * - MySQL: LOAD DATA LOCAL INFILE (temporary file)
105
+ * - MySQL: LOAD DATA LOCAL INFILE (임시 파일)
106
106
  * - PostgreSQL: COPY FROM STDIN
107
107
  *
108
- * @param tableName - Table name (database.table or database.schema.table)
109
- * @param columnMetas - Column name → ColumnMeta mapping
110
- * @param records - Record array to insert
108
+ * @param tableName - 테이블 이름 (database.table 또는 database.schema.table)
109
+ * @param columnMetas - 컬럼 이름 → ColumnMeta 매핑
110
+ * @param records - 삽입할 레코드 배열
111
111
  */
112
112
  bulkInsert(
113
113
  tableName: string,
@@ -117,16 +117,16 @@ export interface DbConn extends EventEmitter<{ close: void }> {
117
117
  }
118
118
 
119
119
  // ============================================
120
- // DbConnConfig Types
120
+ // DbConnConfig 타입
121
121
  // ============================================
122
122
 
123
123
  /**
124
- * DB connection configuration type (branching by dialect)
124
+ * DB 연결 설정 타입 (dialect별 분기)
125
125
  */
126
126
  export type DbConnConfig = MysqlDbConnConfig | MssqlDbConnConfig | PostgresqlDbConnConfig;
127
127
 
128
128
  /**
129
- * MySQL connection configuration
129
+ * MySQL 연결 설정
130
130
  */
131
131
  export interface MysqlDbConnConfig {
132
132
  dialect: "mysql";
@@ -139,7 +139,7 @@ export interface MysqlDbConnConfig {
139
139
  }
140
140
 
141
141
  /**
142
- * MSSQL connection configuration
142
+ * MSSQL 연결 설정
143
143
  */
144
144
  export interface MssqlDbConnConfig {
145
145
  dialect: "mssql" | "mssql-azure";
@@ -153,7 +153,7 @@ export interface MssqlDbConnConfig {
153
153
  }
154
154
 
155
155
  /**
156
- * PostgreSQL connection configuration
156
+ * PostgreSQL 연결 설정
157
157
  */
158
158
  export interface PostgresqlDbConnConfig {
159
159
  dialect: "postgresql";
@@ -167,7 +167,7 @@ export interface PostgresqlDbConnConfig {
167
167
  }
168
168
 
169
169
  /**
170
- * Extract Dialect from DbConnConfig
170
+ * DbConnConfig에서 Dialect 추출한다
171
171
  */
172
172
  export function getDialectFromConfig(config: DbConnConfig): Dialect {
173
173
  if (config.dialect === "mssql-azure") {