@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,669 @@
1
+ import type { DataRecord, DbContextExecutor, IsolationLevel, Migration, ResultMeta } from "./types/db";
2
+ import { type AddColumnQueryDef, type AddPkQueryDef, type ClearSchemaQueryDef, type DropColumnQueryDef, type DropFkQueryDef, type DropIdxQueryDef, type DropPkQueryDef, type DropProcQueryDef, type DropTableQueryDef, type DropViewQueryDef, type ModifyColumnQueryDef, type QueryDef, type QueryDefObjectName, type RenameColumnQueryDef, type RenameTableQueryDef, type SchemaExistsQueryDef, type SwitchFkQueryDef, type TruncateQueryDef } from "./types/query-def";
3
+ import { TableBuilder } from "./schema/table-builder";
4
+ import { ViewBuilder } from "./schema/view-builder";
5
+ import { ProcedureBuilder } from "./schema/procedure-builder";
6
+ import { Queryable } from "./exec/queryable";
7
+ import { ColumnBuilder } from "./schema/factory/column-builder";
8
+ import { ForeignKeyBuilder } from "./schema/factory/relation-builder";
9
+ import type { IndexBuilder } from "./schema/factory/index-builder";
10
+ /**
11
+ * DbContext 연결 상태
12
+ *
13
+ * @property ready - 연결 대기 상태 (초기 상태)
14
+ * @property connect - 연결됨 (트랜잭션 없음)
15
+ * @property transact - 트랜잭션 진행 중
16
+ */
17
+ export type DbContextStatus = "ready" | "connect" | "transact";
18
+ /**
19
+ * 데이터베이스 컨텍스트 추상 클래스
20
+ *
21
+ * ORM의 핵심 진입점으로, 테이블/뷰/프로시저 정의와 데이터베이스 연결,
22
+ * 트랜잭션 관리, DDL/DML 실행을 담당
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * // 1. DbContext 상속하여 테이블 정의
27
+ * class MyDb extends DbContext {
28
+ * readonly user = queryable(this, User);
29
+ * readonly post = queryable(this, Post);
30
+ * }
31
+ *
32
+ * // 2. Executor와 함께 인스턴스 생성
33
+ * const db = new MyDb(executor, { database: "mydb" });
34
+ *
35
+ * // 3. 트랜잭션 내에서 쿼리 실행
36
+ * await db.connect(async () => {
37
+ * const users = await db.user().result();
38
+ * await db.user().insert([{ name: "홍길동" }]);
39
+ * });
40
+ * ```
41
+ *
42
+ * @see {@link queryable} 테이블 Queryable 생성
43
+ * @see {@link DbContextExecutor} 쿼리 실행기 인터페이스
44
+ */
45
+ export declare abstract class DbContext {
46
+ private readonly _executor;
47
+ private readonly _opt;
48
+ /**
49
+ * 현재 연결 상태
50
+ *
51
+ * - `ready`: 연결 대기 (초기 상태)
52
+ * - `connect`: DB 연결됨 (트랜잭션 없음)
53
+ * - `transact`: 트랜잭션 진행 중
54
+ */
55
+ status: DbContextStatus;
56
+ /**
57
+ * 마이그레이션 목록
58
+ *
59
+ * 서브클래스에서 override하여 마이그레이션 정의
60
+ *
61
+ * @example
62
+ * ```typescript
63
+ * class MyDb extends DbContext {
64
+ * readonly migrations: Migration[] = [
65
+ * {
66
+ * name: "20240101_add_status",
67
+ * up: async (db) => {
68
+ * await db.addColumn(
69
+ * { database: "mydb", name: "User" },
70
+ * "status",
71
+ * c.varchar(20).nullable(),
72
+ * );
73
+ * },
74
+ * },
75
+ * ];
76
+ * }
77
+ * ```
78
+ */
79
+ readonly migrations: Migration[];
80
+ /** alias 카운터 (queryable/executable 호출 시 증가) */
81
+ private _aliasCounter;
82
+ /**
83
+ * DbContext 생성자
84
+ *
85
+ * @param _executor - 쿼리 실행기 (NodeDbContextExecutor, ServiceDbContextExecutor 등)
86
+ * @param _opt - 데이터베이스 옵션
87
+ * @param _opt.database - 데이터베이스 이름
88
+ * @param _opt.schema - 스키마 이름 (MSSQL: dbo, PostgreSQL: public)
89
+ */
90
+ constructor(_executor: DbContextExecutor, _opt: {
91
+ database: string;
92
+ schema?: string;
93
+ });
94
+ /** 데이터베이스 이름 */
95
+ get database(): string | undefined;
96
+ /** 스키마 이름 (MSSQL: dbo, PostgreSQL: public) */
97
+ get schema(): string | undefined;
98
+ /**
99
+ * 다음 테이블 alias 반환
100
+ *
101
+ * 서브쿼리/JOIN/재귀 CTE에서 alias 충돌 방지를 위해 T1, T2, T3... 형식으로 생성
102
+ * queryable() 함수 호출 시 내부적으로 사용
103
+ *
104
+ * @returns 순차 증가하는 alias (T1, T2, T3...)
105
+ */
106
+ getNextAlias(): string;
107
+ /**
108
+ * alias 카운터 초기화
109
+ *
110
+ * connect() 또는 connectWithoutTransaction() 시작 시 자동 호출
111
+ */
112
+ resetAliasCounter(): void;
113
+ /**
114
+ * 시스템 마이그레이션 테이블 Queryable
115
+ *
116
+ * 적용된 마이그레이션 이력을 관리하는 내부 테이블
117
+ */
118
+ get systemMigration(): () => Queryable<import(".").InferColumns<{
119
+ code: ColumnBuilder<string, {
120
+ type: "string";
121
+ dataType: {
122
+ type: "varchar";
123
+ length: number;
124
+ };
125
+ }>;
126
+ }> & import(".").InferDeepRelations<import(".").RelationBuilderRecord>, TableBuilder<{
127
+ code: ColumnBuilder<string, {
128
+ type: "string";
129
+ dataType: {
130
+ type: "varchar";
131
+ length: number;
132
+ };
133
+ }>;
134
+ }, import(".").RelationBuilderRecord>>;
135
+ /**
136
+ * 트랜잭션 없이 연결하여 콜백 실행 후 자동 종료
137
+ *
138
+ * DDL 작업이나 트랜잭션이 필요 없는 조회 작업에 사용
139
+ *
140
+ * @template R - 콜백 반환 타입
141
+ * @param callback - 연결 내에서 실행할 콜백
142
+ * @returns 콜백 반환값
143
+ * @throws 콜백 실행 중 발생한 에러 (연결은 자동 종료됨)
144
+ *
145
+ * @example
146
+ * ```typescript
147
+ * // DDL 작업 (트랜잭션 내 실행 불가)
148
+ * await db.connectWithoutTransaction(async () => {
149
+ * await db.createTable(User);
150
+ * await db.addColumn(
151
+ * { database: "mydb", name: "User" },
152
+ * "status",
153
+ * c.varchar(20),
154
+ * );
155
+ * });
156
+ * ```
157
+ */
158
+ connectWithoutTransaction<R>(callback: () => Promise<R>): Promise<R>;
159
+ /**
160
+ * 트랜잭션 내에서 콜백 실행 (자동 커밋/롤백)
161
+ *
162
+ * 연결 → 트랜잭션 시작 → 콜백 실행 → 커밋 → 연결 종료
163
+ * 에러 발생 시 자동 롤백 후 연결 종료
164
+ *
165
+ * @template R - 콜백 반환 타입
166
+ * @param fn - 트랜잭션 내에서 실행할 콜백
167
+ * @param isolationLevel - 트랜잭션 격리 수준 (선택)
168
+ * @returns 콜백 반환값
169
+ * @throws 콜백 실행 중 발생한 에러 (롤백 및 연결 종료됨)
170
+ *
171
+ * @example
172
+ * ```typescript
173
+ * // 기본 사용
174
+ * const result = await db.connect(async () => {
175
+ * const users = await db.user().result();
176
+ * await db.user().insert([{ name: "홍길동" }]);
177
+ * return users;
178
+ * });
179
+ *
180
+ * // 격리 수준 지정
181
+ * await db.connect(async () => {
182
+ * await db.user().update({ name: "김철수" }, (u) => [
183
+ * expr.eq(u.id, 1),
184
+ * ]);
185
+ * }, "SERIALIZABLE");
186
+ * ```
187
+ *
188
+ * @see {@link trans} 이미 연결된 상태에서 트랜잭션 시작
189
+ */
190
+ connect<R>(fn: () => Promise<R>, isolationLevel?: IsolationLevel): Promise<R>;
191
+ /**
192
+ * 이미 연결된 상태에서 트랜잭션 시작 (자동 커밋/롤백)
193
+ *
194
+ * connectWithoutTransaction 내에서 부분적으로 트랜잭션이 필요할 때 사용
195
+ * 연결 관리는 외부에서 담당하므로 연결 종료하지 않음
196
+ *
197
+ * @template R - 콜백 반환 타입
198
+ * @param fn - 트랜잭션 내에서 실행할 콜백
199
+ * @param isolationLevel - 트랜잭션 격리 수준 (선택)
200
+ * @returns 콜백 반환값
201
+ * @throws {Error} 이미 트랜잭션 상태일 때
202
+ * @throws 콜백 실행 중 발생한 에러 (롤백됨)
203
+ *
204
+ * @example
205
+ * ```typescript
206
+ * await db.connectWithoutTransaction(async () => {
207
+ * // DDL 작업 (트랜잭션 외부)
208
+ * await db.createTable(User);
209
+ *
210
+ * // DML 작업 (트랜잭션 내부)
211
+ * await db.trans(async () => {
212
+ * await db.user().insert([{ name: "홍길동" }]);
213
+ * });
214
+ * });
215
+ * ```
216
+ *
217
+ * @see {@link connect} 연결부터 트랜잭션까지 한번에 처리
218
+ */
219
+ trans<R>(fn: () => Promise<R>, isolationLevel?: IsolationLevel): Promise<R>;
220
+ /**
221
+ * QueryDef 배열 실행
222
+ *
223
+ * Queryable/Executable이 생성한 QueryDef를 직접 실행
224
+ * 트랜잭션 상태에서 DDL 실행 시 에러 발생
225
+ *
226
+ * @template T - 결과 레코드 타입
227
+ * @param defs - 실행할 QueryDef 배열
228
+ * @param resultMetas - 결과 메타데이터 (타입 변환용)
229
+ * @returns 각 QueryDef 실행 결과 배열
230
+ * @throws {Error} 트랜잭션 상태에서 DDL 실행 시
231
+ *
232
+ * @example
233
+ * ```typescript
234
+ * // 일반적으로는 Queryable 메서드 사용을 권장
235
+ * // 직접 실행이 필요한 경우만 사용
236
+ * const selectDef = db.user().getSelectQueryDef();
237
+ * const results = await db.executeDefs([selectDef]);
238
+ * ```
239
+ */
240
+ executeDefs<T = DataRecord>(defs: QueryDef[], resultMetas?: (ResultMeta | undefined)[]): Promise<T[][]>;
241
+ /**
242
+ * Code First 데이터베이스 초기화
243
+ *
244
+ * DbContext에 정의된 테이블/뷰/프로시저를 데이터베이스에 생성하고,
245
+ * 마이그레이션을 적용
246
+ *
247
+ * @param options - 초기화 옵션
248
+ * @param options.dbs - 초기화 대상 데이터베이스 목록 (미지정 시 현재 database)
249
+ * @param options.force - true 시 기존 스키마 삭제 후 전체 재생성
250
+ * @throws {Error} 초기화할 데이터베이스가 없을 때
251
+ * @throws {Error} 지정한 데이터베이스가 존재하지 않을 때
252
+ *
253
+ * 동작 방식:
254
+ * - **force=true**: clearSchema → 전체 생성 → 모든 migration "적용됨" 등록
255
+ * - **force=false** (기본):
256
+ * - SystemMigration 테이블 없음: 전체 생성 + 모든 migration 등록
257
+ * - SystemMigration 테이블 있음: 미적용 migration만 실행
258
+ *
259
+ * @example
260
+ * ```typescript
261
+ * // 기본 초기화 (마이그레이션 기반)
262
+ * await db.connectWithoutTransaction(async () => {
263
+ * await db.initialize();
264
+ * });
265
+ *
266
+ * // 강제 초기화 (기존 데이터 삭제)
267
+ * await db.connectWithoutTransaction(async () => {
268
+ * await db.initialize({ force: true });
269
+ * });
270
+ * ```
271
+ */
272
+ initialize(options?: {
273
+ dbs?: string[];
274
+ force?: boolean;
275
+ }): Promise<void>;
276
+ /**
277
+ * 전체 객체 생성 (테이블/뷰/프로시저/FK/Index)
278
+ */
279
+ private _createAllObjects;
280
+ /**
281
+ * ForeignKeyTarget/RelationKeyTarget 관계의 유효성 검증
282
+ * - targetTableFn()이 반환하는 테이블에 relationName에 해당하는 FK/RelationKey가 있는지 확인
283
+ */
284
+ private _validateRelations;
285
+ /**
286
+ * DbContext의 모든 Builder 수집 (Table/View/Procedure)
287
+ */
288
+ private _getBuilders;
289
+ /**
290
+ * 테이블 생성
291
+ *
292
+ * @param table - 생성할 테이블 빌더
293
+ *
294
+ * @example
295
+ * ```typescript
296
+ * await db.createTable(User);
297
+ * ```
298
+ */
299
+ createTable(table: TableBuilder<any, any>): Promise<void>;
300
+ /**
301
+ * 테이블 삭제
302
+ *
303
+ * @param table - 삭제할 테이블 정보 (database, schema, name)
304
+ *
305
+ * @example
306
+ * ```typescript
307
+ * await db.dropTable({ database: "mydb", name: "User" });
308
+ * ```
309
+ */
310
+ dropTable(table: QueryDefObjectName): Promise<void>;
311
+ /**
312
+ * 테이블 이름 변경
313
+ *
314
+ * @param table - 변경할 테이블 정보
315
+ * @param newName - 새 테이블 이름
316
+ *
317
+ * @example
318
+ * ```typescript
319
+ * await db.renameTable({ database: "mydb", name: "User" }, "Member");
320
+ * ```
321
+ */
322
+ renameTable(table: QueryDefObjectName, newName: string): Promise<void>;
323
+ /**
324
+ * 뷰 생성
325
+ *
326
+ * @param view - 생성할 뷰 빌더
327
+ *
328
+ * @example
329
+ * ```typescript
330
+ * await db.createView(UserSummary);
331
+ * ```
332
+ */
333
+ createView(view: ViewBuilder<any, any, any>): Promise<void>;
334
+ /**
335
+ * 뷰 삭제
336
+ *
337
+ * @param view - 삭제할 뷰 정보
338
+ *
339
+ * @example
340
+ * ```typescript
341
+ * await db.dropView({ database: "mydb", name: "UserSummary" });
342
+ * ```
343
+ */
344
+ dropView(view: QueryDefObjectName): Promise<void>;
345
+ /**
346
+ * 저장 프로시저 생성
347
+ *
348
+ * @param procedure - 생성할 프로시저 빌더
349
+ *
350
+ * @example
351
+ * ```typescript
352
+ * await db.createProc(GetUserById);
353
+ * ```
354
+ */
355
+ createProc(procedure: ProcedureBuilder<any, any>): Promise<void>;
356
+ /**
357
+ * 저장 프로시저 삭제
358
+ *
359
+ * @param procedure - 삭제할 프로시저 정보
360
+ *
361
+ * @example
362
+ * ```typescript
363
+ * await db.dropProc({ database: "mydb", name: "GetUserById" });
364
+ * ```
365
+ */
366
+ dropProc(procedure: QueryDefObjectName): Promise<void>;
367
+ /**
368
+ * Builder를 CREATE QueryDef로 변환
369
+ *
370
+ * @param builder - Table/View/Procedure 빌더
371
+ * @returns CREATE TABLE/VIEW/PROCEDURE QueryDef
372
+ * @throws {Error} 알 수 없는 빌더 타입일 때
373
+ */
374
+ getCreateObjectQueryDef(builder: TableBuilder<any, any> | ViewBuilder<any, any, any> | ProcedureBuilder<any, any>): QueryDef;
375
+ /**
376
+ * CREATE TABLE QueryDef 생성
377
+ *
378
+ * @param table - 테이블 빌더
379
+ * @returns CREATE TABLE QueryDef
380
+ * @throws {Error} 테이블에 컬럼이 없을 때
381
+ */
382
+ getCreateTableQueryDef(table: TableBuilder<any, any>): QueryDef;
383
+ /**
384
+ * CREATE VIEW QueryDef 생성
385
+ *
386
+ * @param view - 뷰 빌더
387
+ * @returns CREATE VIEW QueryDef
388
+ * @throws {Error} 뷰에 viewFn이 없을 때
389
+ */
390
+ getCreateViewQueryDef(view: ViewBuilder<any, any, any>): QueryDef;
391
+ /**
392
+ * CREATE PROCEDURE QueryDef 생성
393
+ *
394
+ * @param procedure - 프로시저 빌더
395
+ * @returns CREATE PROCEDURE QueryDef
396
+ * @throws {Error} 프로시저에 본문이 없을 때
397
+ */
398
+ getCreateProcQueryDef(procedure: ProcedureBuilder<any, any>): QueryDef;
399
+ /** DROP TABLE QueryDef 생성 */
400
+ getDropTableQueryDef(table: QueryDefObjectName): DropTableQueryDef;
401
+ /** RENAME TABLE QueryDef 생성 */
402
+ getRenameTableQueryDef(table: QueryDefObjectName, newName: string): RenameTableQueryDef;
403
+ /** DROP VIEW QueryDef 생성 */
404
+ getDropViewQueryDef(view: QueryDefObjectName): DropViewQueryDef;
405
+ /** DROP PROCEDURE QueryDef 생성 */
406
+ getDropProcQueryDef(procedure: QueryDefObjectName): DropProcQueryDef;
407
+ /**
408
+ * 컬럼 추가
409
+ *
410
+ * @param table - 테이블 정보
411
+ * @param columnName - 추가할 컬럼 이름
412
+ * @param column - 컬럼 빌더 (타입, nullable, default 등)
413
+ *
414
+ * @example
415
+ * ```typescript
416
+ * await db.addColumn(
417
+ * { database: "mydb", name: "User" },
418
+ * "status",
419
+ * c.varchar(20).nullable(),
420
+ * );
421
+ * ```
422
+ */
423
+ addColumn(table: QueryDefObjectName, columnName: string, column: ColumnBuilder<any, any>): Promise<void>;
424
+ /**
425
+ * 컬럼 삭제
426
+ *
427
+ * @param table - 테이블 정보
428
+ * @param column - 삭제할 컬럼 이름
429
+ *
430
+ * @example
431
+ * ```typescript
432
+ * await db.dropColumn(
433
+ * { database: "mydb", name: "User" },
434
+ * "status",
435
+ * );
436
+ * ```
437
+ */
438
+ dropColumn(table: QueryDefObjectName, column: string): Promise<void>;
439
+ /**
440
+ * 컬럼 수정
441
+ *
442
+ * @param table - 테이블 정보
443
+ * @param columnName - 수정할 컬럼 이름
444
+ * @param column - 새 컬럼 정의
445
+ *
446
+ * @example
447
+ * ```typescript
448
+ * await db.modifyColumn(
449
+ * { database: "mydb", name: "User" },
450
+ * "status",
451
+ * c.varchar(50).nullable(), // 길이 변경
452
+ * );
453
+ * ```
454
+ */
455
+ modifyColumn(table: QueryDefObjectName, columnName: string, column: ColumnBuilder<any, any>): Promise<void>;
456
+ /**
457
+ * 컬럼 이름 변경
458
+ *
459
+ * @param table - 테이블 정보
460
+ * @param column - 현재 컬럼 이름
461
+ * @param newName - 새 컬럼 이름
462
+ *
463
+ * @example
464
+ * ```typescript
465
+ * await db.renameColumn(
466
+ * { database: "mydb", name: "User" },
467
+ * "status",
468
+ * "userStatus",
469
+ * );
470
+ * ```
471
+ */
472
+ renameColumn(table: QueryDefObjectName, column: string, newName: string): Promise<void>;
473
+ /** ADD COLUMN QueryDef 생성 */
474
+ getAddColumnQueryDef(table: QueryDefObjectName, columnName: string, column: ColumnBuilder<any, any>): AddColumnQueryDef;
475
+ /** DROP COLUMN QueryDef 생성 */
476
+ getDropColumnQueryDef(table: QueryDefObjectName, column: string): DropColumnQueryDef;
477
+ /** MODIFY COLUMN QueryDef 생성 */
478
+ getModifyColumnQueryDef(table: QueryDefObjectName, columnName: string, column: ColumnBuilder<any, any>): ModifyColumnQueryDef;
479
+ /** RENAME COLUMN QueryDef 생성 */
480
+ getRenameColumnQueryDef(table: QueryDefObjectName, column: string, newName: string): RenameColumnQueryDef;
481
+ /**
482
+ * Primary Key 추가
483
+ *
484
+ * @param table - 테이블 정보
485
+ * @param columns - PK 구성 컬럼 배열
486
+ *
487
+ * @example
488
+ * ```typescript
489
+ * await db.addPk(
490
+ * { database: "mydb", name: "User" },
491
+ * ["id"],
492
+ * );
493
+ * ```
494
+ */
495
+ addPk(table: QueryDefObjectName, columns: string[]): Promise<void>;
496
+ /**
497
+ * Primary Key 삭제
498
+ *
499
+ * @param table - 테이블 정보
500
+ *
501
+ * @example
502
+ * ```typescript
503
+ * await db.dropPk({ database: "mydb", name: "User" });
504
+ * ```
505
+ */
506
+ dropPk(table: QueryDefObjectName): Promise<void>;
507
+ /**
508
+ * Foreign Key 추가
509
+ *
510
+ * @param table - 테이블 정보
511
+ * @param relationName - 관계 이름 (FK_테이블명_관계이름 형식으로 FK 이름 생성)
512
+ * @param relationDef - ForeignKey 빌더
513
+ *
514
+ * @example
515
+ * ```typescript
516
+ * await db.addFk(
517
+ * { database: "mydb", name: "Post" },
518
+ * "author",
519
+ * ForeignKey(User, ["authorId"]),
520
+ * );
521
+ * ```
522
+ */
523
+ addFk(table: QueryDefObjectName, relationName: string, relationDef: ForeignKeyBuilder<any, any>): Promise<void>;
524
+ /**
525
+ * 인덱스 추가
526
+ *
527
+ * @param table - 테이블 정보
528
+ * @param indexBuilder - 인덱스 빌더
529
+ *
530
+ * @example
531
+ * ```typescript
532
+ * await db.addIdx(
533
+ * { database: "mydb", name: "User" },
534
+ * Index(["email"]).unique(),
535
+ * );
536
+ * ```
537
+ */
538
+ addIdx(table: QueryDefObjectName, indexBuilder: IndexBuilder<string[]>): Promise<void>;
539
+ /**
540
+ * Foreign Key 삭제
541
+ *
542
+ * @param table - 테이블 정보
543
+ * @param relationName - 관계 이름
544
+ *
545
+ * @example
546
+ * ```typescript
547
+ * await db.dropFk({ database: "mydb", name: "Post" }, "author");
548
+ * ```
549
+ */
550
+ dropFk(table: QueryDefObjectName, relationName: string): Promise<void>;
551
+ /**
552
+ * 인덱스 삭제
553
+ *
554
+ * @param table - 테이블 정보
555
+ * @param columns - 인덱스 구성 컬럼 배열 (인덱스 이름 추론용)
556
+ *
557
+ * @example
558
+ * ```typescript
559
+ * await db.dropIdx({ database: "mydb", name: "User" }, ["email"]);
560
+ * ```
561
+ */
562
+ dropIdx(table: QueryDefObjectName, columns: string[]): Promise<void>;
563
+ /** DROP PRIMARY KEY QueryDef 생성 */
564
+ getDropPkQueryDef(table: QueryDefObjectName): DropPkQueryDef;
565
+ /** ADD PRIMARY KEY QueryDef 생성 */
566
+ getAddPkQueryDef(table: QueryDefObjectName, columns: string[]): AddPkQueryDef;
567
+ /** ADD FOREIGN KEY QueryDef 생성 */
568
+ getAddFkQueryDef(table: QueryDefObjectName, relationName: string, relationDef: ForeignKeyBuilder<any, any>): QueryDef;
569
+ /** ADD INDEX QueryDef 생성 */
570
+ getAddIdxQueryDef(table: QueryDefObjectName, indexBuilder: IndexBuilder<string[]>): QueryDef;
571
+ /** DROP FOREIGN KEY QueryDef 생성 */
572
+ getDropFkQueryDef(table: QueryDefObjectName, relationName: string): DropFkQueryDef;
573
+ /** DROP INDEX QueryDef 생성 */
574
+ getDropIdxQueryDef(table: QueryDefObjectName, columns: string[]): DropIdxQueryDef;
575
+ /**
576
+ * 스키마 내 모든 객체 삭제
577
+ *
578
+ * 지정한 database/schema 내의 모든 테이블, 뷰, 프로시저 등을 삭제
579
+ *
580
+ * @param params - 대상 database/schema
581
+ * @param params.database - 데이터베이스 이름
582
+ * @param params.schema - 스키마 이름 (MSSQL/PostgreSQL)
583
+ *
584
+ * @example
585
+ * ```typescript
586
+ * await db.clearSchema({ database: "mydb", schema: "public" });
587
+ * ```
588
+ */
589
+ clearSchema(params: {
590
+ database: string;
591
+ schema?: string;
592
+ }): Promise<void>;
593
+ /**
594
+ * 스키마 존재 여부 확인
595
+ *
596
+ * @param database - 데이터베이스 이름
597
+ * @param schema - 스키마 이름 (MSSQL/PostgreSQL)
598
+ * @returns 스키마 존재 여부
599
+ *
600
+ * @example
601
+ * ```typescript
602
+ * const exists = await db.schemaExists("mydb");
603
+ * if (!exists) {
604
+ * throw new Error("Database not found");
605
+ * }
606
+ * ```
607
+ */
608
+ schemaExists(database: string, schema?: string): Promise<boolean>;
609
+ /** CLEAR SCHEMA QueryDef 생성 */
610
+ getClearSchemaQueryDef(params: {
611
+ database: string;
612
+ schema?: string;
613
+ }): ClearSchemaQueryDef;
614
+ /** SCHEMA EXISTS QueryDef 생성 */
615
+ getSchemaExistsQueryDef(database: string, schema?: string): SchemaExistsQueryDef;
616
+ /**
617
+ * 테이블 데이터 전체 삭제 (TRUNCATE)
618
+ *
619
+ * DELETE와 달리 로그 없이 빠르게 삭제하며, AUTO_INCREMENT 초기화
620
+ *
621
+ * @param table - 테이블 정보
622
+ *
623
+ * @example
624
+ * ```typescript
625
+ * await db.truncate({ database: "mydb", name: "User" });
626
+ * ```
627
+ */
628
+ truncate(table: QueryDefObjectName): Promise<void>;
629
+ /**
630
+ * Foreign Key 제약 조건 ON/OFF
631
+ *
632
+ * 대량 데이터 작업 시 FK 제약 임시 해제에 사용
633
+ * 트랜잭션 내에서 사용 가능 (DDL이 아님)
634
+ *
635
+ * @param table - 테이블 정보
636
+ * @param switch_ - "on" 또는 "off"
637
+ *
638
+ * @example
639
+ * ```typescript
640
+ * await db.connect(async () => {
641
+ * await db.switchFk({ database: "mydb", name: "Post" }, "off");
642
+ * await db.post().deleteAsync(() => []);
643
+ * await db.switchFk({ database: "mydb", name: "Post" }, "on");
644
+ * });
645
+ * ```
646
+ */
647
+ switchFk(table: QueryDefObjectName, switch_: "on" | "off"): Promise<void>;
648
+ /** TRUNCATE TABLE QueryDef 생성 */
649
+ getTruncateQueryDef(table: QueryDefObjectName): TruncateQueryDef;
650
+ /** SWITCH FK QueryDef 생성 */
651
+ getSwitchFkQueryDef(table: QueryDefObjectName, switch_: "on" | "off"): SwitchFkQueryDef;
652
+ /**
653
+ * TableBuilder/ViewBuilder를 QueryDefObjectName으로 변환
654
+ *
655
+ * @param tableOrView - 테이블 또는 뷰 빌더
656
+ * @returns QueryDef에서 사용할 객체 이름 정보
657
+ */
658
+ getQueryDefObjectName(tableOrView: TableBuilder<any, any> | ViewBuilder<any, any, any>): QueryDefObjectName;
659
+ /**
660
+ * 테이블 없음 에러인지 확인
661
+ *
662
+ * DBMS별 에러 코드/메시지 패턴:
663
+ * - MySQL: errno 1146 (ER_NO_SUCH_TABLE), "Table 'xxx' doesn't exist"
664
+ * - MSSQL: number 208, "Invalid object name 'xxx'"
665
+ * - PostgreSQL: code "42P01", "relation \"xxx\" does not exist"
666
+ */
667
+ private _isTableNotExistsError;
668
+ }
669
+ //# sourceMappingURL=db-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db-context.d.ts","sourceRoot":"","sources":["../../../../orm-common/src/db-context.ts"],"names":[],"mappings":"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"}