@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,202 @@
1
+ import { type ColumnBuilderRecord, createColumnFactory } from "./factory/column-builder";
2
+ /**
3
+ * 저장 프로시저 정의 빌더
4
+ *
5
+ * Fluent API를 통해 프로시저의 파라미터, 반환 타입, 본문을 정의
6
+ * DbContext의 executable()과 함께 사용하여 타입 안전한 프로시저 호출
7
+ *
8
+ * @template TParams - 파라미터 컬럼 정의 타입
9
+ * @template TReturns - 반환 컬럼 정의 타입
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * // 프로시저 정의
14
+ * const GetUserById = Procedure("GetUserById")
15
+ * .database("mydb")
16
+ * .params((c) => ({
17
+ * userId: c.bigint(),
18
+ * }))
19
+ * .returns((c) => ({
20
+ * id: c.bigint(),
21
+ * name: c.varchar(100),
22
+ * email: c.varchar(200),
23
+ * }))
24
+ * .body("SELECT id, name, email FROM User WHERE id = userId");
25
+ *
26
+ * // DbContext에서 사용
27
+ * class MyDb extends DbContext {
28
+ * readonly getUserById = executable(this, GetUserById);
29
+ * }
30
+ *
31
+ * // 호출
32
+ * const users = await db.getUserById({ userId: 1n }).result();
33
+ * ```
34
+ *
35
+ * @see {@link Procedure} 팩토리 함수
36
+ * @see {@link executable} Executable 생성
37
+ */
38
+ export declare class ProcedureBuilder<TParams extends ColumnBuilderRecord, TReturns extends ColumnBuilderRecord> {
39
+ readonly meta: {
40
+ name: string;
41
+ description?: string;
42
+ database?: string;
43
+ schema?: string;
44
+ params?: TParams;
45
+ returns?: TReturns;
46
+ query?: string;
47
+ };
48
+ /** 파라미터 정의 (타입 추론용) */
49
+ readonly $params: TParams;
50
+ /** 반환 타입 정의 (타입 추론용) */
51
+ readonly $returns: TReturns;
52
+ /**
53
+ * @param meta - 프로시저 메타데이터
54
+ * @param meta.name - 프로시저 이름
55
+ * @param meta.description - 프로시저 설명 (주석)
56
+ * @param meta.database - 데이터베이스 이름
57
+ * @param meta.schema - 스키마 이름 (MSSQL/PostgreSQL)
58
+ * @param meta.params - 파라미터 정의
59
+ * @param meta.returns - 반환 타입 정의
60
+ * @param meta.query - 프로시저 본문 SQL
61
+ */
62
+ constructor(meta: {
63
+ name: string;
64
+ description?: string;
65
+ database?: string;
66
+ schema?: string;
67
+ params?: TParams;
68
+ returns?: TReturns;
69
+ query?: string;
70
+ });
71
+ /**
72
+ * 프로시저 설명 설정
73
+ *
74
+ * @param desc - 프로시저 설명 (DDL 주석으로 사용)
75
+ * @returns 새 ProcedureBuilder 인스턴스
76
+ */
77
+ description(desc: string): ProcedureBuilder<TParams, TReturns>;
78
+ /**
79
+ * 데이터베이스 이름 설정
80
+ *
81
+ * @param db - 데이터베이스 이름
82
+ * @returns 새 ProcedureBuilder 인스턴스
83
+ *
84
+ * @example
85
+ * ```typescript
86
+ * const GetUser = Procedure("GetUser").database("mydb");
87
+ * ```
88
+ */
89
+ database(db: string): ProcedureBuilder<TParams, TReturns>;
90
+ /**
91
+ * 스키마 이름 설정
92
+ *
93
+ * MSSQL, PostgreSQL에서 사용
94
+ *
95
+ * @param schema - 스키마 이름 (MSSQL: dbo, PostgreSQL: public)
96
+ * @returns 새 ProcedureBuilder 인스턴스
97
+ */
98
+ schema(schema: string): ProcedureBuilder<TParams, TReturns>;
99
+ /**
100
+ * 파라미터 정의
101
+ *
102
+ * 프로시저 입력 파라미터 정의
103
+ * DBMS별 파라미터 문법 차이 주의 (MSSQL: @param, MySQL/PostgreSQL: param)
104
+ *
105
+ * @template T - 새 파라미터 정의 타입
106
+ * @param fn - 컬럼 팩토리를 받아 파라미터 정의를 반환하는 함수
107
+ * @returns 새 ProcedureBuilder 인스턴스
108
+ *
109
+ * @example
110
+ * ```typescript
111
+ * const GetUserById = Procedure("GetUserById")
112
+ * .params((c) => ({
113
+ * userId: c.bigint(),
114
+ * includeDeleted: c.boolean().default(false),
115
+ * }));
116
+ * ```
117
+ */
118
+ params<T extends ColumnBuilderRecord>(fn: (c: ReturnType<typeof createColumnFactory>) => T): ProcedureBuilder<T, TReturns>;
119
+ /**
120
+ * 반환 타입 정의
121
+ *
122
+ * 프로시저 반환 결과 컬럼 정의
123
+ *
124
+ * @template T - 새 반환 타입 정의
125
+ * @param fn - 컬럼 팩토리를 받아 반환 컬럼 정의를 반환하는 함수
126
+ * @returns 새 ProcedureBuilder 인스턴스
127
+ *
128
+ * @example
129
+ * ```typescript
130
+ * const GetUserById = Procedure("GetUserById")
131
+ * .params((c) => ({ userId: c.bigint() }))
132
+ * .returns((c) => ({
133
+ * id: c.bigint(),
134
+ * name: c.varchar(100),
135
+ * email: c.varchar(200).nullable(),
136
+ * }));
137
+ * ```
138
+ */
139
+ returns<T extends ColumnBuilderRecord>(fn: (c: ReturnType<typeof createColumnFactory>) => T): ProcedureBuilder<TParams, T>;
140
+ /**
141
+ * 프로시저 본문 SQL 설정
142
+ *
143
+ * DBMS별 SQL 문법 차이 주의:
144
+ * - MySQL: 파라미터명 그대로 (userId)
145
+ * - MSSQL: @ 접두사 (@userId)
146
+ * - PostgreSQL: RETURN QUERY 필요
147
+ *
148
+ * @param sql - 프로시저 본문 SQL
149
+ * @returns 새 ProcedureBuilder 인스턴스
150
+ *
151
+ * @example
152
+ * ```typescript
153
+ * // MySQL/PostgreSQL
154
+ * const GetUser = Procedure("GetUser")
155
+ * .params((c) => ({ userId: c.bigint() }))
156
+ * .body("SELECT * FROM User WHERE id = userId");
157
+ *
158
+ * // MSSQL
159
+ * const GetUser = Procedure("GetUser")
160
+ * .params((c) => ({ userId: c.bigint() }))
161
+ * .body("SELECT * FROM [User] WHERE id = @userId");
162
+ * ```
163
+ */
164
+ body(sql: string): ProcedureBuilder<TParams, TReturns>;
165
+ }
166
+ /**
167
+ * 프로시저 빌더 생성 팩토리 함수
168
+ *
169
+ * ProcedureBuilder를 생성하여 Fluent API로 저장 프로시저 스키마 정의
170
+ *
171
+ * @param name - 프로시저 이름
172
+ * @returns ProcedureBuilder 인스턴스
173
+ *
174
+ * @example
175
+ * ```typescript
176
+ * // 기본 사용
177
+ * const GetUserById = Procedure("GetUserById")
178
+ * .database("mydb")
179
+ * .params((c) => ({
180
+ * userId: c.bigint(),
181
+ * }))
182
+ * .returns((c) => ({
183
+ * id: c.bigint(),
184
+ * name: c.varchar(100),
185
+ * email: c.varchar(200),
186
+ * }))
187
+ * .body("SELECT id, name, email FROM User WHERE id = userId");
188
+ *
189
+ * // 파라미터 없는 프로시저
190
+ * const GetAllActiveUsers = Procedure("GetAllActiveUsers")
191
+ * .database("mydb")
192
+ * .returns((c) => ({
193
+ * id: c.bigint(),
194
+ * name: c.varchar(100),
195
+ * }))
196
+ * .body("SELECT id, name FROM User WHERE status = 'active'");
197
+ * ```
198
+ *
199
+ * @see {@link ProcedureBuilder} 빌더 클래스
200
+ */
201
+ export declare function Procedure(name: string): ProcedureBuilder<never, never>;
202
+ //# sourceMappingURL=procedure-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"procedure-builder.d.ts","sourceRoot":"","sources":["../../../../../orm-common/src/schema/procedure-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAMzF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,qBAAa,gBAAgB,CAAC,OAAO,SAAS,mBAAmB,EAAE,QAAQ,SAAS,mBAAmB;IAiBnG,QAAQ,CAAC,IAAI,EAAE;QACb,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,OAAO,CAAC,EAAE,QAAQ,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB;IAxBH,uBAAuB;IACvB,QAAQ,CAAC,OAAO,EAAG,OAAO,CAAC;IAC3B,wBAAwB;IACxB,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAC;IAE7B;;;;;;;;;OASG;gBAEQ,IAAI,EAAE;QACb,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,OAAO,CAAC,EAAE,QAAQ,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB;IAGH;;;;;OAKG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC;IAI9D;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC;IAIzD;;;;;;;OAOG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC;IAI3D;;;;;;;;;;;;;;;;;;OAkBG;IACH,MAAM,CAAC,CAAC,SAAS,mBAAmB,EAClC,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,KAAK,CAAC,GACnD,gBAAgB,CAAC,CAAC,EAAE,QAAQ,CAAC;IAIhC;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO,CAAC,CAAC,SAAS,mBAAmB,EACnC,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,KAAK,CAAC,GACnD,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC;IAI/B;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC;CAGvD;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAEtE"}
@@ -0,0 +1,259 @@
1
+ import { type ColumnBuilderRecord, createColumnFactory, type InferColumns, type InferInsertColumns, type InferUpdateColumns } from "./factory/column-builder";
2
+ import { createIndexFactory, type IndexBuilder } from "./factory/index-builder";
3
+ import { createRelationFactory, type InferDeepRelations, type RelationBuilderRecord } from "./factory/relation-builder";
4
+ /**
5
+ * 데이터베이스 테이블 정의 빌더
6
+ *
7
+ * Fluent API를 통해 테이블의 컬럼, PK, 인덱스, 관계를 정의
8
+ * DbContext에서 queryable()과 함께 사용하여 타입 안전한 쿼리 작성
9
+ *
10
+ * @template TColumns - 컬럼 정의 레코드 타입
11
+ * @template TRelations - 관계 정의 레코드 타입
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * // 테이블 정의
16
+ * const User = Table("User")
17
+ * .database("mydb")
18
+ * .columns((c) => ({
19
+ * id: c.bigint().autoIncrement(),
20
+ * name: c.varchar(100),
21
+ * email: c.varchar(200).nullable(),
22
+ * status: c.varchar(20).default("active"),
23
+ * }))
24
+ * .primaryKey("id")
25
+ * .indexes((i) => [i.index("email").unique()]);
26
+ *
27
+ * // DbContext에서 사용
28
+ * class MyDb extends DbContext {
29
+ * readonly user = queryable(this, User);
30
+ * }
31
+ * ```
32
+ *
33
+ * @see {@link Table} 팩토리 함수
34
+ * @see {@link queryable} Queryable 생성
35
+ */
36
+ export declare class TableBuilder<TColumns extends ColumnBuilderRecord, TRelations extends RelationBuilderRecord> {
37
+ readonly meta: {
38
+ name: string;
39
+ description?: string;
40
+ database?: string;
41
+ schema?: string;
42
+ columns?: TColumns;
43
+ primaryKey?: (keyof TColumns & string)[];
44
+ relations?: TRelations;
45
+ indexes?: IndexBuilder<(keyof TColumns & string)[]>[];
46
+ };
47
+ /** 컬럼 정의 (타입 추론용) */
48
+ readonly $columns: TColumns;
49
+ /** 관계 정의 (타입 추론용) */
50
+ readonly $relations: TRelations;
51
+ /** 전체 타입 추론 (컬럼 + 관계) */
52
+ readonly $infer: InferColumns<TColumns> & InferDeepRelations<TRelations>;
53
+ /** 컬럼만 타입 추론 */
54
+ readonly $inferColumns: InferColumns<TColumns>;
55
+ /** INSERT용 타입 추론 (autoIncrement 제외, nullable/default는 optional) */
56
+ readonly $inferInsert: InferInsertColumns<TColumns>;
57
+ /** UPDATE용 타입 추론 (모든 필드 optional) */
58
+ readonly $inferUpdate: InferUpdateColumns<TColumns>;
59
+ /**
60
+ * @param meta - 테이블 메타데이터
61
+ * @param meta.name - 테이블 이름
62
+ * @param meta.description - 테이블 설명 (주석)
63
+ * @param meta.database - 데이터베이스 이름
64
+ * @param meta.schema - 스키마 이름 (MSSQL/PostgreSQL)
65
+ * @param meta.columns - 컬럼 정의
66
+ * @param meta.primaryKey - PK 컬럼 배열
67
+ * @param meta.relations - 관계 정의
68
+ * @param meta.indexes - 인덱스 정의
69
+ */
70
+ constructor(meta: {
71
+ name: string;
72
+ description?: string;
73
+ database?: string;
74
+ schema?: string;
75
+ columns?: TColumns;
76
+ primaryKey?: (keyof TColumns & string)[];
77
+ relations?: TRelations;
78
+ indexes?: IndexBuilder<(keyof TColumns & string)[]>[];
79
+ });
80
+ /**
81
+ * 테이블 설명 설정
82
+ *
83
+ * @param desc - 테이블 설명 (DDL 주석으로 사용)
84
+ * @returns 새 TableBuilder 인스턴스
85
+ */
86
+ description(desc: string): TableBuilder<TColumns, TRelations>;
87
+ /**
88
+ * 데이터베이스 이름 설정
89
+ *
90
+ * @param db - 데이터베이스 이름
91
+ * @returns 새 TableBuilder 인스턴스
92
+ *
93
+ * @example
94
+ * ```typescript
95
+ * const User = Table("User").database("mydb");
96
+ * ```
97
+ */
98
+ database(db: string): TableBuilder<TColumns, TRelations>;
99
+ /**
100
+ * 스키마 이름 설정
101
+ *
102
+ * MSSQL, PostgreSQL에서 사용
103
+ *
104
+ * @param schema - 스키마 이름 (MSSQL: dbo, PostgreSQL: public)
105
+ * @returns 새 TableBuilder 인스턴스
106
+ *
107
+ * @example
108
+ * ```typescript
109
+ * const User = Table("User")
110
+ * .database("mydb")
111
+ * .schema("custom_schema");
112
+ * ```
113
+ */
114
+ schema(schema: string): TableBuilder<TColumns, TRelations>;
115
+ /**
116
+ * 컬럼 정의
117
+ *
118
+ * 컬럼 팩토리를 통해 타입 안전한 컬럼 정의
119
+ *
120
+ * @template TNewColumnDefs - 새 컬럼 정의 타입
121
+ * @param fn - 컬럼 팩토리를 받아 컬럼 정의를 반환하는 함수
122
+ * @returns 새 TableBuilder 인스턴스
123
+ *
124
+ * @example
125
+ * ```typescript
126
+ * const User = Table("User")
127
+ * .columns((c) => ({
128
+ * id: c.bigint().autoIncrement(),
129
+ * name: c.varchar(100),
130
+ * email: c.varchar(200).nullable(),
131
+ * createdAt: c.datetime().default("CURRENT_TIMESTAMP"),
132
+ * }));
133
+ * ```
134
+ */
135
+ columns<TNewColumnDefs extends ColumnBuilderRecord>(fn: (c: ReturnType<typeof createColumnFactory>) => TNewColumnDefs): TableBuilder<TNewColumnDefs, TRelations>;
136
+ /**
137
+ * Primary Key 설정
138
+ *
139
+ * @param columns - PK를 구성할 컬럼 이름들 (복합 PK 가능)
140
+ * @returns 새 TableBuilder 인스턴스
141
+ *
142
+ * @example
143
+ * ```typescript
144
+ * // 단일 PK
145
+ * const User = Table("User")
146
+ * .columns((c) => ({ id: c.bigint() }))
147
+ * .primaryKey("id");
148
+ *
149
+ * // 복합 PK
150
+ * const UserRole = Table("UserRole")
151
+ * .columns((c) => ({
152
+ * userId: c.bigint(),
153
+ * roleId: c.bigint(),
154
+ * }))
155
+ * .primaryKey("userId", "roleId");
156
+ * ```
157
+ */
158
+ primaryKey(...columns: (keyof TColumns & string)[]): TableBuilder<TColumns, TRelations>;
159
+ /**
160
+ * 인덱스 정의
161
+ *
162
+ * @param fn - 인덱스 팩토리를 받아 인덱스 배열을 반환하는 함수
163
+ * @returns 새 TableBuilder 인스턴스
164
+ *
165
+ * @example
166
+ * ```typescript
167
+ * const User = Table("User")
168
+ * .columns((c) => ({
169
+ * id: c.bigint(),
170
+ * email: c.varchar(200),
171
+ * name: c.varchar(100),
172
+ * }))
173
+ * .indexes((i) => [
174
+ * i.index("email").unique(),
175
+ * i.index("name").orderBy("ASC"),
176
+ * ]);
177
+ * ```
178
+ */
179
+ indexes(fn: (i: ReturnType<typeof createIndexFactory<keyof TColumns & string>>) => IndexBuilder<string[]>[]): TableBuilder<TColumns, TRelations>;
180
+ /**
181
+ * 관계 정의
182
+ *
183
+ * FK, 역참조 등 테이블 간 관계 설정
184
+ *
185
+ * @template T - 관계 정의 타입
186
+ * @param fn - 관계 팩토리를 받아 관계 정의를 반환하는 함수
187
+ * @returns 새 TableBuilder 인스턴스
188
+ *
189
+ * @example
190
+ * ```typescript
191
+ * const Post = Table("Post")
192
+ * .columns((c) => ({
193
+ * id: c.bigint().autoIncrement(),
194
+ * authorId: c.bigint(),
195
+ * title: c.varchar(200),
196
+ * }))
197
+ * .primaryKey("id")
198
+ * .relations((r) => ({
199
+ * // FK 관계 (N:1)
200
+ * author: r.foreignKey(["authorId"], () => User),
201
+ * }));
202
+ *
203
+ * const User = Table("User")
204
+ * .columns((c) => ({
205
+ * id: c.bigint().autoIncrement(),
206
+ * name: c.varchar(100),
207
+ * }))
208
+ * .primaryKey("id")
209
+ * .relations((r) => ({
210
+ * // 역참조 (1:N)
211
+ * posts: r.foreignKeyTarget(() => Post, "author"),
212
+ * }));
213
+ * ```
214
+ *
215
+ * @see {@link ForeignKeyBuilder} FK 빌더
216
+ * @see {@link ForeignKeyTargetBuilder} FK 역참조 빌더
217
+ */
218
+ relations<T extends RelationBuilderRecord>(fn: (r: ReturnType<typeof createRelationFactory<this, keyof TColumns & string>>) => T): TableBuilder<TColumns, T>;
219
+ }
220
+ /**
221
+ * 테이블 빌더 생성 팩토리 함수
222
+ *
223
+ * TableBuilder를 생성하여 Fluent API로 테이블 스키마 정의
224
+ *
225
+ * @param name - 테이블 이름
226
+ * @returns TableBuilder 인스턴스
227
+ *
228
+ * @example
229
+ * ```typescript
230
+ * // 기본 사용
231
+ * const User = Table("User")
232
+ * .database("mydb")
233
+ * .columns((c) => ({
234
+ * id: c.bigint().autoIncrement(),
235
+ * name: c.varchar(100),
236
+ * email: c.varchar(200).nullable(),
237
+ * }))
238
+ * .primaryKey("id")
239
+ * .indexes((i) => [i.index("email").unique()]);
240
+ *
241
+ * // 관계 포함
242
+ * const Post = Table("Post")
243
+ * .database("mydb")
244
+ * .columns((c) => ({
245
+ * id: c.bigint().autoIncrement(),
246
+ * authorId: c.bigint(),
247
+ * title: c.varchar(200),
248
+ * content: c.text(),
249
+ * }))
250
+ * .primaryKey("id")
251
+ * .relations((r) => ({
252
+ * author: r.foreignKey(["authorId"], () => User),
253
+ * }));
254
+ * ```
255
+ *
256
+ * @see {@link TableBuilder} 빌더 클래스
257
+ */
258
+ export declare function Table(name: string): TableBuilder<ColumnBuilderRecord, RelationBuilderRecord>;
259
+ //# sourceMappingURL=table-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-builder.d.ts","sourceRoot":"","sources":["../../../../../orm-common/src/schema/table-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,mBAAmB,EACxB,mBAAmB,EACnB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,KAAK,kBAAkB,EAAE,KAAK,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAMxH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,qBAAa,YAAY,CAAC,QAAQ,SAAS,mBAAmB,EAAE,UAAU,SAAS,qBAAqB;IA2BpG,QAAQ,CAAC,IAAI,EAAE;QACb,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAEhB,OAAO,CAAC,EAAE,QAAQ,CAAC;QACnB,UAAU,CAAC,EAAE,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC;QACzC,SAAS,CAAC,EAAE,UAAU,CAAC;QACvB,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;KACvD;IApCH,qBAAqB;IACrB,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAC;IAC7B,qBAAqB;IACrB,QAAQ,CAAC,UAAU,EAAG,UAAU,CAAC;IAEjC,yBAAyB;IACzB,QAAQ,CAAC,MAAM,EAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAC1E,gBAAgB;IAChB,QAAQ,CAAC,aAAa,EAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IAChD,mEAAmE;IACnE,QAAQ,CAAC,YAAY,EAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACrD,qCAAqC;IACrC,QAAQ,CAAC,YAAY,EAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAErD;;;;;;;;;;OAUG;gBAEQ,IAAI,EAAE;QACb,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAEhB,OAAO,CAAC,EAAE,QAAQ,CAAC;QACnB,UAAU,CAAC,EAAE,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC;QACzC,SAAS,CAAC,EAAE,UAAU,CAAC;QACvB,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;KACvD;IAGH;;;;;OAKG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM;IAIxB;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM;IAInB;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM;IAIrB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO,CAAC,cAAc,SAAS,mBAAmB,EAChD,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,KAAK,cAAc;IAQnE;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,UAAU,CAAC,GAAG,OAAO,EAAE,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE;IAOlD;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE;IAO3G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqCG;IACH,SAAS,CAAC,CAAC,SAAS,qBAAqB,EACvC,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,IAAI,EAAE,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,GACpF,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;CAM7B;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,4DAEjC"}
@@ -0,0 +1,183 @@
1
+ import type { DbContext } from "../db-context";
2
+ import type { Queryable } from "../exec/queryable";
3
+ import type { DataRecord } from "../types/db";
4
+ import { createRelationFactory, type InferDeepRelations, type RelationBuilderRecord } from "./factory/relation-builder";
5
+ /**
6
+ * 데이터베이스 뷰 정의 빌더
7
+ *
8
+ * Fluent API를 통해 뷰의 쿼리, 관계를 정의
9
+ * DbContext에서 queryable()과 함께 사용하여 타입 안전한 쿼리 작성
10
+ *
11
+ * @template TDbContext - DbContext 타입
12
+ * @template TData - 뷰 데이터 레코드 타입
13
+ * @template TRelations - 관계 정의 레코드 타입
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * // 뷰 정의
18
+ * const UserSummary = View("UserSummary")
19
+ * .database("mydb")
20
+ * .query((db: MyDb) =>
21
+ * db.user()
22
+ * .select(u => ({
23
+ * id: u.id,
24
+ * name: u.name,
25
+ * postCount: expr.subquery(
26
+ * db.post().where(p => [expr.eq(p.authorId, u.id)]),
27
+ * q => expr.count(q.id)
28
+ * ),
29
+ * }))
30
+ * );
31
+ *
32
+ * // DbContext에서 사용
33
+ * class MyDb extends DbContext {
34
+ * readonly userSummary = queryable(this, UserSummary);
35
+ * }
36
+ * ```
37
+ *
38
+ * @see {@link View} 팩토리 함수
39
+ * @see {@link queryable} Queryable 생성
40
+ */
41
+ export declare class ViewBuilder<TDbContext extends DbContext, TData extends DataRecord, TRelations extends RelationBuilderRecord> {
42
+ readonly meta: {
43
+ name: string;
44
+ description?: string;
45
+ database?: string;
46
+ schema?: string;
47
+ viewFn?: (db: TDbContext) => Queryable<TData, any>;
48
+ relations?: TRelations;
49
+ };
50
+ /** 관계 정의 (타입 추론용) */
51
+ readonly $relations: TRelations;
52
+ /** 전체 타입 추론 */
53
+ readonly $infer: TData;
54
+ /**
55
+ * @param meta - 뷰 메타데이터
56
+ * @param meta.name - 뷰 이름
57
+ * @param meta.description - 뷰 설명 (주석)
58
+ * @param meta.database - 데이터베이스 이름
59
+ * @param meta.schema - 스키마 이름 (MSSQL/PostgreSQL)
60
+ * @param meta.viewFn - 뷰 쿼리 정의 함수
61
+ * @param meta.relations - 관계 정의
62
+ */
63
+ constructor(meta: {
64
+ name: string;
65
+ description?: string;
66
+ database?: string;
67
+ schema?: string;
68
+ viewFn?: (db: TDbContext) => Queryable<TData, any>;
69
+ relations?: TRelations;
70
+ });
71
+ /**
72
+ * 뷰 설명 설정
73
+ *
74
+ * @param desc - 뷰 설명 (DDL 주석으로 사용)
75
+ * @returns 새 ViewBuilder 인스턴스
76
+ */
77
+ description(desc: string): ViewBuilder<TDbContext, TData, TRelations>;
78
+ /**
79
+ * 데이터베이스 이름 설정
80
+ *
81
+ * @param db - 데이터베이스 이름
82
+ * @returns 새 ViewBuilder 인스턴스
83
+ *
84
+ * @example
85
+ * ```typescript
86
+ * const UserSummary = View("UserSummary").database("mydb");
87
+ * ```
88
+ */
89
+ database(db: string): ViewBuilder<TDbContext, TData, TRelations>;
90
+ /**
91
+ * 스키마 이름 설정
92
+ *
93
+ * MSSQL, PostgreSQL에서 사용
94
+ *
95
+ * @param schema - 스키마 이름 (MSSQL: dbo, PostgreSQL: public)
96
+ * @returns 새 ViewBuilder 인스턴스
97
+ */
98
+ schema(schema: string): ViewBuilder<TDbContext, TData, TRelations>;
99
+ /**
100
+ * 뷰 쿼리 정의
101
+ *
102
+ * SELECT 쿼리를 통해 뷰의 데이터 소스 정의
103
+ *
104
+ * @template TViewData - 뷰 데이터 타입
105
+ * @template TDb - DbContext 타입
106
+ * @param viewFn - DbContext를 받아 Queryable을 반환하는 함수
107
+ * @returns 새 ViewBuilder 인스턴스
108
+ *
109
+ * @example
110
+ * ```typescript
111
+ * const ActiveUsers = View("ActiveUsers")
112
+ * .database("mydb")
113
+ * .query((db: MyDb) =>
114
+ * db.user()
115
+ * .where(u => [expr.eq(u.status, "active")])
116
+ * .select(u => ({
117
+ * id: u.id,
118
+ * name: u.name,
119
+ * email: u.email,
120
+ * }))
121
+ * );
122
+ * ```
123
+ */
124
+ query<TViewData extends DataRecord, TDb extends DbContext>(viewFn: (db: TDb) => Queryable<TViewData, any>): ViewBuilder<TDb, TViewData, TRelations>;
125
+ /**
126
+ * 관계 정의
127
+ *
128
+ * 다른 테이블/뷰와의 관계 설정
129
+ *
130
+ * @template T - 관계 정의 타입
131
+ * @param fn - 관계 팩토리를 받아 관계 정의를 반환하는 함수
132
+ * @returns 새 ViewBuilder 인스턴스
133
+ *
134
+ * @example
135
+ * ```typescript
136
+ * const UserSummary = View("UserSummary")
137
+ * .query((db: MyDb) => db.user().select(...))
138
+ * .relations((r) => ({
139
+ * posts: r.foreignKeyTarget(Post, "author"),
140
+ * }));
141
+ * ```
142
+ *
143
+ * @see {@link ForeignKeyBuilder} FK 빌더
144
+ * @see {@link ForeignKeyTargetBuilder} FK 역참조 빌더
145
+ */
146
+ relations<T extends RelationBuilderRecord>(fn: (r: ReturnType<typeof createRelationFactory<this, keyof TData & string>>) => T): ViewBuilder<TDbContext, TData & InferDeepRelations<T>, TRelations>;
147
+ }
148
+ /**
149
+ * 뷰 빌더 생성 팩토리 함수
150
+ *
151
+ * ViewBuilder를 생성하여 Fluent API로 뷰 스키마 정의
152
+ *
153
+ * @param name - 뷰 이름
154
+ * @returns ViewBuilder 인스턴스
155
+ *
156
+ * @example
157
+ * ```typescript
158
+ * // 기본 사용
159
+ * const ActiveUsers = View("ActiveUsers")
160
+ * .database("mydb")
161
+ * .query((db: MyDb) =>
162
+ * db.user()
163
+ * .where(u => [expr.eq(u.status, "active")])
164
+ * .select(u => ({ id: u.id, name: u.name }))
165
+ * );
166
+ *
167
+ * // 집계 뷰
168
+ * const UserStats = View("UserStats")
169
+ * .database("mydb")
170
+ * .query((db: MyDb) =>
171
+ * db.user()
172
+ * .groupBy(u => ({ status: u.status }))
173
+ * .select(u => ({
174
+ * status: u.status,
175
+ * count: expr.count(u.id),
176
+ * }))
177
+ * );
178
+ * ```
179
+ *
180
+ * @see {@link ViewBuilder} 빌더 클래스
181
+ */
182
+ export declare function View(name: string): ViewBuilder<DbContext, DataRecord, RelationBuilderRecord>;
183
+ //# sourceMappingURL=view-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view-builder.d.ts","sourceRoot":"","sources":["../../../../../orm-common/src/schema/view-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,KAAK,kBAAkB,EAAE,KAAK,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAMxH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,qBAAa,WAAW,CACtB,UAAU,SAAS,SAAS,EAC5B,KAAK,SAAS,UAAU,EACxB,UAAU,SAAS,qBAAqB;IAiBtC,QAAQ,CAAC,IAAI,EAAE;QACb,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,KAAK,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACnD,SAAS,CAAC,EAAE,UAAU,CAAC;KACxB;IAtBH,qBAAqB;IACrB,QAAQ,CAAC,UAAU,EAAG,UAAU,CAAC;IACjC,eAAe;IACf,QAAQ,CAAC,MAAM,EAAG,KAAK,CAAC;IAExB;;;;;;;;OAQG;gBAEQ,IAAI,EAAE;QACb,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,KAAK,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACnD,SAAS,CAAC,EAAE,UAAU,CAAC;KACxB;IAGH;;;;;OAKG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC;IAIrE;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC;IAIhE;;;;;;;OAOG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC;IAIlE;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,KAAK,CAAC,SAAS,SAAS,UAAU,EAAE,GAAG,SAAS,SAAS,EACvD,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,GAC7C,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,CAAC;IAI1C;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,SAAS,CAAC,CAAC,SAAS,qBAAqB,EACvC,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,IAAI,EAAE,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,GACjF,WAAW,CAAC,UAAU,EAAE,KAAK,GAAG,kBAAkB,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC;CAQtE;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,6DAEhC"}