@simplysm/orm-node 13.0.0-beta.6

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 (172) hide show
  1. package/.cache/typecheck-node.tsbuildinfo +1 -0
  2. package/README.md +418 -0
  3. package/dist/connections/mssql-db-conn.js +386 -0
  4. package/dist/connections/mssql-db-conn.js.map +7 -0
  5. package/dist/connections/mysql-db-conn.js +227 -0
  6. package/dist/connections/mysql-db-conn.js.map +7 -0
  7. package/dist/connections/postgresql-db-conn.js +191 -0
  8. package/dist/connections/postgresql-db-conn.js.map +7 -0
  9. package/dist/core-common/src/common.types.d.ts +74 -0
  10. package/dist/core-common/src/common.types.d.ts.map +1 -0
  11. package/dist/core-common/src/env.d.ts +6 -0
  12. package/dist/core-common/src/env.d.ts.map +1 -0
  13. package/dist/core-common/src/errors/argument-error.d.ts +25 -0
  14. package/dist/core-common/src/errors/argument-error.d.ts.map +1 -0
  15. package/dist/core-common/src/errors/not-implemented-error.d.ts +29 -0
  16. package/dist/core-common/src/errors/not-implemented-error.d.ts.map +1 -0
  17. package/dist/core-common/src/errors/sd-error.d.ts +27 -0
  18. package/dist/core-common/src/errors/sd-error.d.ts.map +1 -0
  19. package/dist/core-common/src/errors/timeout-error.d.ts +31 -0
  20. package/dist/core-common/src/errors/timeout-error.d.ts.map +1 -0
  21. package/dist/core-common/src/extensions/arr-ext.d.ts +15 -0
  22. package/dist/core-common/src/extensions/arr-ext.d.ts.map +1 -0
  23. package/dist/core-common/src/extensions/arr-ext.helpers.d.ts +19 -0
  24. package/dist/core-common/src/extensions/arr-ext.helpers.d.ts.map +1 -0
  25. package/dist/core-common/src/extensions/arr-ext.types.d.ts +215 -0
  26. package/dist/core-common/src/extensions/arr-ext.types.d.ts.map +1 -0
  27. package/dist/core-common/src/extensions/map-ext.d.ts +57 -0
  28. package/dist/core-common/src/extensions/map-ext.d.ts.map +1 -0
  29. package/dist/core-common/src/extensions/set-ext.d.ts +36 -0
  30. package/dist/core-common/src/extensions/set-ext.d.ts.map +1 -0
  31. package/dist/core-common/src/features/debounce-queue.d.ts +53 -0
  32. package/dist/core-common/src/features/debounce-queue.d.ts.map +1 -0
  33. package/dist/core-common/src/features/event-emitter.d.ts +66 -0
  34. package/dist/core-common/src/features/event-emitter.d.ts.map +1 -0
  35. package/dist/core-common/src/features/serial-queue.d.ts +47 -0
  36. package/dist/core-common/src/features/serial-queue.d.ts.map +1 -0
  37. package/dist/core-common/src/index.d.ts +32 -0
  38. package/dist/core-common/src/index.d.ts.map +1 -0
  39. package/dist/core-common/src/types/date-only.d.ts +152 -0
  40. package/dist/core-common/src/types/date-only.d.ts.map +1 -0
  41. package/dist/core-common/src/types/date-time.d.ts +96 -0
  42. package/dist/core-common/src/types/date-time.d.ts.map +1 -0
  43. package/dist/core-common/src/types/lazy-gc-map.d.ts +80 -0
  44. package/dist/core-common/src/types/lazy-gc-map.d.ts.map +1 -0
  45. package/dist/core-common/src/types/time.d.ts +68 -0
  46. package/dist/core-common/src/types/time.d.ts.map +1 -0
  47. package/dist/core-common/src/types/uuid.d.ts +35 -0
  48. package/dist/core-common/src/types/uuid.d.ts.map +1 -0
  49. package/dist/core-common/src/utils/bytes.d.ts +51 -0
  50. package/dist/core-common/src/utils/bytes.d.ts.map +1 -0
  51. package/dist/core-common/src/utils/date-format.d.ts +90 -0
  52. package/dist/core-common/src/utils/date-format.d.ts.map +1 -0
  53. package/dist/core-common/src/utils/json.d.ts +34 -0
  54. package/dist/core-common/src/utils/json.d.ts.map +1 -0
  55. package/dist/core-common/src/utils/num.d.ts +60 -0
  56. package/dist/core-common/src/utils/num.d.ts.map +1 -0
  57. package/dist/core-common/src/utils/obj.d.ts +258 -0
  58. package/dist/core-common/src/utils/obj.d.ts.map +1 -0
  59. package/dist/core-common/src/utils/path.d.ts +23 -0
  60. package/dist/core-common/src/utils/path.d.ts.map +1 -0
  61. package/dist/core-common/src/utils/primitive.d.ts +18 -0
  62. package/dist/core-common/src/utils/primitive.d.ts.map +1 -0
  63. package/dist/core-common/src/utils/str.d.ts +103 -0
  64. package/dist/core-common/src/utils/str.d.ts.map +1 -0
  65. package/dist/core-common/src/utils/template-strings.d.ts +84 -0
  66. package/dist/core-common/src/utils/template-strings.d.ts.map +1 -0
  67. package/dist/core-common/src/utils/transferable.d.ts +47 -0
  68. package/dist/core-common/src/utils/transferable.d.ts.map +1 -0
  69. package/dist/core-common/src/utils/wait.d.ts +19 -0
  70. package/dist/core-common/src/utils/wait.d.ts.map +1 -0
  71. package/dist/core-common/src/utils/xml.d.ts +36 -0
  72. package/dist/core-common/src/utils/xml.d.ts.map +1 -0
  73. package/dist/core-common/src/zip/sd-zip.d.ts +80 -0
  74. package/dist/core-common/src/zip/sd-zip.d.ts.map +1 -0
  75. package/dist/db-conn-factory.js +88 -0
  76. package/dist/db-conn-factory.js.map +7 -0
  77. package/dist/index.js +9 -0
  78. package/dist/index.js.map +7 -0
  79. package/dist/node-db-context-executor.js +129 -0
  80. package/dist/node-db-context-executor.js.map +7 -0
  81. package/dist/orm-common/src/db-context.d.ts +669 -0
  82. package/dist/orm-common/src/db-context.d.ts.map +1 -0
  83. package/dist/orm-common/src/errors/db-transaction-error.d.ts +51 -0
  84. package/dist/orm-common/src/errors/db-transaction-error.d.ts.map +1 -0
  85. package/dist/orm-common/src/exec/executable.d.ts +79 -0
  86. package/dist/orm-common/src/exec/executable.d.ts.map +1 -0
  87. package/dist/orm-common/src/exec/queryable.d.ts +708 -0
  88. package/dist/orm-common/src/exec/queryable.d.ts.map +1 -0
  89. package/dist/orm-common/src/exec/search-parser.d.ts +72 -0
  90. package/dist/orm-common/src/exec/search-parser.d.ts.map +1 -0
  91. package/dist/orm-common/src/expr/expr-unit.d.ts +25 -0
  92. package/dist/orm-common/src/expr/expr-unit.d.ts.map +1 -0
  93. package/dist/orm-common/src/expr/expr.d.ts +1369 -0
  94. package/dist/orm-common/src/expr/expr.d.ts.map +1 -0
  95. package/dist/orm-common/src/index.d.ts +32 -0
  96. package/dist/orm-common/src/index.d.ts.map +1 -0
  97. package/dist/orm-common/src/models/system-migration.d.ts +10 -0
  98. package/dist/orm-common/src/models/system-migration.d.ts.map +1 -0
  99. package/dist/orm-common/src/query-builder/base/expr-renderer-base.d.ts +95 -0
  100. package/dist/orm-common/src/query-builder/base/expr-renderer-base.d.ts.map +1 -0
  101. package/dist/orm-common/src/query-builder/base/query-builder-base.d.ts +66 -0
  102. package/dist/orm-common/src/query-builder/base/query-builder-base.d.ts.map +1 -0
  103. package/dist/orm-common/src/query-builder/mssql/mssql-expr-renderer.d.ts +84 -0
  104. package/dist/orm-common/src/query-builder/mssql/mssql-expr-renderer.d.ts.map +1 -0
  105. package/dist/orm-common/src/query-builder/mssql/mssql-query-builder.d.ts +45 -0
  106. package/dist/orm-common/src/query-builder/mssql/mssql-query-builder.d.ts.map +1 -0
  107. package/dist/orm-common/src/query-builder/mysql/mysql-expr-renderer.d.ts +84 -0
  108. package/dist/orm-common/src/query-builder/mysql/mysql-expr-renderer.d.ts.map +1 -0
  109. package/dist/orm-common/src/query-builder/mysql/mysql-query-builder.d.ts +54 -0
  110. package/dist/orm-common/src/query-builder/mysql/mysql-query-builder.d.ts.map +1 -0
  111. package/dist/orm-common/src/query-builder/postgresql/postgresql-expr-renderer.d.ts +84 -0
  112. package/dist/orm-common/src/query-builder/postgresql/postgresql-expr-renderer.d.ts.map +1 -0
  113. package/dist/orm-common/src/query-builder/postgresql/postgresql-query-builder.d.ts +52 -0
  114. package/dist/orm-common/src/query-builder/postgresql/postgresql-query-builder.d.ts.map +1 -0
  115. package/dist/orm-common/src/query-builder/query-builder.d.ts +7 -0
  116. package/dist/orm-common/src/query-builder/query-builder.d.ts.map +1 -0
  117. package/dist/orm-common/src/schema/factory/column-builder.d.ts +394 -0
  118. package/dist/orm-common/src/schema/factory/column-builder.d.ts.map +1 -0
  119. package/dist/orm-common/src/schema/factory/index-builder.d.ts +151 -0
  120. package/dist/orm-common/src/schema/factory/index-builder.d.ts.map +1 -0
  121. package/dist/orm-common/src/schema/factory/relation-builder.d.ts +337 -0
  122. package/dist/orm-common/src/schema/factory/relation-builder.d.ts.map +1 -0
  123. package/dist/orm-common/src/schema/procedure-builder.d.ts +202 -0
  124. package/dist/orm-common/src/schema/procedure-builder.d.ts.map +1 -0
  125. package/dist/orm-common/src/schema/table-builder.d.ts +259 -0
  126. package/dist/orm-common/src/schema/table-builder.d.ts.map +1 -0
  127. package/dist/orm-common/src/schema/view-builder.d.ts +183 -0
  128. package/dist/orm-common/src/schema/view-builder.d.ts.map +1 -0
  129. package/dist/orm-common/src/types/column.d.ts +172 -0
  130. package/dist/orm-common/src/types/column.d.ts.map +1 -0
  131. package/dist/orm-common/src/types/db.d.ts +175 -0
  132. package/dist/orm-common/src/types/db.d.ts.map +1 -0
  133. package/dist/orm-common/src/types/expr.d.ts +474 -0
  134. package/dist/orm-common/src/types/expr.d.ts.map +1 -0
  135. package/dist/orm-common/src/types/query-def.d.ts +351 -0
  136. package/dist/orm-common/src/types/query-def.d.ts.map +1 -0
  137. package/dist/orm-common/src/utils/result-parser.d.ts +38 -0
  138. package/dist/orm-common/src/utils/result-parser.d.ts.map +1 -0
  139. package/dist/orm-node/src/connections/mssql-db-conn.d.ts +44 -0
  140. package/dist/orm-node/src/connections/mssql-db-conn.d.ts.map +1 -0
  141. package/dist/orm-node/src/connections/mysql-db-conn.d.ts +38 -0
  142. package/dist/orm-node/src/connections/mysql-db-conn.d.ts.map +1 -0
  143. package/dist/orm-node/src/connections/postgresql-db-conn.d.ts +39 -0
  144. package/dist/orm-node/src/connections/postgresql-db-conn.d.ts.map +1 -0
  145. package/dist/orm-node/src/db-conn-factory.d.ts +25 -0
  146. package/dist/orm-node/src/db-conn-factory.d.ts.map +1 -0
  147. package/dist/orm-node/src/index.d.ts +9 -0
  148. package/dist/orm-node/src/index.d.ts.map +1 -0
  149. package/dist/orm-node/src/node-db-context-executor.d.ts +77 -0
  150. package/dist/orm-node/src/node-db-context-executor.d.ts.map +1 -0
  151. package/dist/orm-node/src/pooled-db-conn.d.ts +79 -0
  152. package/dist/orm-node/src/pooled-db-conn.d.ts.map +1 -0
  153. package/dist/orm-node/src/sd-orm.d.ts +78 -0
  154. package/dist/orm-node/src/sd-orm.d.ts.map +1 -0
  155. package/dist/orm-node/src/types/db-conn.d.ts +159 -0
  156. package/dist/orm-node/src/types/db-conn.d.ts.map +1 -0
  157. package/dist/pooled-db-conn.js +134 -0
  158. package/dist/pooled-db-conn.js.map +7 -0
  159. package/dist/sd-orm.js +44 -0
  160. package/dist/sd-orm.js.map +7 -0
  161. package/dist/types/db-conn.js +17 -0
  162. package/dist/types/db-conn.js.map +7 -0
  163. package/package.json +50 -0
  164. package/src/connections/mssql-db-conn.ts +483 -0
  165. package/src/connections/mysql-db-conn.ts +299 -0
  166. package/src/connections/postgresql-db-conn.ts +254 -0
  167. package/src/db-conn-factory.ts +114 -0
  168. package/src/index.ts +13 -0
  169. package/src/node-db-context-executor.ts +162 -0
  170. package/src/pooled-db-conn.ts +175 -0
  171. package/src/sd-orm.ts +102 -0
  172. package/src/types/db-conn.ts +196 -0
@@ -0,0 +1,172 @@
1
+ import { DateOnly, DateTime, Time, Uuid, type Bytes } from "@simplysm/core-common";
2
+ /**
3
+ * SQL 데이터 타입 정의
4
+ *
5
+ * DBMS별 매핑:
6
+ * - `int`: INT (4 bytes)
7
+ * - `bigint`: BIGINT (8 bytes)
8
+ * - `float`: FLOAT/REAL (4 bytes)
9
+ * - `double`: DOUBLE/FLOAT (8 bytes)
10
+ * - `decimal`: DECIMAL(precision, scale)
11
+ * - `varchar`: VARCHAR(length)
12
+ * - `char`: CHAR(length)
13
+ * - `text`: TEXT/LONGTEXT
14
+ * - `binary`: LONGBLOB/VARBINARY(MAX)/BYTEA
15
+ * - `boolean`: TINYINT(1)/BIT/BOOLEAN
16
+ * - `datetime`: DATETIME
17
+ * - `date`: DATE
18
+ * - `time`: TIME
19
+ * - `uuid`: BINARY(16)/UNIQUEIDENTIFIER/UUID
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * const intType: DataType = { type: "int" };
24
+ * const decimalType: DataType = { type: "decimal", precision: 10, scale: 2 };
25
+ * const varcharType: DataType = { type: "varchar", length: 100 };
26
+ * ```
27
+ */
28
+ export type DataType = {
29
+ type: "int";
30
+ } | {
31
+ type: "bigint";
32
+ } | {
33
+ type: "float";
34
+ } | {
35
+ type: "double";
36
+ } | {
37
+ type: "decimal";
38
+ precision: number;
39
+ scale?: number;
40
+ } | {
41
+ type: "varchar";
42
+ length: number;
43
+ } | {
44
+ type: "char";
45
+ length: number;
46
+ } | {
47
+ type: "text";
48
+ } | {
49
+ type: "binary";
50
+ } | {
51
+ type: "boolean";
52
+ } | {
53
+ type: "datetime";
54
+ } | {
55
+ type: "date";
56
+ } | {
57
+ type: "time";
58
+ } | {
59
+ type: "uuid";
60
+ };
61
+ /**
62
+ * 컬럼 프리미티브 타입 매핑
63
+ *
64
+ * TypeScript 타입명(문자열) → 실제 TypeScript 타입 매핑
65
+ *
66
+ * @example
67
+ * ```typescript
68
+ * type StringType = ColumnPrimitiveMap["string"]; // string
69
+ * type DateTimeType = ColumnPrimitiveMap["DateTime"]; // DateTime
70
+ * ```
71
+ */
72
+ export type ColumnPrimitiveMap = {
73
+ string: string;
74
+ number: number;
75
+ boolean: boolean;
76
+ DateTime: DateTime;
77
+ DateOnly: DateOnly;
78
+ Time: Time;
79
+ Uuid: Uuid;
80
+ Bytes: Bytes;
81
+ };
82
+ /**
83
+ * 컬럼 프리미티브 타입명 (문자열)
84
+ *
85
+ * @example
86
+ * ```typescript
87
+ * const typeStr: ColumnPrimitiveStr = "string"; // OK
88
+ * const typeStr2: ColumnPrimitiveStr = "invalid"; // Error
89
+ * ```
90
+ */
91
+ export type ColumnPrimitiveStr = keyof ColumnPrimitiveMap;
92
+ /**
93
+ * 컬럼에 저장 가능한 모든 프리미티브 타입
94
+ *
95
+ * undefined는 NULL을 나타냄
96
+ */
97
+ export type ColumnPrimitive = ColumnPrimitiveMap[ColumnPrimitiveStr] | undefined;
98
+ /**
99
+ * SQL DataType → TypeScript 타입명 매핑
100
+ *
101
+ * @example
102
+ * ```typescript
103
+ * const tsType = dataTypeStrToColumnPrimitiveStr["int"]; // "number"
104
+ * const tsType2 = dataTypeStrToColumnPrimitiveStr["datetime"]; // "DateTime"
105
+ * ```
106
+ */
107
+ export declare const dataTypeStrToColumnPrimitiveStr: {
108
+ int: "number";
109
+ bigint: "number";
110
+ float: "number";
111
+ double: "number";
112
+ decimal: "number";
113
+ varchar: "string";
114
+ char: "string";
115
+ text: "string";
116
+ binary: "Bytes";
117
+ boolean: "boolean";
118
+ datetime: "DateTime";
119
+ date: "DateOnly";
120
+ time: "Time";
121
+ uuid: "Uuid";
122
+ };
123
+ /**
124
+ * DataType에서 TypeScript 타입 추론
125
+ *
126
+ * @template T - DataType
127
+ *
128
+ * @example
129
+ * ```typescript
130
+ * type IntType = InferColumnPrimitiveFromDataType<{ type: "int" }>; // number
131
+ * type VarcharType = InferColumnPrimitiveFromDataType<{ type: "varchar"; length: 100 }>; // string
132
+ * ```
133
+ */
134
+ export type InferColumnPrimitiveFromDataType<T extends DataType> = ColumnPrimitiveMap[(typeof dataTypeStrToColumnPrimitiveStr)[T["type"]]];
135
+ /**
136
+ * 런타임 값에서 ColumnPrimitiveStr 추론
137
+ *
138
+ * @param value - 컬럼 값
139
+ * @returns ColumnPrimitiveStr 타입명
140
+ * @throws 알 수 없는 값 타입인 경우
141
+ *
142
+ * @example
143
+ * ```typescript
144
+ * inferColumnPrimitiveStr("hello"); // "string"
145
+ * inferColumnPrimitiveStr(123); // "number"
146
+ * inferColumnPrimitiveStr(new DateTime()); // "DateTime"
147
+ * ```
148
+ */
149
+ export declare function inferColumnPrimitiveStr(value: ColumnPrimitive): ColumnPrimitiveStr;
150
+ /**
151
+ * 컬럼 메타데이터
152
+ *
153
+ * ColumnBuilder에서 생성되어 TableBuilder에 전달
154
+ *
155
+ * @property type - TypeScript 타입명 (ColumnPrimitiveStr)
156
+ * @property dataType - SQL 데이터 타입
157
+ * @property autoIncrement - 자동 증가 여부
158
+ * @property nullable - NULL 허용 여부
159
+ * @property default - 기본값
160
+ * @property description - 컬럼 설명 (DDL 주석)
161
+ *
162
+ * @see {@link ColumnBuilder} 컬럼 빌더
163
+ */
164
+ export interface ColumnMeta {
165
+ type: ColumnPrimitiveStr;
166
+ dataType: DataType;
167
+ autoIncrement?: boolean;
168
+ nullable?: boolean;
169
+ default?: ColumnPrimitive;
170
+ description?: string;
171
+ }
172
+ //# sourceMappingURL=column.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column.d.ts","sourceRoot":"","sources":["../../../../../orm-common/src/types/column.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAMnF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,MAAM,QAAQ,GAChB;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,GACf;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAMrB;;;;;;;;;;GAUG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,kBAAkB,CAAC;AAE1D;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,GAAG,SAAS,CAAC;AAMjF;;;;;;;;GAQG;AACH,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;CAe3C,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,MAAM,gCAAgC,CAAC,CAAC,SAAS,QAAQ,IAC7D,kBAAkB,CAAC,CAAC,OAAO,+BAA+B,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAE1E;;;;;;;;;;;;;GAaG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,eAAe,GAAG,kBAAkB,CAUlF;AAMD;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,kBAAkB,CAAC;IACzB,QAAQ,EAAE,QAAQ,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB"}
@@ -0,0 +1,175 @@
1
+ import type { ColumnPrimitive, ColumnPrimitiveStr } from "./column";
2
+ import type { QueryDef } from "./query-def";
3
+ import type { DbContext } from "../db-context";
4
+ /**
5
+ * 지원하는 데이터베이스 방언
6
+ *
7
+ * - `mysql`: MySQL 8.0.14+
8
+ * - `mssql`: Microsoft SQL Server 2012+
9
+ * - `postgresql`: PostgreSQL 9.0+
10
+ */
11
+ export type Dialect = "mysql" | "mssql" | "postgresql";
12
+ /**
13
+ * 지원하는 모든 데이터베이스 방언 목록
14
+ *
15
+ * 테스트에서 dialect별 검증 시 사용
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * it.each(dialects)("[%s] SQL 검증", (dialect) => {
20
+ * const builder = createQueryBuilder(dialect);
21
+ * expect(builder.build(def)).toMatchSql(expected[dialect]);
22
+ * });
23
+ * ```
24
+ */
25
+ export declare const dialects: Dialect[];
26
+ /**
27
+ * QueryBuilder.build() 반환 타입
28
+ *
29
+ * 빌드된 SQL 문자열과 다중 결과셋 처리를 위한 메타데이터
30
+ *
31
+ * @property sql - 빌드된 SQL 문자열
32
+ * @property resultSetIndex - 결과를 가져올 결과셋 인덱스 (기본: 0)
33
+ * - MySQL INSERT with OUTPUT: 1 (INSERT + SELECT 중 SELECT)
34
+ * @property resultSetStride - 다중 결과에서 N번째마다 결과셋 추출
35
+ * - 예: index=1, stride=2 → 1, 3, 5, 7... 의 결과셋 반환
36
+ * - MySQL 다중 INSERT: INSERT;SELECT; × N → 1, 3, 5...
37
+ */
38
+ export interface QueryBuildResult {
39
+ sql: string;
40
+ resultSetIndex?: number;
41
+ resultSetStride?: number;
42
+ }
43
+ /**
44
+ * 트랜잭션 격리 수준
45
+ *
46
+ * - `READ_UNCOMMITTED`: 커밋되지 않은 데이터 읽기 가능 (Dirty Read)
47
+ * - `READ_COMMITTED`: 커밋된 데이터만 읽기 (기본값)
48
+ * - `REPEATABLE_READ`: 트랜잭션 내 동일 쿼리 동일 결과 보장
49
+ * - `SERIALIZABLE`: 완전 직렬화 (가장 엄격)
50
+ */
51
+ export type IsolationLevel = "READ_UNCOMMITTED" | "READ_COMMITTED" | "REPEATABLE_READ" | "SERIALIZABLE";
52
+ /**
53
+ * 쿼리 결과 데이터 레코드 타입
54
+ *
55
+ * 재귀적 구조로 중첩 관계(include) 결과 표현
56
+ *
57
+ * @example
58
+ * ```typescript
59
+ * // 단순 레코드
60
+ * type User = { id: number; name: string; }
61
+ *
62
+ * // 중첩 관계 포함
63
+ * type UserWithPosts = {
64
+ * id: number;
65
+ * name: string;
66
+ * posts: { id: number; title: string; }[] // 1:N 관계
67
+ * company: { id: number; name: string; } // N:1 관계
68
+ * }
69
+ * ```
70
+ */
71
+ export type DataRecord = {
72
+ [key: string]: ColumnPrimitive | DataRecord | DataRecord[];
73
+ };
74
+ /**
75
+ * DbContext 실행기 인터페이스
76
+ *
77
+ * 실제 DB 연결과 쿼리 실행을 담당
78
+ * NodeDbContextExecutor (서버) 또는 SdOrmServiceClientDbContextExecutor (클라이언트) 구현
79
+ *
80
+ * @example
81
+ * ```typescript
82
+ * // 서버 측 구현 예시
83
+ * class NodeDbContextExecutor implements IDbContextExecutor {
84
+ * async connect(): Promise<void> {
85
+ * await this.connection.connect();
86
+ * }
87
+ * // ...
88
+ * }
89
+ * ```
90
+ *
91
+ * @see {@link DbContext} DbContext에서 사용
92
+ */
93
+ export interface DbContextExecutor {
94
+ /**
95
+ * DB 연결 수립
96
+ */
97
+ connect(): Promise<void>;
98
+ /**
99
+ * DB 연결 종료
100
+ */
101
+ close(): Promise<void>;
102
+ /**
103
+ * 트랜잭션 시작
104
+ *
105
+ * @param isolationLevel - 격리 수준 (선택)
106
+ */
107
+ beginTransaction(isolationLevel?: IsolationLevel): Promise<void>;
108
+ /**
109
+ * 트랜잭션 커밋
110
+ */
111
+ commitTransaction(): Promise<void>;
112
+ /**
113
+ * 트랜잭션 롤백
114
+ */
115
+ rollbackTransaction(): Promise<void>;
116
+ /**
117
+ * QueryDef 배열 실행
118
+ *
119
+ * @template T - 결과 레코드 타입
120
+ * @param defs - 실행할 QueryDef 배열
121
+ * @param resultMetas - 결과 변환을 위한 메타데이터 (선택)
122
+ * @returns 각 QueryDef별 결과 배열의 배열
123
+ */
124
+ executeDefs<T = DataRecord>(defs: QueryDef[], resultMetas?: (ResultMeta | undefined)[]): Promise<T[][]>;
125
+ }
126
+ /**
127
+ * 쿼리 결과 변환을 위한 메타데이터
128
+ *
129
+ * SELECT 결과를 TypeScript 객체로 변환 시 사용
130
+ *
131
+ * @property columns - 컬럼명 → ColumnPrimitiveStr 매핑
132
+ * @property joins - JOIN 별칭 → 단일/배열 여부
133
+ */
134
+ export interface ResultMeta {
135
+ columns: Record<string, ColumnPrimitiveStr>;
136
+ joins: Record<string, {
137
+ isSingle: boolean;
138
+ }>;
139
+ }
140
+ /**
141
+ * 데이터베이스 마이그레이션 정의
142
+ *
143
+ * 스키마 변경을 버전 관리
144
+ *
145
+ * @property name - 마이그레이션 고유 이름 (타임스탬프 권장)
146
+ * @property up - 마이그레이션 실행 함수
147
+ *
148
+ * @example
149
+ * ```typescript
150
+ * const migrations: Migration[] = [
151
+ * {
152
+ * name: "20260105_001_create_user_table",
153
+ * up: async (db) => {
154
+ * await db.createTable(User);
155
+ * },
156
+ * },
157
+ * {
158
+ * name: "20260105_002_add_email_column",
159
+ * up: async (db) => {
160
+ * await db.addColumn(User, "email", {
161
+ * type: "varchar",
162
+ * length: 200,
163
+ * });
164
+ * },
165
+ * },
166
+ * ];
167
+ * ```
168
+ *
169
+ * @see {@link DbContext.initialize} 마이그레이션 실행
170
+ */
171
+ export interface Migration {
172
+ name: string;
173
+ up: (db: DbContext) => Promise<void>;
174
+ }
175
+ //# sourceMappingURL=db.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../../../../orm-common/src/types/db.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAM/C;;;;;;GAMG;AACH,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,YAAY,CAAC;AAEvD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,QAAQ,EAAE,OAAO,EAAqC,CAAC;AAEpE;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,GAAG,kBAAkB,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,cAAc,CAAC;AAMxG;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,GAAG,UAAU,GAAG,UAAU,EAAE,CAAC;CAC5D,CAAC;AAMF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzB;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;;;OAIG;IACH,gBAAgB,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjE;;OAEG;IACH,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnC;;OAEG;IACH,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAErC;;;;;;;OAOG;IACH,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,CAAC;CACzG;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC5C,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAC9C;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,CAAC,EAAE,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC"}