@simplysm/orm-node 13.0.0-beta.11

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.
Files changed (162) hide show
  1. package/README.md +418 -0
  2. package/dist/connections/mssql-db-conn.js +386 -0
  3. package/dist/connections/mssql-db-conn.js.map +7 -0
  4. package/dist/connections/mysql-db-conn.js +227 -0
  5. package/dist/connections/mysql-db-conn.js.map +7 -0
  6. package/dist/connections/postgresql-db-conn.js +191 -0
  7. package/dist/connections/postgresql-db-conn.js.map +7 -0
  8. package/dist/core-common/src/common.types.d.ts +74 -0
  9. package/dist/core-common/src/common.types.d.ts.map +1 -0
  10. package/dist/core-common/src/env.d.ts +6 -0
  11. package/dist/core-common/src/env.d.ts.map +1 -0
  12. package/dist/core-common/src/errors/argument-error.d.ts +25 -0
  13. package/dist/core-common/src/errors/argument-error.d.ts.map +1 -0
  14. package/dist/core-common/src/errors/not-implemented-error.d.ts +29 -0
  15. package/dist/core-common/src/errors/not-implemented-error.d.ts.map +1 -0
  16. package/dist/core-common/src/errors/sd-error.d.ts +27 -0
  17. package/dist/core-common/src/errors/sd-error.d.ts.map +1 -0
  18. package/dist/core-common/src/errors/timeout-error.d.ts +31 -0
  19. package/dist/core-common/src/errors/timeout-error.d.ts.map +1 -0
  20. package/dist/core-common/src/extensions/arr-ext.d.ts +15 -0
  21. package/dist/core-common/src/extensions/arr-ext.d.ts.map +1 -0
  22. package/dist/core-common/src/extensions/arr-ext.helpers.d.ts +19 -0
  23. package/dist/core-common/src/extensions/arr-ext.helpers.d.ts.map +1 -0
  24. package/dist/core-common/src/extensions/arr-ext.types.d.ts +215 -0
  25. package/dist/core-common/src/extensions/arr-ext.types.d.ts.map +1 -0
  26. package/dist/core-common/src/extensions/map-ext.d.ts +57 -0
  27. package/dist/core-common/src/extensions/map-ext.d.ts.map +1 -0
  28. package/dist/core-common/src/extensions/set-ext.d.ts +36 -0
  29. package/dist/core-common/src/extensions/set-ext.d.ts.map +1 -0
  30. package/dist/core-common/src/features/debounce-queue.d.ts +53 -0
  31. package/dist/core-common/src/features/debounce-queue.d.ts.map +1 -0
  32. package/dist/core-common/src/features/event-emitter.d.ts +66 -0
  33. package/dist/core-common/src/features/event-emitter.d.ts.map +1 -0
  34. package/dist/core-common/src/features/serial-queue.d.ts +47 -0
  35. package/dist/core-common/src/features/serial-queue.d.ts.map +1 -0
  36. package/dist/core-common/src/index.d.ts +32 -0
  37. package/dist/core-common/src/index.d.ts.map +1 -0
  38. package/dist/core-common/src/types/date-only.d.ts +152 -0
  39. package/dist/core-common/src/types/date-only.d.ts.map +1 -0
  40. package/dist/core-common/src/types/date-time.d.ts +96 -0
  41. package/dist/core-common/src/types/date-time.d.ts.map +1 -0
  42. package/dist/core-common/src/types/lazy-gc-map.d.ts +80 -0
  43. package/dist/core-common/src/types/lazy-gc-map.d.ts.map +1 -0
  44. package/dist/core-common/src/types/time.d.ts +68 -0
  45. package/dist/core-common/src/types/time.d.ts.map +1 -0
  46. package/dist/core-common/src/types/uuid.d.ts +35 -0
  47. package/dist/core-common/src/types/uuid.d.ts.map +1 -0
  48. package/dist/core-common/src/utils/bytes.d.ts +51 -0
  49. package/dist/core-common/src/utils/bytes.d.ts.map +1 -0
  50. package/dist/core-common/src/utils/date-format.d.ts +90 -0
  51. package/dist/core-common/src/utils/date-format.d.ts.map +1 -0
  52. package/dist/core-common/src/utils/json.d.ts +34 -0
  53. package/dist/core-common/src/utils/json.d.ts.map +1 -0
  54. package/dist/core-common/src/utils/num.d.ts +60 -0
  55. package/dist/core-common/src/utils/num.d.ts.map +1 -0
  56. package/dist/core-common/src/utils/obj.d.ts +258 -0
  57. package/dist/core-common/src/utils/obj.d.ts.map +1 -0
  58. package/dist/core-common/src/utils/path.d.ts +23 -0
  59. package/dist/core-common/src/utils/path.d.ts.map +1 -0
  60. package/dist/core-common/src/utils/primitive.d.ts +18 -0
  61. package/dist/core-common/src/utils/primitive.d.ts.map +1 -0
  62. package/dist/core-common/src/utils/str.d.ts +103 -0
  63. package/dist/core-common/src/utils/str.d.ts.map +1 -0
  64. package/dist/core-common/src/utils/template-strings.d.ts +84 -0
  65. package/dist/core-common/src/utils/template-strings.d.ts.map +1 -0
  66. package/dist/core-common/src/utils/transferable.d.ts +47 -0
  67. package/dist/core-common/src/utils/transferable.d.ts.map +1 -0
  68. package/dist/core-common/src/utils/wait.d.ts +19 -0
  69. package/dist/core-common/src/utils/wait.d.ts.map +1 -0
  70. package/dist/core-common/src/utils/xml.d.ts +36 -0
  71. package/dist/core-common/src/utils/xml.d.ts.map +1 -0
  72. package/dist/core-common/src/zip/sd-zip.d.ts +80 -0
  73. package/dist/core-common/src/zip/sd-zip.d.ts.map +1 -0
  74. package/dist/db-conn-factory.js +88 -0
  75. package/dist/db-conn-factory.js.map +7 -0
  76. package/dist/index.js +9 -0
  77. package/dist/index.js.map +7 -0
  78. package/dist/node-db-context-executor.js +129 -0
  79. package/dist/node-db-context-executor.js.map +7 -0
  80. package/dist/orm-common/src/db-context.d.ts +669 -0
  81. package/dist/orm-common/src/db-context.d.ts.map +1 -0
  82. package/dist/orm-common/src/errors/db-transaction-error.d.ts +51 -0
  83. package/dist/orm-common/src/errors/db-transaction-error.d.ts.map +1 -0
  84. package/dist/orm-common/src/exec/executable.d.ts +79 -0
  85. package/dist/orm-common/src/exec/executable.d.ts.map +1 -0
  86. package/dist/orm-common/src/exec/queryable.d.ts +708 -0
  87. package/dist/orm-common/src/exec/queryable.d.ts.map +1 -0
  88. package/dist/orm-common/src/exec/search-parser.d.ts +72 -0
  89. package/dist/orm-common/src/exec/search-parser.d.ts.map +1 -0
  90. package/dist/orm-common/src/expr/expr-unit.d.ts +25 -0
  91. package/dist/orm-common/src/expr/expr-unit.d.ts.map +1 -0
  92. package/dist/orm-common/src/expr/expr.d.ts +1369 -0
  93. package/dist/orm-common/src/expr/expr.d.ts.map +1 -0
  94. package/dist/orm-common/src/index.d.ts +32 -0
  95. package/dist/orm-common/src/index.d.ts.map +1 -0
  96. package/dist/orm-common/src/models/system-migration.d.ts +10 -0
  97. package/dist/orm-common/src/models/system-migration.d.ts.map +1 -0
  98. package/dist/orm-common/src/query-builder/base/expr-renderer-base.d.ts +95 -0
  99. package/dist/orm-common/src/query-builder/base/expr-renderer-base.d.ts.map +1 -0
  100. package/dist/orm-common/src/query-builder/base/query-builder-base.d.ts +66 -0
  101. package/dist/orm-common/src/query-builder/base/query-builder-base.d.ts.map +1 -0
  102. package/dist/orm-common/src/query-builder/mssql/mssql-expr-renderer.d.ts +84 -0
  103. package/dist/orm-common/src/query-builder/mssql/mssql-expr-renderer.d.ts.map +1 -0
  104. package/dist/orm-common/src/query-builder/mssql/mssql-query-builder.d.ts +45 -0
  105. package/dist/orm-common/src/query-builder/mssql/mssql-query-builder.d.ts.map +1 -0
  106. package/dist/orm-common/src/query-builder/mysql/mysql-expr-renderer.d.ts +84 -0
  107. package/dist/orm-common/src/query-builder/mysql/mysql-expr-renderer.d.ts.map +1 -0
  108. package/dist/orm-common/src/query-builder/mysql/mysql-query-builder.d.ts +54 -0
  109. package/dist/orm-common/src/query-builder/mysql/mysql-query-builder.d.ts.map +1 -0
  110. package/dist/orm-common/src/query-builder/postgresql/postgresql-expr-renderer.d.ts +84 -0
  111. package/dist/orm-common/src/query-builder/postgresql/postgresql-expr-renderer.d.ts.map +1 -0
  112. package/dist/orm-common/src/query-builder/postgresql/postgresql-query-builder.d.ts +52 -0
  113. package/dist/orm-common/src/query-builder/postgresql/postgresql-query-builder.d.ts.map +1 -0
  114. package/dist/orm-common/src/query-builder/query-builder.d.ts +7 -0
  115. package/dist/orm-common/src/query-builder/query-builder.d.ts.map +1 -0
  116. package/dist/orm-common/src/schema/factory/column-builder.d.ts +394 -0
  117. package/dist/orm-common/src/schema/factory/column-builder.d.ts.map +1 -0
  118. package/dist/orm-common/src/schema/factory/index-builder.d.ts +151 -0
  119. package/dist/orm-common/src/schema/factory/index-builder.d.ts.map +1 -0
  120. package/dist/orm-common/src/schema/factory/relation-builder.d.ts +337 -0
  121. package/dist/orm-common/src/schema/factory/relation-builder.d.ts.map +1 -0
  122. package/dist/orm-common/src/schema/procedure-builder.d.ts +202 -0
  123. package/dist/orm-common/src/schema/procedure-builder.d.ts.map +1 -0
  124. package/dist/orm-common/src/schema/table-builder.d.ts +259 -0
  125. package/dist/orm-common/src/schema/table-builder.d.ts.map +1 -0
  126. package/dist/orm-common/src/schema/view-builder.d.ts +183 -0
  127. package/dist/orm-common/src/schema/view-builder.d.ts.map +1 -0
  128. package/dist/orm-common/src/types/column.d.ts +172 -0
  129. package/dist/orm-common/src/types/column.d.ts.map +1 -0
  130. package/dist/orm-common/src/types/db.d.ts +175 -0
  131. package/dist/orm-common/src/types/db.d.ts.map +1 -0
  132. package/dist/orm-common/src/types/expr.d.ts +474 -0
  133. package/dist/orm-common/src/types/expr.d.ts.map +1 -0
  134. package/dist/orm-common/src/types/query-def.d.ts +351 -0
  135. package/dist/orm-common/src/types/query-def.d.ts.map +1 -0
  136. package/dist/orm-common/src/utils/result-parser.d.ts +38 -0
  137. package/dist/orm-common/src/utils/result-parser.d.ts.map +1 -0
  138. package/dist/orm-node/src/connections/mssql-db-conn.d.ts +44 -0
  139. package/dist/orm-node/src/connections/mssql-db-conn.d.ts.map +1 -0
  140. package/dist/orm-node/src/connections/mysql-db-conn.d.ts +38 -0
  141. package/dist/orm-node/src/connections/mysql-db-conn.d.ts.map +1 -0
  142. package/dist/orm-node/src/connections/postgresql-db-conn.d.ts +39 -0
  143. package/dist/orm-node/src/connections/postgresql-db-conn.d.ts.map +1 -0
  144. package/dist/orm-node/src/db-conn-factory.d.ts +25 -0
  145. package/dist/orm-node/src/db-conn-factory.d.ts.map +1 -0
  146. package/dist/orm-node/src/index.d.ts +9 -0
  147. package/dist/orm-node/src/index.d.ts.map +1 -0
  148. package/dist/orm-node/src/node-db-context-executor.d.ts +77 -0
  149. package/dist/orm-node/src/node-db-context-executor.d.ts.map +1 -0
  150. package/dist/orm-node/src/pooled-db-conn.d.ts +79 -0
  151. package/dist/orm-node/src/pooled-db-conn.d.ts.map +1 -0
  152. package/dist/orm-node/src/sd-orm.d.ts +78 -0
  153. package/dist/orm-node/src/sd-orm.d.ts.map +1 -0
  154. package/dist/orm-node/src/types/db-conn.d.ts +159 -0
  155. package/dist/orm-node/src/types/db-conn.d.ts.map +1 -0
  156. package/dist/pooled-db-conn.js +134 -0
  157. package/dist/pooled-db-conn.js.map +7 -0
  158. package/dist/sd-orm.js +44 -0
  159. package/dist/sd-orm.js.map +7 -0
  160. package/dist/types/db-conn.js +17 -0
  161. package/dist/types/db-conn.js.map +7 -0
  162. package/package.json +53 -0
@@ -0,0 +1,351 @@
1
+ import type { ColumnPrimitive, DataType } from "./column";
2
+ import type { Expr, WhereExpr } from "./expr";
3
+ /**
4
+ * DB 객체 이름 (테이블, 뷰, 프로시저 등)
5
+ *
6
+ * DBMS별 네임스페이스:
7
+ * - MySQL: `database.name` (schema 무시)
8
+ * - MSSQL: `database.schema.name` (schema 기본값: dbo)
9
+ * - PostgreSQL: `schema.name` (database는 connection용)
10
+ */
11
+ export interface QueryDefObjectName {
12
+ database?: string;
13
+ schema?: string;
14
+ name: string;
15
+ }
16
+ /**
17
+ * CUD 쿼리의 OUTPUT 절 정의
18
+ *
19
+ * INSERT/UPDATE/DELETE 후 반환값 정의
20
+ */
21
+ export interface CudOutputDef {
22
+ columns: string[];
23
+ pkColNames: string[];
24
+ aiColName?: string;
25
+ }
26
+ /**
27
+ * SELECT 쿼리 정의
28
+ *
29
+ * @property type - 쿼리 타입 ("select")
30
+ * @property from - FROM 절 (테이블/서브쿼리)
31
+ * @property as - 테이블 별칭
32
+ * @property select - SELECT 절 컬럼 매핑
33
+ * @property distinct - DISTINCT 여부
34
+ * @property top - TOP N (MSSQL)
35
+ * @property lock - 락 여부
36
+ * @property where - WHERE 조건 배열
37
+ * @property joins - JOIN 정의 배열
38
+ * @property orderBy - ORDER BY [컬럼, 방향] 배열
39
+ * @property limit - LIMIT [offset, count]
40
+ * @property groupBy - GROUP BY 표현식 배열
41
+ * @property having - HAVING 조건 배열
42
+ * @property with - 재귀 CTE 정의
43
+ */
44
+ export interface SelectQueryDef {
45
+ type: "select";
46
+ from?: QueryDefObjectName | SelectQueryDef | SelectQueryDef[] | string;
47
+ as: string;
48
+ select?: Record<string, Expr>;
49
+ distinct?: boolean;
50
+ top?: number;
51
+ lock?: boolean;
52
+ where?: WhereExpr[];
53
+ joins?: SelectQueryDefJoin[];
54
+ orderBy?: [Expr, ("ASC" | "DESC")?][];
55
+ limit?: [number, number];
56
+ groupBy?: Expr[];
57
+ having?: WhereExpr[];
58
+ with?: {
59
+ name: string;
60
+ base: SelectQueryDef;
61
+ recursive: SelectQueryDef;
62
+ };
63
+ }
64
+ /**
65
+ * JOIN 쿼리 정의
66
+ *
67
+ * SelectQueryDef 확장 + isSingle 플래그
68
+ */
69
+ export interface SelectQueryDefJoin extends SelectQueryDef {
70
+ /** 단일 결과 여부 (1:1 관계) */
71
+ isSingle?: boolean;
72
+ }
73
+ /**
74
+ * INSERT 쿼리 정의
75
+ *
76
+ * @property records - 삽입할 레코드 배열
77
+ * @property overrideIdentity - IDENTITY_INSERT 활성화 여부
78
+ * @property output - OUTPUT 절 정의
79
+ */
80
+ export interface InsertQueryDef {
81
+ type: "insert";
82
+ table: QueryDefObjectName;
83
+ records: Record<string, ColumnPrimitive>[];
84
+ overrideIdentity?: boolean;
85
+ output?: CudOutputDef;
86
+ }
87
+ /**
88
+ * 조건부 INSERT 쿼리 정의
89
+ *
90
+ * 존재하지 않는 경우에만 삽입
91
+ */
92
+ export interface InsertIfNotExistsQueryDef {
93
+ type: "insertIfNotExists";
94
+ table: QueryDefObjectName;
95
+ record: Record<string, ColumnPrimitive>;
96
+ existsSelectQuery: SelectQueryDef;
97
+ overrideIdentity?: boolean;
98
+ output?: CudOutputDef;
99
+ }
100
+ /**
101
+ * INSERT INTO SELECT 쿼리 정의
102
+ *
103
+ * 서브쿼리 결과를 삽입
104
+ */
105
+ export interface InsertIntoQueryDef {
106
+ type: "insertInto";
107
+ table: QueryDefObjectName;
108
+ recordsSelectQuery: SelectQueryDef;
109
+ overrideIdentity?: boolean;
110
+ output?: CudOutputDef;
111
+ }
112
+ /**
113
+ * UPDATE 쿼리 정의
114
+ *
115
+ * @property record - 업데이트할 컬럼/값 매핑
116
+ * @property joins - UPDATE JOIN (지원 시)
117
+ */
118
+ export interface UpdateQueryDef {
119
+ type: "update";
120
+ table: QueryDefObjectName;
121
+ as: string;
122
+ record: Record<string, Expr>;
123
+ top?: number;
124
+ where?: WhereExpr[];
125
+ joins?: SelectQueryDefJoin[];
126
+ limit?: [number, number];
127
+ output?: CudOutputDef;
128
+ }
129
+ /**
130
+ * DELETE 쿼리 정의
131
+ */
132
+ export interface DeleteQueryDef {
133
+ type: "delete";
134
+ table: QueryDefObjectName;
135
+ as: string;
136
+ top?: number;
137
+ where?: WhereExpr[];
138
+ joins?: SelectQueryDefJoin[];
139
+ limit?: [number, number];
140
+ output?: CudOutputDef;
141
+ }
142
+ /**
143
+ * UPSERT 쿼리 정의
144
+ *
145
+ * INSERT or UPDATE (MERGE 패턴)
146
+ */
147
+ export interface UpsertQueryDef {
148
+ type: "upsert";
149
+ table: QueryDefObjectName;
150
+ existsSelectQuery: SelectQueryDef;
151
+ insertRecord: Record<string, Expr>;
152
+ updateRecord: Record<string, Expr>;
153
+ overrideIdentity?: boolean;
154
+ output?: CudOutputDef;
155
+ }
156
+ /** FK 제약조건 활성화/비활성화 */
157
+ export interface SwitchFkQueryDef {
158
+ type: "switchFk";
159
+ table: QueryDefObjectName;
160
+ switch: "on" | "off";
161
+ }
162
+ /** 스키마 초기화 (모든 객체 삭제) */
163
+ export interface ClearSchemaQueryDef {
164
+ type: "clearSchema";
165
+ database: string;
166
+ schema?: string;
167
+ }
168
+ /** CREATE TABLE */
169
+ export interface CreateTableQueryDef {
170
+ type: "createTable";
171
+ table: QueryDefObjectName;
172
+ columns: {
173
+ name: string;
174
+ dataType: DataType;
175
+ autoIncrement?: boolean;
176
+ nullable?: boolean;
177
+ default?: ColumnPrimitive;
178
+ }[];
179
+ primaryKey?: string[];
180
+ }
181
+ /** DROP TABLE */
182
+ export interface DropTableQueryDef {
183
+ type: "dropTable";
184
+ table: QueryDefObjectName;
185
+ }
186
+ /** RENAME TABLE */
187
+ export interface RenameTableQueryDef {
188
+ type: "renameTable";
189
+ table: QueryDefObjectName;
190
+ newName: string;
191
+ }
192
+ /** TRUNCATE TABLE */
193
+ export interface TruncateQueryDef {
194
+ type: "truncate";
195
+ table: QueryDefObjectName;
196
+ }
197
+ /** ADD COLUMN */
198
+ export interface AddColumnQueryDef {
199
+ type: "addColumn";
200
+ table: QueryDefObjectName;
201
+ column: {
202
+ name: string;
203
+ dataType: DataType;
204
+ autoIncrement?: boolean;
205
+ nullable?: boolean;
206
+ default?: ColumnPrimitive;
207
+ };
208
+ }
209
+ /** DROP COLUMN */
210
+ export interface DropColumnQueryDef {
211
+ type: "dropColumn";
212
+ table: QueryDefObjectName;
213
+ column: string;
214
+ }
215
+ /** MODIFY COLUMN (타입/속성 변경) */
216
+ export interface ModifyColumnQueryDef {
217
+ type: "modifyColumn";
218
+ table: QueryDefObjectName;
219
+ column: {
220
+ name: string;
221
+ dataType: DataType;
222
+ autoIncrement?: boolean;
223
+ nullable?: boolean;
224
+ default?: ColumnPrimitive;
225
+ };
226
+ }
227
+ /** RENAME COLUMN */
228
+ export interface RenameColumnQueryDef {
229
+ type: "renameColumn";
230
+ table: QueryDefObjectName;
231
+ column: string;
232
+ newName: string;
233
+ }
234
+ /** DROP PRIMARY KEY */
235
+ export interface DropPkQueryDef {
236
+ type: "dropPk";
237
+ table: QueryDefObjectName;
238
+ }
239
+ /** ADD PRIMARY KEY */
240
+ export interface AddPkQueryDef {
241
+ type: "addPk";
242
+ table: QueryDefObjectName;
243
+ columns: string[];
244
+ }
245
+ /** ADD FOREIGN KEY */
246
+ export interface AddFkQueryDef {
247
+ type: "addFk";
248
+ table: QueryDefObjectName;
249
+ foreignKey: {
250
+ name: string;
251
+ fkColumns: string[];
252
+ targetTable: QueryDefObjectName;
253
+ targetPkColumns: string[];
254
+ };
255
+ }
256
+ /** DROP FOREIGN KEY */
257
+ export interface DropFkQueryDef {
258
+ type: "dropFk";
259
+ table: QueryDefObjectName;
260
+ foreignKey: string;
261
+ }
262
+ /** CREATE INDEX */
263
+ export interface AddIdxQueryDef {
264
+ type: "addIdx";
265
+ table: QueryDefObjectName;
266
+ index: {
267
+ name: string;
268
+ columns: {
269
+ name: string;
270
+ orderBy: "ASC" | "DESC";
271
+ }[];
272
+ unique?: boolean;
273
+ };
274
+ }
275
+ /** DROP INDEX */
276
+ export interface DropIdxQueryDef {
277
+ type: "dropIdx";
278
+ table: QueryDefObjectName;
279
+ index: string;
280
+ }
281
+ /** CREATE VIEW */
282
+ export interface CreateViewQueryDef {
283
+ type: "createView";
284
+ view: QueryDefObjectName;
285
+ queryDef: SelectQueryDef;
286
+ }
287
+ /** DROP VIEW */
288
+ export interface DropViewQueryDef {
289
+ type: "dropView";
290
+ view: QueryDefObjectName;
291
+ }
292
+ /** CREATE PROCEDURE */
293
+ export interface CreateProcQueryDef {
294
+ type: "createProc";
295
+ procedure: QueryDefObjectName;
296
+ params?: Array<{
297
+ name: string;
298
+ dataType: DataType;
299
+ nullable?: boolean;
300
+ default?: unknown;
301
+ }>;
302
+ returns?: Array<{
303
+ name: string;
304
+ dataType: DataType;
305
+ nullable?: boolean;
306
+ }>;
307
+ query: string;
308
+ }
309
+ /** DROP PROCEDURE */
310
+ export interface DropProcQueryDef {
311
+ type: "dropProc";
312
+ procedure: QueryDefObjectName;
313
+ }
314
+ /** EXECUTE PROCEDURE */
315
+ export interface ExecProcQueryDef {
316
+ type: "execProc";
317
+ procedure: QueryDefObjectName;
318
+ params: Record<string, Expr> | undefined;
319
+ }
320
+ /** 스키마 존재 여부 확인 */
321
+ export interface SchemaExistsQueryDef {
322
+ type: "schemaExists";
323
+ database: string;
324
+ schema?: string;
325
+ }
326
+ /**
327
+ * DDL (Data Definition Language) 타입 상수
328
+ *
329
+ * 트랜잭션 내 DDL 차단 및 DDL 타입 검증에 사용
330
+ * satisfies 키워드로 DdlQueryDef와의 동기화를 컴파일 타임에 검증
331
+ *
332
+ * @remarks
333
+ * switchFk는 DDL이 아니므로 제외 (트랜잭션 내 사용 가능)
334
+ */
335
+ export declare const DDL_TYPES: readonly ["clearSchema", "createTable", "dropTable", "renameTable", "truncate", "addColumn", "dropColumn", "modifyColumn", "renameColumn", "dropPk", "addPk", "addFk", "dropFk", "addIdx", "dropIdx", "createView", "dropView", "createProc", "dropProc"];
336
+ /** DDL 타입 유니언 */
337
+ export type DdlType = (typeof DDL_TYPES)[number];
338
+ /**
339
+ * 모든 쿼리 정의 유니언 타입
340
+ *
341
+ * DML (SELECT/INSERT/UPDATE/DELETE/UPSERT) +
342
+ * DDL (Table/Column/PK/FK/Index/View/Procedure) +
343
+ * Utils (SwitchFk) + Meta (SchemaExists)
344
+ *
345
+ * @see {@link SelectQueryDef} SELECT 쿼리
346
+ * @see {@link InsertQueryDef} INSERT 쿼리
347
+ * @see {@link UpdateQueryDef} UPDATE 쿼리
348
+ * @see {@link DeleteQueryDef} DELETE 쿼리
349
+ */
350
+ export type QueryDef = SelectQueryDef | InsertQueryDef | InsertIfNotExistsQueryDef | InsertIntoQueryDef | UpdateQueryDef | DeleteQueryDef | UpsertQueryDef | ClearSchemaQueryDef | CreateTableQueryDef | DropTableQueryDef | RenameTableQueryDef | TruncateQueryDef | AddColumnQueryDef | DropColumnQueryDef | ModifyColumnQueryDef | RenameColumnQueryDef | DropPkQueryDef | AddPkQueryDef | AddFkQueryDef | DropFkQueryDef | AddIdxQueryDef | DropIdxQueryDef | CreateViewQueryDef | DropViewQueryDef | CreateProcQueryDef | DropProcQueryDef | ExecProcQueryDef | SwitchFkQueryDef | SchemaExistsQueryDef;
351
+ //# sourceMappingURL=query-def.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-def.d.ts","sourceRoot":"","sources":["../../../../../orm-common/src/types/query-def.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import type { ResultMeta } from "../types/db";
2
+ /**
3
+ * DB 쿼리 결과를 ResultMeta를 통해 TypeScript 객체로 변환
4
+ *
5
+ * @param rawResults - DB에서 받은 raw 결과 배열
6
+ * @param meta - 타입 변환 및 JOIN 구조 정보 (필수)
7
+ * @returns 타입 변환 및 중첩화된 결과 배열. 입력이 비거나 유효한 결과가 없으면 undefined
8
+ * @throws 타입 파싱 실패 시 Error
9
+ *
10
+ * @remarks
11
+ * - meta 필수: meta가 없으면 이 함수를 호출할 필요 없음 (입력 = 출력)
12
+ * - async only: 대용량 처리 시 외부 인터럽트를 위해 동기 버전 미제공
13
+ * - browser/node 모두 지원: setTimeout(resolve, 0)으로 yield
14
+ * - 빈 결과 처리: 입력 배열이 비거나, 파싱 후 모든 레코드가 빈 객체인 경우 undefined 반환
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * // 1. 단순 타입 파싱
19
+ * const raw = [{ id: "1", createdAt: "2026-01-07T10:00:00.000Z" }];
20
+ * const meta = { columns: { id: "number", createdAt: "DateTime" }, joins: {} };
21
+ * const result = await parseQueryResult(raw, meta);
22
+ * // [{ id: 1, createdAt: DateTime(...) }]
23
+ *
24
+ * // 2. JOIN 결과 중첩화
25
+ * const raw = [
26
+ * { id: 1, name: "User1", "posts.id": 10, "posts.title": "Post1" },
27
+ * { id: 1, name: "User1", "posts.id": 11, "posts.title": "Post2" },
28
+ * ];
29
+ * const meta = {
30
+ * columns: { id: "number", name: "string", "posts.id": "number", "posts.title": "string" },
31
+ * joins: { posts: { isSingle: false } }
32
+ * };
33
+ * const result = await parseQueryResult(raw, meta);
34
+ * // [{ id: 1, name: "User1", posts: [{ id: 10, title: "Post1" }, { id: 11, title: "Post2" }] }]
35
+ * ```
36
+ */
37
+ export declare function parseQueryResult<T>(rawResults: Record<string, unknown>[], meta: ResultMeta): Promise<T[] | undefined>;
38
+ //# sourceMappingURL=result-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result-parser.d.ts","sourceRoot":"","sources":["../../../../../orm-common/src/utils/result-parser.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAoH9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EACtC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EACrC,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,CAe1B"}
@@ -0,0 +1,44 @@
1
+ import { EventEmitter } from "@simplysm/core-common";
2
+ import type { ColumnMeta, IsolationLevel } from "@simplysm/orm-common";
3
+ import { type DbConn, type MssqlDbConnConfig } from "../types/db-conn";
4
+ /**
5
+ * MSSQL 데이터베이스 연결 클래스
6
+ *
7
+ * tedious 라이브러리를 사용하여 MSSQL/Azure SQL 연결을 관리합니다.
8
+ */
9
+ export declare class MssqlDbConn extends EventEmitter<{
10
+ close: void;
11
+ }> implements DbConn {
12
+ private readonly _tedious;
13
+ readonly config: MssqlDbConnConfig;
14
+ private readonly _timeout;
15
+ private _conn?;
16
+ private _connTimeout?;
17
+ private _requests;
18
+ isConnected: boolean;
19
+ isOnTransaction: boolean;
20
+ constructor(_tedious: typeof import("tedious"), config: MssqlDbConnConfig);
21
+ connect(): Promise<void>;
22
+ close(): Promise<void>;
23
+ beginTransaction(isolationLevel?: IsolationLevel): Promise<void>;
24
+ commitTransaction(): Promise<void>;
25
+ rollbackTransaction(): Promise<void>;
26
+ execute(queries: string[]): Promise<unknown[][]>;
27
+ executeParametrized(query: string, params?: unknown[]): Promise<unknown[][]>;
28
+ bulkInsert(tableName: string, columnMetas: Record<string, ColumnMeta>, records: Record<string, unknown>[]): Promise<void>;
29
+ private _assertConnected;
30
+ private _parseRowsToRecords;
31
+ private _resetState;
32
+ private _stopTimeout;
33
+ private _startTimeout;
34
+ private _convertColumnMetaToTediousBulkColumnDef;
35
+ private _convertDataTypeToTediousBulkColumnType;
36
+ /**
37
+ * 값의 타입을 추론하여 Tedious 데이터 타입 반환
38
+ *
39
+ * @param value - 타입을 추론할 값 (null/undefined 전달 시 오류 발생)
40
+ * @throws null/undefined가 전달되면 오류 발생
41
+ */
42
+ private _guessTediousType;
43
+ }
44
+ //# sourceMappingURL=mssql-db-conn.d.ts.map
@@ -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"}
@@ -0,0 +1,38 @@
1
+ import { EventEmitter } from "@simplysm/core-common";
2
+ import type { ColumnMeta, IsolationLevel } from "@simplysm/orm-common";
3
+ import { type DbConn, type MysqlDbConnConfig } from "../types/db-conn";
4
+ /**
5
+ * MySQL 데이터베이스 연결 클래스
6
+ *
7
+ * mysql2/promise 라이브러리를 사용하여 MySQL 연결을 관리합니다.
8
+ */
9
+ export declare class MysqlDbConn extends EventEmitter<{
10
+ close: void;
11
+ }> implements DbConn {
12
+ private readonly _mysql2;
13
+ readonly config: MysqlDbConnConfig;
14
+ private static readonly _ROOT_USER;
15
+ private readonly _timeout;
16
+ private _conn?;
17
+ private _connTimeout?;
18
+ isConnected: boolean;
19
+ isOnTransaction: boolean;
20
+ constructor(_mysql2: typeof import("mysql2/promise"), config: MysqlDbConnConfig);
21
+ connect(): Promise<void>;
22
+ close(): Promise<void>;
23
+ beginTransaction(isolationLevel?: IsolationLevel): Promise<void>;
24
+ commitTransaction(): Promise<void>;
25
+ rollbackTransaction(): Promise<void>;
26
+ execute(queries: string[]): Promise<unknown[][]>;
27
+ executeParametrized(query: string, params?: unknown[]): Promise<unknown[][]>;
28
+ bulkInsert(tableName: string, columnMetas: Record<string, ColumnMeta>, records: Record<string, unknown>[]): Promise<void>;
29
+ /**
30
+ * MySQL LOAD DATA INFILE용 값 이스케이프
31
+ */
32
+ private _escapeForCsv;
33
+ private _assertConnected;
34
+ private _resetState;
35
+ private _stopTimeout;
36
+ private _startTimeout;
37
+ }
38
+ //# sourceMappingURL=mysql-db-conn.d.ts.map
@@ -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"}
@@ -0,0 +1,39 @@
1
+ import { EventEmitter } from "@simplysm/core-common";
2
+ import type { ColumnMeta, IsolationLevel } from "@simplysm/orm-common";
3
+ import { type DbConn, type PostgresqlDbConnConfig } from "../types/db-conn";
4
+ import type { CopyStreamQuery } from "pg-copy-streams";
5
+ /**
6
+ * PostgreSQL 데이터베이스 연결 클래스
7
+ *
8
+ * pg 라이브러리를 사용하여 PostgreSQL 연결을 관리합니다.
9
+ */
10
+ export declare class PostgresqlDbConn extends EventEmitter<{
11
+ close: void;
12
+ }> implements DbConn {
13
+ private readonly _pg;
14
+ private readonly _pgCopyFrom;
15
+ readonly config: PostgresqlDbConnConfig;
16
+ private readonly _timeout;
17
+ private _client?;
18
+ private _connTimeout?;
19
+ isConnected: boolean;
20
+ isOnTransaction: boolean;
21
+ constructor(_pg: typeof import("pg"), _pgCopyFrom: (queryText: string) => CopyStreamQuery, config: PostgresqlDbConnConfig);
22
+ connect(): Promise<void>;
23
+ close(): Promise<void>;
24
+ beginTransaction(isolationLevel?: IsolationLevel): Promise<void>;
25
+ commitTransaction(): Promise<void>;
26
+ rollbackTransaction(): Promise<void>;
27
+ execute(queries: string[]): Promise<unknown[][]>;
28
+ executeParametrized(query: string, params?: unknown[]): Promise<unknown[][]>;
29
+ bulkInsert(tableName: string, columnMetas: Record<string, ColumnMeta>, records: Record<string, unknown>[]): Promise<void>;
30
+ /**
31
+ * PostgreSQL COPY CSV용 값 이스케이프
32
+ */
33
+ private _escapeForCsv;
34
+ private _assertConnected;
35
+ private _resetState;
36
+ private _stopTimeout;
37
+ private _startTimeout;
38
+ }
39
+ //# sourceMappingURL=postgresql-db-conn.d.ts.map
@@ -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"}
@@ -0,0 +1,25 @@
1
+ import type { DbConn, DbConnConfig } from "./types/db-conn";
2
+ /**
3
+ * DB 연결 팩토리
4
+ *
5
+ * 데이터베이스 연결 인스턴스를 생성하고 풀링을 관리한다.
6
+ * MSSQL, MySQL, PostgreSQL을 지원한다.
7
+ */
8
+ export declare class DbConnFactory {
9
+ private static readonly _poolMap;
10
+ /**
11
+ * DB 연결 생성
12
+ *
13
+ * 커넥션 풀에서 연결을 획득하여 반환한다.
14
+ * 풀이 없는 경우 새로 생성한다.
15
+ *
16
+ * @param config - 데이터베이스 연결 설정
17
+ * @returns 풀링된 DB 연결 객체
18
+ */
19
+ static create(config: DbConnConfig): Promise<DbConn>;
20
+ private static _getOrCreatePool;
21
+ private static _createRawConnection;
22
+ private static readonly _modules;
23
+ private static _ensureModule;
24
+ }
25
+ //# sourceMappingURL=db-conn-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db-conn-factory.d.ts","sourceRoot":"","sources":["../../../src/db-conn-factory.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAM5D;;;;;GAKG;AACH,qBAAa,aAAa;IAExB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAmC;IAEnE;;;;;;;;OAQG;IACH,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAQpD,OAAO,CAAC,MAAM,CAAC,gBAAgB;mBAuCV,oBAAoB;IAgBzC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAKzB;mBAEc,aAAa;CAgBnC"}
@@ -0,0 +1,9 @@
1
+ export * from "./types/db-conn";
2
+ export * from "./connections/mssql-db-conn";
3
+ export * from "./connections/mysql-db-conn";
4
+ export * from "./connections/postgresql-db-conn";
5
+ export * from "./db-conn-factory";
6
+ export * from "./node-db-context-executor";
7
+ export * from "./pooled-db-conn";
8
+ export * from "./sd-orm";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AACA,cAAc,iBAAiB,CAAC;AAGhC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AAGjD,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC"}
@@ -0,0 +1,77 @@
1
+ import type { DbContextExecutor, IsolationLevel, QueryDef, ResultMeta, ColumnMeta, DataRecord } from "@simplysm/orm-common";
2
+ import type { DbConnConfig } from "./types/db-conn";
3
+ /**
4
+ * Node.js 환경용 DbContextExecutor
5
+ *
6
+ * DbContext에서 사용하는 실행기로, 실제 DB 연결을 담당한다.
7
+ */
8
+ export declare class NodeDbContextExecutor implements DbContextExecutor {
9
+ private readonly _config;
10
+ private _conn?;
11
+ private readonly _dialect;
12
+ constructor(_config: DbConnConfig);
13
+ /**
14
+ * DB 연결 수립
15
+ *
16
+ * 커넥션 풀에서 연결을 획득하고 연결 상태를 활성화한다.
17
+ */
18
+ connect(): Promise<void>;
19
+ /**
20
+ * DB 연결 종료
21
+ *
22
+ * 커넥션 풀에 연결을 반환한다.
23
+ *
24
+ * @throws {Error} 연결되지 않은 상태일 때
25
+ */
26
+ close(): Promise<void>;
27
+ /**
28
+ * 트랜잭션 시작
29
+ *
30
+ * @param isolationLevel - 트랜잭션 격리 수준
31
+ * @throws {Error} 연결되지 않은 상태일 때
32
+ */
33
+ beginTransaction(isolationLevel?: IsolationLevel): Promise<void>;
34
+ /**
35
+ * 트랜잭션 커밋
36
+ *
37
+ * @throws {Error} 연결되지 않은 상태일 때
38
+ */
39
+ commitTransaction(): Promise<void>;
40
+ /**
41
+ * 트랜잭션 롤백
42
+ *
43
+ * @throws {Error} 연결되지 않은 상태일 때
44
+ */
45
+ rollbackTransaction(): Promise<void>;
46
+ /**
47
+ * 파라미터화된 쿼리 실행
48
+ *
49
+ * @param query - SQL 쿼리 문자열
50
+ * @param params - 쿼리 파라미터 배열
51
+ * @returns 쿼리 결과 배열
52
+ * @throws {Error} 연결되지 않은 상태일 때
53
+ */
54
+ executeParametrized(query: string, params?: unknown[]): Promise<unknown[][]>;
55
+ /**
56
+ * 대량 데이터 삽입 (네이티브 벌크 API 사용)
57
+ *
58
+ * @param tableName - 대상 테이블명
59
+ * @param columnMetas - 컬럼 메타데이터
60
+ * @param records - 삽입할 레코드 배열
61
+ * @throws {Error} 연결되지 않은 상태일 때
62
+ */
63
+ bulkInsert(tableName: string, columnMetas: Record<string, ColumnMeta>, records: DataRecord[]): Promise<void>;
64
+ /**
65
+ * QueryDef 배열 실행
66
+ *
67
+ * QueryDef를 SQL로 변환하여 실행하고, ResultMeta를 사용하여 결과를 파싱한다.
68
+ *
69
+ * @param defs - 실행할 QueryDef 배열
70
+ * @param resultMetas - 결과 파싱용 메타데이터 배열 (타입 변환에 사용)
71
+ * @returns 각 QueryDef의 실행 결과 배열
72
+ * @throws {Error} 연결되지 않은 상태일 때
73
+ */
74
+ executeDefs<T = DataRecord>(defs: QueryDef[], resultMetas?: (ResultMeta | undefined)[]): Promise<T[][]>;
75
+ private _requireConn;
76
+ }
77
+ //# sourceMappingURL=node-db-context-executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-db-context-executor.d.ts","sourceRoot":"","sources":["../../../src/node-db-context-executor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,QAAQ,EACR,UAAU,EAEV,UAAU,EACV,UAAU,EACX,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAU,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAI5D;;;;GAIG;AACH,qBAAa,qBAAsB,YAAW,iBAAiB;IAIjD,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,OAAO,CAAC,KAAK,CAAC,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;gBAEN,OAAO,EAAE,YAAY;IAIlD;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9B;;;;;;OAMG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B;;;;;OAKG;IACG,gBAAgB,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtE;;;;OAIG;IACG,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAKxC;;;;OAIG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAK1C;;;;;;;OAOG;IACG,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;IAKlF;;;;;;;OAOG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlH;;;;;;;;;OASG;IACG,WAAW,CAAC,CAAC,GAAG,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,WAAW,CAAC,EAAE,CAAC,UAAU,GAAG,SAAS,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC;IAqC7G,OAAO,CAAC,YAAY;CAMrB"}