@simplysm/orm-common 14.0.100 → 14.0.102
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/db-context.d.ts +0 -17
- package/dist/db-context.d.ts.map +1 -1
- package/dist/db-context.js +0 -17
- package/dist/db-context.js.map +1 -1
- package/dist/errors/db-transaction-error.d.ts +0 -15
- package/dist/errors/db-transaction-error.d.ts.map +1 -1
- package/dist/errors/db-transaction-error.js +0 -15
- package/dist/errors/db-transaction-error.js.map +1 -1
- package/dist/exec/executable.d.ts +0 -24
- package/dist/exec/executable.d.ts.map +1 -1
- package/dist/exec/executable.js +0 -24
- package/dist/exec/executable.js.map +1 -1
- package/dist/exec/queryable.d.ts +0 -300
- package/dist/exec/queryable.d.ts.map +1 -1
- package/dist/exec/queryable.js +0 -213
- package/dist/exec/queryable.js.map +1 -1
- package/dist/expr/expr.d.ts +0 -689
- package/dist/expr/expr.d.ts.map +1 -1
- package/dist/expr/expr.js +0 -689
- package/dist/expr/expr.js.map +1 -1
- package/dist/schema/factory/column-builder.d.ts +0 -86
- package/dist/schema/factory/column-builder.d.ts.map +1 -1
- package/dist/schema/factory/column-builder.js +0 -74
- package/dist/schema/factory/column-builder.js.map +1 -1
- package/dist/schema/factory/index-builder.d.ts +0 -60
- package/dist/schema/factory/index-builder.d.ts.map +1 -1
- package/dist/schema/factory/index-builder.js +0 -60
- package/dist/schema/factory/index-builder.js.map +1 -1
- package/dist/schema/factory/relation-builder.d.ts +0 -83
- package/dist/schema/factory/relation-builder.d.ts.map +1 -1
- package/dist/schema/factory/relation-builder.js +0 -77
- package/dist/schema/factory/relation-builder.js.map +1 -1
- package/dist/schema/procedure-builder.d.ts +0 -87
- package/dist/schema/procedure-builder.d.ts.map +1 -1
- package/dist/schema/procedure-builder.js +0 -87
- package/dist/schema/procedure-builder.js.map +1 -1
- package/dist/schema/table-builder.d.ts +0 -127
- package/dist/schema/table-builder.d.ts.map +1 -1
- package/dist/schema/table-builder.js +0 -127
- package/dist/schema/table-builder.js.map +1 -1
- package/dist/schema/view-builder.d.ts +0 -76
- package/dist/schema/view-builder.d.ts.map +1 -1
- package/dist/schema/view-builder.js +0 -76
- package/dist/schema/view-builder.js.map +1 -1
- package/dist/types/column.d.ts +0 -38
- package/dist/types/column.d.ts.map +1 -1
- package/dist/types/column.js +0 -13
- package/dist/types/column.js.map +1 -1
- package/dist/types/db.d.ts +0 -54
- package/dist/types/db.d.ts.map +1 -1
- package/dist/types/db.js +0 -8
- package/dist/types/db.js.map +1 -1
- package/dist/utils/result-parser.d.ts +0 -21
- package/dist/utils/result-parser.d.ts.map +1 -1
- package/dist/utils/result-parser.js +0 -24
- package/dist/utils/result-parser.js.map +1 -1
- package/package.json +2 -2
- package/src/db-context.ts +0 -17
- package/src/errors/db-transaction-error.ts +0 -15
- package/src/exec/executable.ts +0 -24
- package/src/exec/queryable.ts +0 -300
- package/src/expr/expr.ts +0 -689
- package/src/schema/factory/column-builder.ts +0 -86
- package/src/schema/factory/index-builder.ts +0 -60
- package/src/schema/factory/relation-builder.ts +0 -83
- package/src/schema/procedure-builder.ts +0 -87
- package/src/schema/table-builder.ts +0 -127
- package/src/schema/view-builder.ts +0 -76
- package/src/types/column.ts +0 -38
- package/src/types/db.ts +0 -54
- package/src/utils/result-parser.ts +0 -24
|
@@ -10,26 +10,6 @@ import { createRelationFactory, type InferDeepRelations, type RelationBuilderRec
|
|
|
10
10
|
* @template TColumns - Column 정의 레코드 타입
|
|
11
11
|
* @template TRelations - 관계 정의 레코드 타입
|
|
12
12
|
*
|
|
13
|
-
* @example
|
|
14
|
-
* ```typescript
|
|
15
|
-
* // Table definition
|
|
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
|
-
* // Used in DbContext
|
|
28
|
-
* class MyDb extends DbContext {
|
|
29
|
-
* readonly user = queryable(this, User);
|
|
30
|
-
* }
|
|
31
|
-
* ```
|
|
32
|
-
*
|
|
33
13
|
* @see {@link Table} factory 함수
|
|
34
14
|
* @see {@link queryable} Queryable 생성
|
|
35
15
|
*/
|
|
@@ -89,11 +69,6 @@ export declare class TableBuilder<TName extends string, TColumns extends ColumnB
|
|
|
89
69
|
*
|
|
90
70
|
* @param db - Database 이름
|
|
91
71
|
* @returns 새 TableBuilder 인스턴스
|
|
92
|
-
*
|
|
93
|
-
* @example
|
|
94
|
-
* ```typescript
|
|
95
|
-
* const User = Table("User").database("mydb");
|
|
96
|
-
* ```
|
|
97
72
|
*/
|
|
98
73
|
database(db: string): TableBuilder<TName, TColumns, TRelations>;
|
|
99
74
|
/**
|
|
@@ -103,13 +78,6 @@ export declare class TableBuilder<TName extends string, TColumns extends ColumnB
|
|
|
103
78
|
*
|
|
104
79
|
* @param schema - Schema 이름 (MSSQL: dbo, PostgreSQL: public)
|
|
105
80
|
* @returns 새 TableBuilder 인스턴스
|
|
106
|
-
*
|
|
107
|
-
* @example
|
|
108
|
-
* ```typescript
|
|
109
|
-
* const User = Table("User")
|
|
110
|
-
* .database("mydb")
|
|
111
|
-
* .schema("custom_schema");
|
|
112
|
-
* ```
|
|
113
81
|
*/
|
|
114
82
|
schema(schema: string): TableBuilder<TName, TColumns, TRelations>;
|
|
115
83
|
/**
|
|
@@ -120,17 +88,6 @@ export declare class TableBuilder<TName extends string, TColumns extends ColumnB
|
|
|
120
88
|
* @template TNewColumnDefs - 새 Column 정의 타입
|
|
121
89
|
* @param fn - Column factory를 받아 column 정의를 반환하는 함수
|
|
122
90
|
* @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
91
|
*/
|
|
135
92
|
columns<TNewColumnDefs extends ColumnBuilderRecord>(fn: (c: ReturnType<typeof createColumnFactory>) => TNewColumnDefs): TableBuilder<TName, TNewColumnDefs, TRelations>;
|
|
136
93
|
/**
|
|
@@ -138,22 +95,6 @@ export declare class TableBuilder<TName extends string, TColumns extends ColumnB
|
|
|
138
95
|
*
|
|
139
96
|
* @param columns - PK를 구성하는 column 이름 (복합 PK 지원)
|
|
140
97
|
* @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
98
|
*/
|
|
158
99
|
primaryKey(...columns: (keyof TColumns & string)[]): TableBuilder<TName, TColumns, TRelations>;
|
|
159
100
|
/**
|
|
@@ -161,20 +102,6 @@ export declare class TableBuilder<TName extends string, TColumns extends ColumnB
|
|
|
161
102
|
*
|
|
162
103
|
* @param fn - Index factory를 받아 index 배열을 반환하는 함수
|
|
163
104
|
* @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
105
|
*/
|
|
179
106
|
indexes(fn: (i: ReturnType<typeof createIndexFactory<keyof TColumns & string>>) => IndexBuilder<string[]>[]): TableBuilder<TName, TColumns, TRelations>;
|
|
180
107
|
/**
|
|
@@ -186,32 +113,6 @@ export declare class TableBuilder<TName extends string, TColumns extends ColumnB
|
|
|
186
113
|
* @param fn - 관계 factory를 받아 관계 정의를 반환하는 함수
|
|
187
114
|
* @returns 새 TableBuilder 인스턴스
|
|
188
115
|
*
|
|
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 relation (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
|
-
* // Reverse-reference (1:N)
|
|
211
|
-
* posts: r.foreignKeyTarget(() => Post, "author"),
|
|
212
|
-
* }));
|
|
213
|
-
* ```
|
|
214
|
-
*
|
|
215
116
|
* @see {@link ForeignKeyBuilder} FK builder
|
|
216
117
|
* @see {@link ForeignKeyTargetBuilder} FK reverse-reference builder
|
|
217
118
|
*/
|
|
@@ -225,34 +126,6 @@ export declare class TableBuilder<TName extends string, TColumns extends ColumnB
|
|
|
225
126
|
* @param name - Table 이름
|
|
226
127
|
* @returns TableBuilder 인스턴스
|
|
227
128
|
*
|
|
228
|
-
* @example
|
|
229
|
-
* ```typescript
|
|
230
|
-
* // Basic usage
|
|
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
|
-
* // With relations
|
|
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
129
|
* @see {@link TableBuilder} builder 클래스
|
|
257
130
|
*/
|
|
258
131
|
export declare function Table<TName extends string>(name: TName): TableBuilder<TName, ColumnBuilderRecord, RelationBuilderRecord>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-builder.d.ts","sourceRoot":"","sources":["../../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,EACL,qBAAqB,EACrB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC3B,MAAM,4BAA4B,CAAC;AAMpC
|
|
1
|
+
{"version":3,"file":"table-builder.d.ts","sourceRoot":"","sources":["../../src/schema/table-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,26 +13,6 @@ import { createRelationFactory, } from "./factory/relation-builder.js";
|
|
|
13
13
|
* @template TColumns - Column 정의 레코드 타입
|
|
14
14
|
* @template TRelations - 관계 정의 레코드 타입
|
|
15
15
|
*
|
|
16
|
-
* @example
|
|
17
|
-
* ```typescript
|
|
18
|
-
* // Table definition
|
|
19
|
-
* const User = Table("User")
|
|
20
|
-
* .database("mydb")
|
|
21
|
-
* .columns((c) => ({
|
|
22
|
-
* id: c.bigint().autoIncrement(),
|
|
23
|
-
* name: c.varchar(100),
|
|
24
|
-
* email: c.varchar(200).nullable(),
|
|
25
|
-
* status: c.varchar(20).default("active"),
|
|
26
|
-
* }))
|
|
27
|
-
* .primaryKey("id")
|
|
28
|
-
* .indexes((i) => [i.index("email").unique()]);
|
|
29
|
-
*
|
|
30
|
-
* // Used in DbContext
|
|
31
|
-
* class MyDb extends DbContext {
|
|
32
|
-
* readonly user = queryable(this, User);
|
|
33
|
-
* }
|
|
34
|
-
* ```
|
|
35
|
-
*
|
|
36
16
|
* @see {@link Table} factory 함수
|
|
37
17
|
* @see {@link queryable} Queryable 생성
|
|
38
18
|
*/
|
|
@@ -78,11 +58,6 @@ export class TableBuilder {
|
|
|
78
58
|
*
|
|
79
59
|
* @param db - Database 이름
|
|
80
60
|
* @returns 새 TableBuilder 인스턴스
|
|
81
|
-
*
|
|
82
|
-
* @example
|
|
83
|
-
* ```typescript
|
|
84
|
-
* const User = Table("User").database("mydb");
|
|
85
|
-
* ```
|
|
86
61
|
*/
|
|
87
62
|
database(db) {
|
|
88
63
|
return new TableBuilder({ ...this.meta, database: db });
|
|
@@ -94,13 +69,6 @@ export class TableBuilder {
|
|
|
94
69
|
*
|
|
95
70
|
* @param schema - Schema 이름 (MSSQL: dbo, PostgreSQL: public)
|
|
96
71
|
* @returns 새 TableBuilder 인스턴스
|
|
97
|
-
*
|
|
98
|
-
* @example
|
|
99
|
-
* ```typescript
|
|
100
|
-
* const User = Table("User")
|
|
101
|
-
* .database("mydb")
|
|
102
|
-
* .schema("custom_schema");
|
|
103
|
-
* ```
|
|
104
72
|
*/
|
|
105
73
|
schema(schema) {
|
|
106
74
|
return new TableBuilder({ ...this.meta, schema });
|
|
@@ -113,17 +81,6 @@ export class TableBuilder {
|
|
|
113
81
|
* @template TNewColumnDefs - 새 Column 정의 타입
|
|
114
82
|
* @param fn - Column factory를 받아 column 정의를 반환하는 함수
|
|
115
83
|
* @returns 새 TableBuilder 인스턴스
|
|
116
|
-
*
|
|
117
|
-
* @example
|
|
118
|
-
* ```typescript
|
|
119
|
-
* const User = Table("User")
|
|
120
|
-
* .columns((c) => ({
|
|
121
|
-
* id: c.bigint().autoIncrement(),
|
|
122
|
-
* name: c.varchar(100),
|
|
123
|
-
* email: c.varchar(200).nullable(),
|
|
124
|
-
* createdAt: c.datetime().default("CURRENT_TIMESTAMP"),
|
|
125
|
-
* }));
|
|
126
|
-
* ```
|
|
127
84
|
*/
|
|
128
85
|
columns(fn) {
|
|
129
86
|
return new TableBuilder({
|
|
@@ -136,22 +93,6 @@ export class TableBuilder {
|
|
|
136
93
|
*
|
|
137
94
|
* @param columns - PK를 구성하는 column 이름 (복합 PK 지원)
|
|
138
95
|
* @returns 새 TableBuilder 인스턴스
|
|
139
|
-
*
|
|
140
|
-
* @example
|
|
141
|
-
* ```typescript
|
|
142
|
-
* // 단일 PK
|
|
143
|
-
* const User = Table("User")
|
|
144
|
-
* .columns((c) => ({ id: c.bigint() }))
|
|
145
|
-
* .primaryKey("id");
|
|
146
|
-
*
|
|
147
|
-
* // 복합 PK
|
|
148
|
-
* const UserRole = Table("UserRole")
|
|
149
|
-
* .columns((c) => ({
|
|
150
|
-
* userId: c.bigint(),
|
|
151
|
-
* roleId: c.bigint(),
|
|
152
|
-
* }))
|
|
153
|
-
* .primaryKey("userId", "roleId");
|
|
154
|
-
* ```
|
|
155
96
|
*/
|
|
156
97
|
primaryKey(...columns) {
|
|
157
98
|
return new TableBuilder({
|
|
@@ -164,20 +105,6 @@ export class TableBuilder {
|
|
|
164
105
|
*
|
|
165
106
|
* @param fn - Index factory를 받아 index 배열을 반환하는 함수
|
|
166
107
|
* @returns 새 TableBuilder 인스턴스
|
|
167
|
-
*
|
|
168
|
-
* @example
|
|
169
|
-
* ```typescript
|
|
170
|
-
* const User = Table("User")
|
|
171
|
-
* .columns((c) => ({
|
|
172
|
-
* id: c.bigint(),
|
|
173
|
-
* email: c.varchar(200),
|
|
174
|
-
* name: c.varchar(100),
|
|
175
|
-
* }))
|
|
176
|
-
* .indexes((i) => [
|
|
177
|
-
* i.index("email").unique(),
|
|
178
|
-
* i.index("name").orderBy("ASC"),
|
|
179
|
-
* ]);
|
|
180
|
-
* ```
|
|
181
108
|
*/
|
|
182
109
|
indexes(fn) {
|
|
183
110
|
return new TableBuilder({
|
|
@@ -194,32 +121,6 @@ export class TableBuilder {
|
|
|
194
121
|
* @param fn - 관계 factory를 받아 관계 정의를 반환하는 함수
|
|
195
122
|
* @returns 새 TableBuilder 인스턴스
|
|
196
123
|
*
|
|
197
|
-
* @example
|
|
198
|
-
* ```typescript
|
|
199
|
-
* const Post = Table("Post")
|
|
200
|
-
* .columns((c) => ({
|
|
201
|
-
* id: c.bigint().autoIncrement(),
|
|
202
|
-
* authorId: c.bigint(),
|
|
203
|
-
* title: c.varchar(200),
|
|
204
|
-
* }))
|
|
205
|
-
* .primaryKey("id")
|
|
206
|
-
* .relations((r) => ({
|
|
207
|
-
* // FK relation (N:1)
|
|
208
|
-
* author: r.foreignKey(["authorId"], () => User),
|
|
209
|
-
* }));
|
|
210
|
-
*
|
|
211
|
-
* const User = Table("User")
|
|
212
|
-
* .columns((c) => ({
|
|
213
|
-
* id: c.bigint().autoIncrement(),
|
|
214
|
-
* name: c.varchar(100),
|
|
215
|
-
* }))
|
|
216
|
-
* .primaryKey("id")
|
|
217
|
-
* .relations((r) => ({
|
|
218
|
-
* // Reverse-reference (1:N)
|
|
219
|
-
* posts: r.foreignKeyTarget(() => Post, "author"),
|
|
220
|
-
* }));
|
|
221
|
-
* ```
|
|
222
|
-
*
|
|
223
124
|
* @see {@link ForeignKeyBuilder} FK builder
|
|
224
125
|
* @see {@link ForeignKeyTargetBuilder} FK reverse-reference builder
|
|
225
126
|
*/
|
|
@@ -241,34 +142,6 @@ export class TableBuilder {
|
|
|
241
142
|
* @param name - Table 이름
|
|
242
143
|
* @returns TableBuilder 인스턴스
|
|
243
144
|
*
|
|
244
|
-
* @example
|
|
245
|
-
* ```typescript
|
|
246
|
-
* // Basic usage
|
|
247
|
-
* const User = Table("User")
|
|
248
|
-
* .database("mydb")
|
|
249
|
-
* .columns((c) => ({
|
|
250
|
-
* id: c.bigint().autoIncrement(),
|
|
251
|
-
* name: c.varchar(100),
|
|
252
|
-
* email: c.varchar(200).nullable(),
|
|
253
|
-
* }))
|
|
254
|
-
* .primaryKey("id")
|
|
255
|
-
* .indexes((i) => [i.index("email").unique()]);
|
|
256
|
-
*
|
|
257
|
-
* // With relations
|
|
258
|
-
* const Post = Table("Post")
|
|
259
|
-
* .database("mydb")
|
|
260
|
-
* .columns((c) => ({
|
|
261
|
-
* id: c.bigint().autoIncrement(),
|
|
262
|
-
* authorId: c.bigint(),
|
|
263
|
-
* title: c.varchar(200),
|
|
264
|
-
* content: c.text(),
|
|
265
|
-
* }))
|
|
266
|
-
* .primaryKey("id")
|
|
267
|
-
* .relations((r) => ({
|
|
268
|
-
* author: r.foreignKey(["authorId"], () => User),
|
|
269
|
-
* }));
|
|
270
|
-
* ```
|
|
271
|
-
*
|
|
272
145
|
* @see {@link TableBuilder} builder 클래스
|
|
273
146
|
*/
|
|
274
147
|
export function Table(name) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-builder.js","sourceRoot":"","sources":["../../src/schema/table-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,mBAAmB,GAIpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAqB,MAAM,yBAAyB,CAAC;AAChF,OAAO,EACL,qBAAqB,GAGtB,MAAM,4BAA4B,CAAC;AAEpC,+CAA+C;AAC/C,eAAe;AACf,+CAA+C;AAE/C
|
|
1
|
+
{"version":3,"file":"table-builder.js","sourceRoot":"","sources":["../../src/schema/table-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,mBAAmB,GAIpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAqB,MAAM,yBAAyB,CAAC;AAChF,OAAO,EACL,qBAAqB,GAGtB,MAAM,4BAA4B,CAAC;AAEpC,+CAA+C;AAC/C,eAAe;AACf,+CAA+C;AAE/C;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,YAAY;IA+BZ;IA1BX,yBAAyB;IAChB,QAAQ,CAAY;IAC7B,qBAAqB;IACZ,UAAU,CAAc;IAEjC,sDAAsD;IAC7C,YAAY,CAA2D;IAChF,sBAAsB;IACb,aAAa,CAA0B;IAChD,kEAAkE;IACzD,YAAY,CAAgC;IACrD,oCAAoC;IAC3B,YAAY,CAAgC;IAErD;;;;;;;;;;OAUG;IACH,YACW,IAUR;QAVQ,SAAI,GAAJ,IAAI,CAUZ;IACA,CAAC;IAEJ;;;;;OAKG;IACH,WAAW,CAAC,IAAY;QACtB,OAAO,IAAI,YAAY,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED;;;;;OAKG;IACH,QAAQ,CAAC,EAAU;QACjB,OAAO,IAAI,YAAY,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,MAAc;QACnB,OAAO,IAAI,YAAY,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACpD,CAAC;IAED;;;;;;;;OAQG;IACH,OAAO,CACL,EAAiE;QAEjE,OAAO,IAAI,YAAY,CAAoC;YACzD,GAAG,IAAI,CAAC,IAAI;YACZ,OAAO,EAAE,EAAE,CAAC,mBAAmB,EAAE,CAAC;SACnC,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,GAAG,OAAoC;QAChD,OAAO,IAAI,YAAY,CAAC;YACtB,GAAG,IAAI,CAAC,IAAI;YACZ,UAAU,EAAE,OAAO;SACpB,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,OAAO,CACL,EAE6B;QAE7B,OAAO,IAAI,YAAY,CAAC;YACtB,GAAG,IAAI,CAAC,IAAI;YACZ,OAAO,EAAE,EAAE,CAAC,kBAAkB,EAA2B,CAAC;SAC3D,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;OAWG;IACH,SAAS,CACP,EAAqF;QAErF,OAAO,IAAI,YAAY,CAAC;YACtB,GAAG,IAAI,CAAC,IAAI;YACZ,SAAS,EAAE,EAAE,CAAC,qBAAqB,CAAgC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;SAChF,CAAC,CAAC;IACL,CAAC;CACF;AAED,+CAA+C;AAC/C,WAAW;AACX,+CAA+C;AAE/C;;;;;;;;;GASG;AACH,MAAM,UAAU,KAAK,CAAuB,IAAW;IACrD,OAAO,IAAI,YAAY,CAAoD,EAAE,IAAI,EAAE,CAAC,CAAC;AACvF,CAAC"}
|
|
@@ -12,29 +12,6 @@ import { createRelationFactory, type InferDeepRelations, type RelationBuilderRec
|
|
|
12
12
|
* @template TData - View 데이터 레코드 타입
|
|
13
13
|
* @template TRelations - 관계 정의 레코드 타입
|
|
14
14
|
*
|
|
15
|
-
* @example
|
|
16
|
-
* ```typescript
|
|
17
|
-
* // View definition
|
|
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
|
-
* // Used in DbContext
|
|
33
|
-
* class MyDb extends DbContext {
|
|
34
|
-
* readonly userSummary = queryable(this, UserSummary);
|
|
35
|
-
* }
|
|
36
|
-
* ```
|
|
37
|
-
*
|
|
38
15
|
* @see {@link View} factory 함수
|
|
39
16
|
* @see {@link queryable} Queryable 생성
|
|
40
17
|
*/
|
|
@@ -80,11 +57,6 @@ export declare class ViewBuilder<TDbContext extends DbContextBase, TData extends
|
|
|
80
57
|
*
|
|
81
58
|
* @param db - Database 이름
|
|
82
59
|
* @returns 새 ViewBuilder 인스턴스
|
|
83
|
-
*
|
|
84
|
-
* @example
|
|
85
|
-
* ```typescript
|
|
86
|
-
* const UserSummary = View("UserSummary").database("mydb");
|
|
87
|
-
* ```
|
|
88
60
|
*/
|
|
89
61
|
database(db: string): ViewBuilder<TDbContext, TData, TRelations>;
|
|
90
62
|
/**
|
|
@@ -105,21 +77,6 @@ export declare class ViewBuilder<TDbContext extends DbContextBase, TData extends
|
|
|
105
77
|
* @template TDb - DbContext 타입
|
|
106
78
|
* @param viewFn - DbContext를 받아 Queryable을 반환하는 함수
|
|
107
79
|
* @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
80
|
*/
|
|
124
81
|
query<TViewData extends DataRecord, TDb extends DbContextBase>(viewFn: (db: TDb) => Queryable<TViewData, any>): ViewBuilder<TDb, TViewData, TRelations>;
|
|
125
82
|
/**
|
|
@@ -131,15 +88,6 @@ export declare class ViewBuilder<TDbContext extends DbContextBase, TData extends
|
|
|
131
88
|
* @param fn - 관계 factory를 받아 관계 정의를 반환하는 함수
|
|
132
89
|
* @returns 새 ViewBuilder 인스턴스
|
|
133
90
|
*
|
|
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
91
|
* @see {@link ForeignKeyBuilder} FK builder
|
|
144
92
|
* @see {@link ForeignKeyTargetBuilder} FK reverse-reference builder
|
|
145
93
|
*/
|
|
@@ -153,30 +101,6 @@ export declare class ViewBuilder<TDbContext extends DbContextBase, TData extends
|
|
|
153
101
|
* @param name - View 이름
|
|
154
102
|
* @returns ViewBuilder 인스턴스
|
|
155
103
|
*
|
|
156
|
-
* @example
|
|
157
|
-
* ```typescript
|
|
158
|
-
* // Basic usage
|
|
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
|
-
* // 집계 View
|
|
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
104
|
* @see {@link ViewBuilder} builder 클래스
|
|
181
105
|
*/
|
|
182
106
|
export declare function View(name: string): ViewBuilder<DbContextBase, DataRecord, RelationBuilderRecord>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view-builder.d.ts","sourceRoot":"","sources":["../../src/schema/view-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,qBAAqB,EACrB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC3B,MAAM,4BAA4B,CAAC;AAMpC
|
|
1
|
+
{"version":3,"file":"view-builder.d.ts","sourceRoot":"","sources":["../../src/schema/view-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,qBAAqB,EACrB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC3B,MAAM,4BAA4B,CAAC;AAMpC;;;;;;;;;;;;GAYG;AACH,qBAAa,WAAW,CACtB,UAAU,SAAS,aAAa,EAChC,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,YAAY,EAAG,KAAK,CAAC;IAE9B;;;;;;;;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;;;;;OAKG;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;;;;;;;;;OASG;IACH,KAAK,CAAC,SAAS,SAAS,UAAU,EAAE,GAAG,SAAS,aAAa,EAC3D,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,GAC7C,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,CAAC;IAI1C;;;;;;;;;;;OAWG;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,CAAC,CAAC;CAM7D;AAMD;;;;;;;;;GASG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,iEAEhC"}
|
|
@@ -12,29 +12,6 @@ import { createRelationFactory, } from "./factory/relation-builder.js";
|
|
|
12
12
|
* @template TData - View 데이터 레코드 타입
|
|
13
13
|
* @template TRelations - 관계 정의 레코드 타입
|
|
14
14
|
*
|
|
15
|
-
* @example
|
|
16
|
-
* ```typescript
|
|
17
|
-
* // View definition
|
|
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
|
-
* // Used in DbContext
|
|
33
|
-
* class MyDb extends DbContext {
|
|
34
|
-
* readonly userSummary = queryable(this, UserSummary);
|
|
35
|
-
* }
|
|
36
|
-
* ```
|
|
37
|
-
*
|
|
38
15
|
* @see {@link View} factory 함수
|
|
39
16
|
* @see {@link queryable} Queryable 생성
|
|
40
17
|
*/
|
|
@@ -70,11 +47,6 @@ export class ViewBuilder {
|
|
|
70
47
|
*
|
|
71
48
|
* @param db - Database 이름
|
|
72
49
|
* @returns 새 ViewBuilder 인스턴스
|
|
73
|
-
*
|
|
74
|
-
* @example
|
|
75
|
-
* ```typescript
|
|
76
|
-
* const UserSummary = View("UserSummary").database("mydb");
|
|
77
|
-
* ```
|
|
78
50
|
*/
|
|
79
51
|
database(db) {
|
|
80
52
|
return new ViewBuilder({ ...this.meta, database: db });
|
|
@@ -99,21 +71,6 @@ export class ViewBuilder {
|
|
|
99
71
|
* @template TDb - DbContext 타입
|
|
100
72
|
* @param viewFn - DbContext를 받아 Queryable을 반환하는 함수
|
|
101
73
|
* @returns 새 ViewBuilder 인스턴스
|
|
102
|
-
*
|
|
103
|
-
* @example
|
|
104
|
-
* ```typescript
|
|
105
|
-
* const ActiveUsers = View("ActiveUsers")
|
|
106
|
-
* .database("mydb")
|
|
107
|
-
* .query((db: MyDb) =>
|
|
108
|
-
* db.user()
|
|
109
|
-
* .where(u => [expr.eq(u.status, "active")])
|
|
110
|
-
* .select(u => ({
|
|
111
|
-
* id: u.id,
|
|
112
|
-
* name: u.name,
|
|
113
|
-
* email: u.email,
|
|
114
|
-
* }))
|
|
115
|
-
* );
|
|
116
|
-
* ```
|
|
117
74
|
*/
|
|
118
75
|
query(viewFn) {
|
|
119
76
|
return new ViewBuilder({ ...this.meta, viewFn });
|
|
@@ -127,15 +84,6 @@ export class ViewBuilder {
|
|
|
127
84
|
* @param fn - 관계 factory를 받아 관계 정의를 반환하는 함수
|
|
128
85
|
* @returns 새 ViewBuilder 인스턴스
|
|
129
86
|
*
|
|
130
|
-
* @example
|
|
131
|
-
* ```typescript
|
|
132
|
-
* const UserSummary = View("UserSummary")
|
|
133
|
-
* .query((db: MyDb) => db.user().select(...))
|
|
134
|
-
* .relations((r) => ({
|
|
135
|
-
* posts: r.foreignKeyTarget(Post, "author"),
|
|
136
|
-
* }));
|
|
137
|
-
* ```
|
|
138
|
-
*
|
|
139
87
|
* @see {@link ForeignKeyBuilder} FK builder
|
|
140
88
|
* @see {@link ForeignKeyTargetBuilder} FK reverse-reference builder
|
|
141
89
|
*/
|
|
@@ -157,30 +105,6 @@ export class ViewBuilder {
|
|
|
157
105
|
* @param name - View 이름
|
|
158
106
|
* @returns ViewBuilder 인스턴스
|
|
159
107
|
*
|
|
160
|
-
* @example
|
|
161
|
-
* ```typescript
|
|
162
|
-
* // Basic usage
|
|
163
|
-
* const ActiveUsers = View("ActiveUsers")
|
|
164
|
-
* .database("mydb")
|
|
165
|
-
* .query((db: MyDb) =>
|
|
166
|
-
* db.user()
|
|
167
|
-
* .where(u => [expr.eq(u.status, "active")])
|
|
168
|
-
* .select(u => ({ id: u.id, name: u.name }))
|
|
169
|
-
* );
|
|
170
|
-
*
|
|
171
|
-
* // 집계 View
|
|
172
|
-
* const UserStats = View("UserStats")
|
|
173
|
-
* .database("mydb")
|
|
174
|
-
* .query((db: MyDb) =>
|
|
175
|
-
* db.user()
|
|
176
|
-
* .groupBy(u => ({ status: u.status }))
|
|
177
|
-
* .select(u => ({
|
|
178
|
-
* status: u.status,
|
|
179
|
-
* count: expr.count(u.id),
|
|
180
|
-
* }))
|
|
181
|
-
* );
|
|
182
|
-
* ```
|
|
183
|
-
*
|
|
184
108
|
* @see {@link ViewBuilder} builder 클래스
|
|
185
109
|
*/
|
|
186
110
|
export function View(name) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view-builder.js","sourceRoot":"","sources":["../../src/schema/view-builder.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,qBAAqB,GAGtB,MAAM,4BAA4B,CAAC;AAEpC,+CAA+C;AAC/C,cAAc;AACd,+CAA+C;AAE/C
|
|
1
|
+
{"version":3,"file":"view-builder.js","sourceRoot":"","sources":["../../src/schema/view-builder.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,qBAAqB,GAGtB,MAAM,4BAA4B,CAAC;AAEpC,+CAA+C;AAC/C,cAAc;AACd,+CAA+C;AAE/C;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,WAAW;IAoBX;IAfX,qBAAqB;IACZ,UAAU,CAAc;IACjC,eAAe;IACN,YAAY,CAAS;IAE9B;;;;;;;;OAQG;IACH,YACW,IAOR;QAPQ,SAAI,GAAJ,IAAI,CAOZ;IACA,CAAC;IAEJ;;;;;OAKG;IACH,WAAW,CAAC,IAAY;QACtB,OAAO,IAAI,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED;;;;;OAKG;IACH,QAAQ,CAAC,EAAU;QACjB,OAAO,IAAI,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;IACzD,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,MAAc;QACnB,OAAO,IAAI,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACnD,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CACH,MAA8C;QAE9C,OAAO,IAAI,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACnD,CAAC;IAED;;;;;;;;;;;OAWG;IACH,SAAS,CACP,EAAkF;QAElF,OAAO,IAAI,WAAW,CAAC;YACrB,GAAG,IAAI,CAAC,IAAI;YACZ,SAAS,EAAE,EAAE,CAAC,qBAAqB,CAA6B,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;SAC7E,CAAQ,CAAC;IACZ,CAAC;CACF;AAED,+CAA+C;AAC/C,UAAU;AACV,+CAA+C;AAE/C;;;;;;;;;GASG;AACH,MAAM,UAAU,IAAI,CAAC,IAAY;IAC/B,OAAO,IAAI,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AACnC,CAAC"}
|