sonamu 0.5.5 → 0.5.7
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/api/decorators.d.ts +1 -0
- package/dist/api/decorators.d.ts.map +1 -1
- package/dist/api/decorators.js +1 -1
- package/dist/api/decorators.js.map +1 -1
- package/dist/api/sonamu.d.ts.map +1 -1
- package/dist/api/sonamu.js +1 -1
- package/dist/api/sonamu.js.map +1 -1
- package/dist/bin/build-config.d.ts +4 -0
- package/dist/bin/build-config.d.ts.map +1 -1
- package/dist/bin/build-config.js +1 -1
- package/dist/bin/build-config.js.map +1 -1
- package/dist/bin/cli-wrapper.js +1 -1
- package/dist/bin/cli-wrapper.js.map +1 -1
- package/dist/database/db.d.ts +3 -0
- package/dist/database/db.d.ts.map +1 -1
- package/dist/database/db.js +1 -1
- package/dist/database/db.js.map +1 -1
- package/dist/database/puri-wrapper.d.ts +22 -10
- package/dist/database/puri-wrapper.d.ts.map +1 -1
- package/dist/database/puri-wrapper.js +1 -1
- package/dist/database/puri-wrapper.js.map +1 -1
- package/dist/database/puri.d.ts +91 -65
- package/dist/database/puri.d.ts.map +1 -1
- package/dist/database/puri.js +1 -1
- package/dist/database/puri.js.map +1 -1
- package/dist/database/puri.types.d.ts +28 -42
- package/dist/database/puri.types.d.ts.map +1 -1
- package/dist/database/transaction-context.d.ts +3 -3
- package/dist/database/transaction-context.d.ts.map +1 -1
- package/dist/database/transaction-context.js.map +1 -1
- package/dist/templates/service.template.d.ts.map +1 -1
- package/dist/templates/service.template.js +1 -1
- package/dist/templates/service.template.js.map +1 -1
- package/dist/types/types.d.ts +1 -1
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/types.js.map +1 -1
- package/package.json +1 -2
- package/src/api/decorators.ts +14 -5
- package/src/api/sonamu.ts +21 -20
- package/src/bin/build-config.ts +7 -3
- package/src/bin/cli-wrapper.ts +31 -12
- package/src/database/db.ts +44 -9
- package/src/database/puri-wrapper.ts +104 -26
- package/src/database/puri.ts +434 -543
- package/src/database/puri.types.ts +99 -200
- package/src/database/transaction-context.ts +4 -4
- package/src/templates/service.template.ts +10 -1
- package/src/types/types.ts +1 -1
- package/dist/entity/migrator.d.ts +0 -135
- package/dist/entity/migrator.d.ts.map +0 -1
- package/dist/entity/migrator.js +0 -2
- package/dist/entity/migrator.js.map +0 -1
|
@@ -1,128 +1,41 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
// EmptyRecord가 남아있으면 AvailableColumns 추론이 제대로 되지 않음 (EmptyRecord를 {}로 변경하면 정상 동작함)
|
|
9
|
-
export type MergeJoined<TExisting, TNew> = TExisting extends EmptyRecord
|
|
10
|
-
? TNew // 첫 join: EmptyRecord 제거하고 대체
|
|
11
|
-
: TExisting & TNew; // 이후 join: 누적
|
|
12
|
-
|
|
13
|
-
type DeepEqual<T, U> = [T] extends [U]
|
|
14
|
-
? [U] extends [T]
|
|
15
|
-
? true
|
|
16
|
-
: false
|
|
17
|
-
: false;
|
|
18
|
-
type Extends<T, U> =
|
|
19
|
-
DeepEqual<T, Record<string, never>> extends true
|
|
20
|
-
? false
|
|
21
|
-
: T extends U
|
|
22
|
-
? true
|
|
23
|
-
: false;
|
|
24
|
-
type NullableToOptional<T> = {
|
|
25
|
-
[K in keyof T as T[K] extends null | undefined ? K : never]?: Exclude<
|
|
26
|
-
T[K],
|
|
27
|
-
null | undefined
|
|
28
|
-
>;
|
|
29
|
-
} & Partial<{
|
|
30
|
-
[K in keyof T as T[K] extends null | undefined ? never : K]: T[K];
|
|
31
|
-
}>;
|
|
32
|
-
|
|
33
|
-
// Join 등이 Empty 상태일 떄 {}가 아니라 EmptyRecord를 써서
|
|
34
|
-
export type EmptyRecord = Record<string, never>;
|
|
1
|
+
// 메타데이터 컬럼 제외
|
|
2
|
+
type ExcludeMetadataColumns<T> = T extends {
|
|
3
|
+
__fulltext__: readonly (infer _Col)[];
|
|
4
|
+
}
|
|
5
|
+
? Omit<T, "__fulltext__">
|
|
6
|
+
: T;
|
|
35
7
|
|
|
8
|
+
// TTables의 모든 테이블에서 사용 가능한 컬럼 경로
|
|
9
|
+
export type AvailableColumns<TTables extends Record<string, any>> =
|
|
10
|
+
| {
|
|
11
|
+
[TAlias in keyof TTables]: `${TAlias & string}.${ExcludeMetadataColumns<keyof TTables[TAlias]> & string}`;
|
|
12
|
+
}[keyof TTables]
|
|
13
|
+
| (IsSingleKey<TTables> extends true
|
|
14
|
+
? ExcludeMetadataColumns<keyof TTables[keyof TTables]> // 단일 테이블이면 컬럼명만도 허용
|
|
15
|
+
: never);
|
|
36
16
|
// Group By, Order By, Having 등에서 선택 가능한 컬럼
|
|
37
17
|
export type ResultAvailableColumns<
|
|
38
|
-
|
|
39
|
-
T extends keyof TSchema | string,
|
|
40
|
-
TOriginal = any,
|
|
18
|
+
TTables extends Record<string, any>,
|
|
41
19
|
TResult = any,
|
|
42
|
-
|
|
43
|
-
> =
|
|
44
|
-
| AvailableColumns<TSchema, T, TOriginal, TJoined>
|
|
45
|
-
| `${keyof TResult & string}`;
|
|
46
|
-
|
|
47
|
-
// 사용 가능한 컬럼 경로 타입 (메인 테이블 + 조인된 테이블들)
|
|
48
|
-
export type AvailableColumns<
|
|
49
|
-
TSchema,
|
|
50
|
-
T extends keyof TSchema | string,
|
|
51
|
-
TOriginal = any,
|
|
52
|
-
TJoined = EmptyRecord,
|
|
53
|
-
> = T extends keyof TSchema
|
|
54
|
-
? // 기존 테이블 케이스
|
|
55
|
-
| (Extends<TJoined, Record<string, any>> extends false
|
|
56
|
-
? // 이게 TSchema[T]에 존재하면
|
|
57
|
-
keyof TSchema[T]
|
|
58
|
-
: {
|
|
59
|
-
[K in keyof TJoined]: TJoined[K] extends Record<string, any>
|
|
60
|
-
? `${string & K}.${keyof TJoined[K] & string}`
|
|
61
|
-
: never;
|
|
62
|
-
}[keyof TJoined])
|
|
63
|
-
| `${T & string}.${keyof TSchema[T] & string}`
|
|
64
|
-
: // 서브쿼리 케이스 (T는 alias string)
|
|
65
|
-
| keyof TOriginal
|
|
66
|
-
| `${T & string}.${keyof TOriginal & string}`
|
|
67
|
-
| (Extends<TJoined, Record<string, any>> extends true
|
|
68
|
-
? {
|
|
69
|
-
[K in keyof TJoined]: TJoined[K] extends Record<string, any>
|
|
70
|
-
? `${string & K}.${keyof TJoined[K] & string}`
|
|
71
|
-
: never;
|
|
72
|
-
}[keyof TJoined]
|
|
73
|
-
: never);
|
|
20
|
+
> = AvailableColumns<TTables> | `${keyof TResult & string}`;
|
|
74
21
|
|
|
75
|
-
//
|
|
76
|
-
export type
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
Path extends string,
|
|
80
|
-
TOriginal = any,
|
|
81
|
-
TJoined = EmptyRecord,
|
|
82
|
-
> = T extends keyof TSchema
|
|
83
|
-
? // 기존 테이블 케이스
|
|
84
|
-
Path extends keyof TSchema[T]
|
|
85
|
-
? TSchema[T][Path] // 메인 테이블 컬럼
|
|
86
|
-
: Path extends `${T & string}.${infer Column}`
|
|
87
|
-
? Column extends keyof TSchema[T]
|
|
88
|
-
? TSchema[T][Column]
|
|
89
|
-
: never
|
|
90
|
-
: Path extends `${infer Table}.${infer Column}`
|
|
91
|
-
? Table extends keyof TJoined
|
|
92
|
-
? TJoined[Table] extends Record<string, any>
|
|
93
|
-
? Column extends keyof TJoined[Table]
|
|
94
|
-
? TJoined[Table][Column]
|
|
95
|
-
: never
|
|
96
|
-
: never
|
|
97
|
-
: never
|
|
98
|
-
: never
|
|
99
|
-
: // 서브쿼리 케이스 (T는 alias)
|
|
100
|
-
Path extends `${T & string}.${infer Column}`
|
|
101
|
-
? Column extends keyof TOriginal
|
|
102
|
-
? TOriginal[Column] // 서브쿼리 alias.컬럼
|
|
103
|
-
: never
|
|
104
|
-
: Path extends `${infer Table}.${infer Column}`
|
|
105
|
-
? Table extends keyof TJoined
|
|
106
|
-
? TJoined[Table] extends Record<string, any>
|
|
107
|
-
? Column extends keyof TJoined[Table]
|
|
108
|
-
? TJoined[Table][Column]
|
|
109
|
-
: never
|
|
110
|
-
: never
|
|
111
|
-
: never
|
|
112
|
-
: Path extends keyof TOriginal
|
|
113
|
-
? TOriginal[Path] // 서브쿼리 컬럼 직접 접근 (가장 마지막에)
|
|
114
|
-
: never;
|
|
22
|
+
// Select 값 타입 확장
|
|
23
|
+
export type SelectValue<TTables extends Record<string, any>> =
|
|
24
|
+
| AvailableColumns<TTables>
|
|
25
|
+
| SqlExpression<"string" | "number" | "boolean" | "date">;
|
|
115
26
|
|
|
116
|
-
//
|
|
117
|
-
export type
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
};
|
|
27
|
+
// Select 객체 타입 (현재는 컬럼 경로만 지원)
|
|
28
|
+
export type SelectObject<TTables extends Record<string, any>> = Record<
|
|
29
|
+
string,
|
|
30
|
+
SelectValue<TTables> // AvailableColumns 대신
|
|
31
|
+
>;
|
|
122
32
|
|
|
123
|
-
//
|
|
124
|
-
type
|
|
125
|
-
|
|
33
|
+
// Select 결과 타입 추론
|
|
34
|
+
export type ParseSelectObject<
|
|
35
|
+
TTables extends Record<string, any>,
|
|
36
|
+
TSelect extends SelectObject<TTables>,
|
|
37
|
+
> = {
|
|
38
|
+
[K in keyof TSelect]: TSelect[K] extends SqlExpression<infer R>
|
|
126
39
|
? R extends "string"
|
|
127
40
|
? string
|
|
128
41
|
: R extends "number"
|
|
@@ -132,94 +45,80 @@ type ExtractSqlType<T> =
|
|
|
132
45
|
: R extends "date"
|
|
133
46
|
? Date
|
|
134
47
|
: never
|
|
48
|
+
: ExtractColumnType<TTables, TSelect[K] & string>;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
// 컬럼 경로에서 타입 추출
|
|
52
|
+
export type ExtractColumnType<
|
|
53
|
+
TTables extends Record<string, any>,
|
|
54
|
+
Path extends string,
|
|
55
|
+
> = Path extends `${infer TAlias}.${infer TColumn}`
|
|
56
|
+
? TAlias extends keyof TTables
|
|
57
|
+
? TColumn extends keyof TTables[TAlias]
|
|
58
|
+
? TTables[TAlias][TColumn]
|
|
59
|
+
: never
|
|
60
|
+
: never
|
|
61
|
+
: IsSingleKey<TTables> extends true // 추가
|
|
62
|
+
? Path extends keyof TTables[keyof TTables]
|
|
63
|
+
? TTables[keyof TTables][Path]
|
|
64
|
+
: never
|
|
135
65
|
: never;
|
|
66
|
+
// Where 조건 객체 타입
|
|
67
|
+
// 예: { "u.id": 1, "u.status": "active" }
|
|
68
|
+
export type WhereCondition<TTables extends Record<string, any>> = {
|
|
69
|
+
[key in AvailableColumns<TTables>]?: ExtractColumnType<TTables, key & string>;
|
|
70
|
+
};
|
|
136
71
|
|
|
137
|
-
//
|
|
138
|
-
export type
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
72
|
+
// Fulltext index 컬럼 추출 타입
|
|
73
|
+
export type FulltextColumns<TTables extends Record<string, any>> = {
|
|
74
|
+
[TAlias in keyof TTables]: TTables[TAlias] extends {
|
|
75
|
+
__fulltext__: readonly (infer Col)[];
|
|
76
|
+
}
|
|
77
|
+
? Col extends string
|
|
78
|
+
? `${TAlias & string}.${Col}`
|
|
79
|
+
: never
|
|
80
|
+
: never;
|
|
81
|
+
}[keyof TTables];
|
|
146
82
|
|
|
147
|
-
//
|
|
148
|
-
export type
|
|
149
|
-
TSchema,
|
|
150
|
-
T extends keyof TSchema | string,
|
|
151
|
-
TOriginal = any,
|
|
152
|
-
TJoined = EmptyRecord,
|
|
153
|
-
> = Record<string, SelectValue<TSchema, T, TOriginal, TJoined>>;
|
|
83
|
+
// 비교 연산자
|
|
84
|
+
export type ComparisonOperator = "=" | ">" | ">=" | "<" | "<=" | "<>" | "!=";
|
|
154
85
|
|
|
155
|
-
//
|
|
156
|
-
export type
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
> = {
|
|
163
|
-
[K in keyof S]: S[K] extends SqlFunction<any>
|
|
164
|
-
? ExtractSqlType<S[K]> // SQL 함수면 타입 추출
|
|
165
|
-
: ExtractColumnType<TSchema, T, S[K] & string, TOriginal, TJoined>;
|
|
166
|
-
};
|
|
86
|
+
// SQL Expression 타입 정의
|
|
87
|
+
export type SqlExpression<T extends "string" | "number" | "boolean" | "date"> =
|
|
88
|
+
{
|
|
89
|
+
_type: "sql_expression"; // 또는 "computed_value"
|
|
90
|
+
_return: T;
|
|
91
|
+
_sql: string;
|
|
92
|
+
};
|
|
167
93
|
|
|
168
|
-
//
|
|
169
|
-
export type
|
|
170
|
-
|
|
171
|
-
T extends
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
94
|
+
// 결과 타입 가독성을 위한 타입 확장
|
|
95
|
+
export type Expand<T> = T extends any[]
|
|
96
|
+
? { [K in keyof T[0]]: T[0][K] }[] // 배열이면 첫 번째 요소를 Expand하고 배열로 감쌈
|
|
97
|
+
: T extends object
|
|
98
|
+
? { [K in keyof T]: T[K] }
|
|
99
|
+
: T;
|
|
100
|
+
|
|
101
|
+
type IsSingleKey<TTables extends Record<string, any>> =
|
|
102
|
+
keyof TTables extends infer K
|
|
103
|
+
? K extends keyof TTables
|
|
104
|
+
? keyof TTables extends K // 역방향 체크로 단일 키 확인
|
|
105
|
+
? true
|
|
106
|
+
: false
|
|
107
|
+
: false
|
|
108
|
+
: false;
|
|
109
|
+
|
|
110
|
+
export type SingleTableValue<TTables extends Record<string, any>> =
|
|
111
|
+
IsSingleKey<TTables> extends true ? TTables[keyof TTables] : never;
|
|
183
112
|
|
|
184
|
-
//
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
?
|
|
192
|
-
|
|
193
|
-
? Col & string
|
|
194
|
-
: never)
|
|
195
|
-
| (TSchema[T] extends { __fulltext__: readonly (infer Col)[] }
|
|
196
|
-
? `${T & string}.${Col & string}`
|
|
197
|
-
: never)
|
|
198
|
-
| (TJoined extends Record<string, any>
|
|
199
|
-
? {
|
|
200
|
-
[K in keyof TJoined]: TJoined[K] extends {
|
|
201
|
-
__fulltext__: readonly (infer Col)[];
|
|
202
|
-
}
|
|
203
|
-
? (Col & string) | `${string & K}.${Col & string}`
|
|
204
|
-
: never;
|
|
205
|
-
}[keyof TJoined]
|
|
206
|
-
: never)
|
|
207
|
-
: // 서브쿼리 케이스 (T는 alias)
|
|
208
|
-
| (TOriginal extends { __fulltext__: readonly (infer Col)[] }
|
|
209
|
-
? Col & string
|
|
210
|
-
: never)
|
|
211
|
-
| (TOriginal extends { __fulltext__: readonly (infer Col)[] }
|
|
212
|
-
? `${T & string}.${Col & string}`
|
|
213
|
-
: never)
|
|
214
|
-
| (TJoined extends Record<string, any>
|
|
215
|
-
? {
|
|
216
|
-
[K in keyof TJoined]: TJoined[K] extends {
|
|
217
|
-
__fulltext__: readonly (infer Col)[];
|
|
218
|
-
}
|
|
219
|
-
? (Col & string) | `${string & K}.${Col & string}`
|
|
220
|
-
: never;
|
|
221
|
-
}[keyof TJoined]
|
|
222
|
-
: never);
|
|
113
|
+
// Nullable을 Optional로 변환
|
|
114
|
+
type NullableToOptional<T> = {
|
|
115
|
+
[K in keyof T as T[K] extends null | undefined ? K : never]?: Exclude<
|
|
116
|
+
T[K],
|
|
117
|
+
null | undefined
|
|
118
|
+
>;
|
|
119
|
+
} & Partial<{
|
|
120
|
+
[K in keyof T as T[K] extends null | undefined ? never : K]: T[K];
|
|
121
|
+
}>;
|
|
223
122
|
|
|
224
123
|
// Insert 타입: id, created_at 제외
|
|
225
124
|
export type InsertData<T> = NullableToOptional<
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { PuriTransactionWrapper } from "./puri-wrapper";
|
|
2
2
|
import type { DBPreset } from "./db";
|
|
3
3
|
|
|
4
4
|
export class TransactionContext {
|
|
5
|
-
private transactions: Map<DBPreset,
|
|
5
|
+
private transactions: Map<DBPreset, PuriTransactionWrapper> = new Map();
|
|
6
6
|
|
|
7
|
-
getTransaction(preset: DBPreset):
|
|
7
|
+
getTransaction(preset: DBPreset): PuriTransactionWrapper | undefined {
|
|
8
8
|
return this.transactions.get(preset);
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
setTransaction(preset: DBPreset, trx:
|
|
11
|
+
setTransaction(preset: DBPreset, trx: PuriTransactionWrapper): void {
|
|
12
12
|
this.transactions.set(preset, trx);
|
|
13
13
|
}
|
|
14
14
|
|
|
@@ -195,6 +195,7 @@ export async function ${methodNameAxios}${typeParamsDef}(${paramsDef}): Promise<
|
|
|
195
195
|
return fetch({
|
|
196
196
|
method: "GET",
|
|
197
197
|
url: \`${apiBaseUrl}?\${qs.stringify(${payloadDef})}\`,
|
|
198
|
+
${api.options.timeout ? `signal: AbortSignal.timeout(${api.options.timeout}),` : ""}
|
|
198
199
|
});
|
|
199
200
|
}
|
|
200
201
|
`.trim();
|
|
@@ -205,6 +206,7 @@ export async function ${methodNameAxios}${typeParamsDef}(${paramsDef}): Promise<
|
|
|
205
206
|
method: '${api.options.httpMethod}',
|
|
206
207
|
url: \`${apiBaseUrl}\`,
|
|
207
208
|
data: ${payloadDef},
|
|
209
|
+
${api.options.timeout ? `signal: AbortSignal.timeout(${api.options.timeout}),` : ""}
|
|
208
210
|
});
|
|
209
211
|
}
|
|
210
212
|
`.trim();
|
|
@@ -256,6 +258,7 @@ export async function ${api.methodName}${typeParamsDef}(
|
|
|
256
258
|
},
|
|
257
259
|
onUploadProgress,
|
|
258
260
|
data: formData,
|
|
261
|
+
${api.options.timeout ? `signal: AbortSignal.timeout(${api.options.timeout}),` : ""}
|
|
259
262
|
});
|
|
260
263
|
}
|
|
261
264
|
`.trim();
|
|
@@ -283,6 +286,8 @@ export async function ${api.methodName}${typeParamsDef}(
|
|
|
283
286
|
${payloadDef},
|
|
284
287
|
], swrOptions?.conditional)${
|
|
285
288
|
api.options.httpMethod === "POST" ? ", swrPostFetcher" : ""
|
|
289
|
+
}${
|
|
290
|
+
api.options.timeout ? `, { loadingTimeout: ${api.options.timeout} }` : ""
|
|
286
291
|
});
|
|
287
292
|
}`;
|
|
288
293
|
}
|
|
@@ -296,7 +301,11 @@ export async function ${api.methodName}${typeParamsDef}(
|
|
|
296
301
|
) {
|
|
297
302
|
return `
|
|
298
303
|
export async function ${api.methodName}${typeParamsDef}(${paramsDef}): Promise<Response> {
|
|
299
|
-
return window.fetch(\`${apiBaseUrl}?\${qs.stringify(${payloadDef})}
|
|
304
|
+
return window.fetch(\`${apiBaseUrl}?\${qs.stringify(${payloadDef})}\`${
|
|
305
|
+
api.options.timeout
|
|
306
|
+
? `, { signal: AbortSignal.timeout(${api.options.timeout}) }`
|
|
307
|
+
: ""
|
|
308
|
+
});
|
|
300
309
|
}
|
|
301
310
|
`.trim();
|
|
302
311
|
}
|
package/src/types/types.ts
CHANGED
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
import { Knex } from "knex";
|
|
2
|
-
import { GenMigrationCode, MigrationColumn, MigrationForeign, MigrationIndex, MigrationSet, MigrationSetAndJoinTable } from "../types/types";
|
|
3
|
-
import { Entity } from "./entity";
|
|
4
|
-
type MigratorMode = "dev" | "deploy";
|
|
5
|
-
export type MigratorOptions = {
|
|
6
|
-
readonly mode: MigratorMode;
|
|
7
|
-
};
|
|
8
|
-
type MigrationCode = {
|
|
9
|
-
name: string;
|
|
10
|
-
path: string;
|
|
11
|
-
};
|
|
12
|
-
type ConnString = `${"mysql2"}://${string}@${string}:${number}/${string}`;
|
|
13
|
-
export type MigrationStatus = {
|
|
14
|
-
codes: MigrationCode[];
|
|
15
|
-
conns: {
|
|
16
|
-
name: string;
|
|
17
|
-
connKey: string;
|
|
18
|
-
connString: ConnString;
|
|
19
|
-
currentVersion: string;
|
|
20
|
-
status: string | number;
|
|
21
|
-
pending: string[];
|
|
22
|
-
}[];
|
|
23
|
-
preparedCodes: GenMigrationCode[];
|
|
24
|
-
};
|
|
25
|
-
export declare class Migrator {
|
|
26
|
-
readonly mode: MigratorMode;
|
|
27
|
-
targets: {
|
|
28
|
-
compare?: Knex;
|
|
29
|
-
pending: Knex;
|
|
30
|
-
shadow: Knex;
|
|
31
|
-
apply: Knex[];
|
|
32
|
-
};
|
|
33
|
-
constructor(options: MigratorOptions);
|
|
34
|
-
getMigrationCodes(): Promise<{
|
|
35
|
-
normal: MigrationCode[];
|
|
36
|
-
onlyTs: MigrationCode[];
|
|
37
|
-
onlyJs: MigrationCode[];
|
|
38
|
-
}>;
|
|
39
|
-
getStatus(): Promise<MigrationStatus>;
|
|
40
|
-
runAction(action: "latest" | "rollback", targets: string[]): Promise<{
|
|
41
|
-
connKey: string;
|
|
42
|
-
batchNo: number;
|
|
43
|
-
applied: string[];
|
|
44
|
-
}[]>;
|
|
45
|
-
delCodes(codeNames: string[]): Promise<number>;
|
|
46
|
-
generatePreparedCodes(): Promise<number>;
|
|
47
|
-
clearPendingList(): Promise<void>;
|
|
48
|
-
check(): Promise<void>;
|
|
49
|
-
run(): Promise<void>;
|
|
50
|
-
rollback(): Promise<void>;
|
|
51
|
-
cleanUpDist(force?: boolean): Promise<void>;
|
|
52
|
-
runShadowTest(): Promise<{
|
|
53
|
-
connKey: string;
|
|
54
|
-
batchNo: number;
|
|
55
|
-
applied: string[];
|
|
56
|
-
}[]>;
|
|
57
|
-
resetAll(): Promise<void>;
|
|
58
|
-
compareMigrations(compareDB: Knex): Promise<GenMigrationCode[]>;
|
|
59
|
-
getMigrationSetFromDB(compareDB: Knex, table: string): Promise<MigrationSet | null>;
|
|
60
|
-
resolveDBColType(colType: string, colField: string): Pick<MigrationColumn, "type" | "unsigned" | "length" | "precision" | "scale">;
|
|
61
|
-
readTable(compareDB: Knex, tableName: string): Promise<[DBColumn[], DBIndex[], DBForeign[]]>;
|
|
62
|
-
getMigrationSetFromEntity(entity: Entity): MigrationSetAndJoinTable;
|
|
63
|
-
genColumnDefinitions(columns: MigrationColumn[]): string[];
|
|
64
|
-
genIndexDefinitions(indexes: MigrationIndex[]): string[];
|
|
65
|
-
genForeignDefinitions(table: string, foreigns: MigrationForeign[]): {
|
|
66
|
-
up: string[];
|
|
67
|
-
down: string[];
|
|
68
|
-
};
|
|
69
|
-
generateCreateCode_ColumnAndIndexes(table: string, columns: MigrationColumn[], indexes: MigrationIndex[]): Promise<GenMigrationCode>;
|
|
70
|
-
generateCreateCode_Foreign(table: string, foreigns: MigrationForeign[]): Promise<GenMigrationCode[]>;
|
|
71
|
-
showMigrationSet(which: "Entity" | "DB", migrationSet: MigrationSet): void;
|
|
72
|
-
generateAlterCode_ColumnAndIndexes(table: string, entityColumns: MigrationColumn[], entityIndexes: MigrationIndex[], dbColumns: MigrationColumn[], dbIndexes: MigrationIndex[], dbForeigns: MigrationForeign[]): Promise<GenMigrationCode[]>;
|
|
73
|
-
getAlterColumnsTo(entityColumns: MigrationColumn[], dbColumns: MigrationColumn[]): {
|
|
74
|
-
add: MigrationColumn[];
|
|
75
|
-
drop: MigrationColumn[];
|
|
76
|
-
alter: MigrationColumn[];
|
|
77
|
-
};
|
|
78
|
-
getAlterColumnLinesTo(columnsTo: ReturnType<Migrator["getAlterColumnsTo"]>, entityColumns: MigrationColumn[], table: string, dbForeigns: MigrationForeign[]): {
|
|
79
|
-
add: {
|
|
80
|
-
up: string[];
|
|
81
|
-
down: string[];
|
|
82
|
-
};
|
|
83
|
-
drop: {
|
|
84
|
-
up: string[];
|
|
85
|
-
down: string[];
|
|
86
|
-
};
|
|
87
|
-
alter: {
|
|
88
|
-
up: string[];
|
|
89
|
-
down: string[];
|
|
90
|
-
};
|
|
91
|
-
};
|
|
92
|
-
getAlterIndexesTo(entityIndexes: MigrationIndex[], dbIndexes: MigrationIndex[]): {
|
|
93
|
-
add: MigrationIndex[];
|
|
94
|
-
drop: MigrationIndex[];
|
|
95
|
-
};
|
|
96
|
-
genIndexDefinition(index: MigrationIndex, table: string): string;
|
|
97
|
-
genIndexDropDefinition(index: MigrationIndex): string;
|
|
98
|
-
generateAlterCode_Foreigns(table: string, entityForeigns: MigrationForeign[], dbForeigns: MigrationForeign[], droppingColumns?: MigrationColumn[]): Promise<GenMigrationCode[]>;
|
|
99
|
-
destroy(): Promise<void>;
|
|
100
|
-
}
|
|
101
|
-
type DBColumn = {
|
|
102
|
-
Field: string;
|
|
103
|
-
Type: string;
|
|
104
|
-
Null: string;
|
|
105
|
-
Key: string;
|
|
106
|
-
Default: string | null;
|
|
107
|
-
Extra: string;
|
|
108
|
-
};
|
|
109
|
-
type DBIndex = {
|
|
110
|
-
Table: string;
|
|
111
|
-
Non_unique: number;
|
|
112
|
-
Key_name: string;
|
|
113
|
-
Seq_in_index: number;
|
|
114
|
-
Column_name: string;
|
|
115
|
-
Collation: string | null;
|
|
116
|
-
Cardinality: number | null;
|
|
117
|
-
Sub_part: number | null;
|
|
118
|
-
Packed: string | null;
|
|
119
|
-
Null: string;
|
|
120
|
-
Index_type: string;
|
|
121
|
-
Comment: string;
|
|
122
|
-
Index_comment: string;
|
|
123
|
-
Visible: string;
|
|
124
|
-
Expression: string | null;
|
|
125
|
-
};
|
|
126
|
-
type DBForeign = {
|
|
127
|
-
keyName: string;
|
|
128
|
-
from: string;
|
|
129
|
-
referencesTable: string;
|
|
130
|
-
referencesField: string;
|
|
131
|
-
onDelete: string;
|
|
132
|
-
onUpdate: string;
|
|
133
|
-
};
|
|
134
|
-
export {};
|
|
135
|
-
//# sourceMappingURL=migrator.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"migrator.d.ts","sourceRoot":"","sources":["../../src/entity/migrator.ts"],"names":[],"mappings":"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"}
|