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.
Files changed (52) hide show
  1. package/dist/api/decorators.d.ts +1 -0
  2. package/dist/api/decorators.d.ts.map +1 -1
  3. package/dist/api/decorators.js +1 -1
  4. package/dist/api/decorators.js.map +1 -1
  5. package/dist/api/sonamu.d.ts.map +1 -1
  6. package/dist/api/sonamu.js +1 -1
  7. package/dist/api/sonamu.js.map +1 -1
  8. package/dist/bin/build-config.d.ts +4 -0
  9. package/dist/bin/build-config.d.ts.map +1 -1
  10. package/dist/bin/build-config.js +1 -1
  11. package/dist/bin/build-config.js.map +1 -1
  12. package/dist/bin/cli-wrapper.js +1 -1
  13. package/dist/bin/cli-wrapper.js.map +1 -1
  14. package/dist/database/db.d.ts +3 -0
  15. package/dist/database/db.d.ts.map +1 -1
  16. package/dist/database/db.js +1 -1
  17. package/dist/database/db.js.map +1 -1
  18. package/dist/database/puri-wrapper.d.ts +22 -10
  19. package/dist/database/puri-wrapper.d.ts.map +1 -1
  20. package/dist/database/puri-wrapper.js +1 -1
  21. package/dist/database/puri-wrapper.js.map +1 -1
  22. package/dist/database/puri.d.ts +91 -65
  23. package/dist/database/puri.d.ts.map +1 -1
  24. package/dist/database/puri.js +1 -1
  25. package/dist/database/puri.js.map +1 -1
  26. package/dist/database/puri.types.d.ts +28 -42
  27. package/dist/database/puri.types.d.ts.map +1 -1
  28. package/dist/database/transaction-context.d.ts +3 -3
  29. package/dist/database/transaction-context.d.ts.map +1 -1
  30. package/dist/database/transaction-context.js.map +1 -1
  31. package/dist/templates/service.template.d.ts.map +1 -1
  32. package/dist/templates/service.template.js +1 -1
  33. package/dist/templates/service.template.js.map +1 -1
  34. package/dist/types/types.d.ts +1 -1
  35. package/dist/types/types.d.ts.map +1 -1
  36. package/dist/types/types.js.map +1 -1
  37. package/package.json +1 -2
  38. package/src/api/decorators.ts +14 -5
  39. package/src/api/sonamu.ts +21 -20
  40. package/src/bin/build-config.ts +7 -3
  41. package/src/bin/cli-wrapper.ts +31 -12
  42. package/src/database/db.ts +44 -9
  43. package/src/database/puri-wrapper.ts +104 -26
  44. package/src/database/puri.ts +434 -543
  45. package/src/database/puri.types.ts +99 -200
  46. package/src/database/transaction-context.ts +4 -4
  47. package/src/templates/service.template.ts +10 -1
  48. package/src/types/types.ts +1 -1
  49. package/dist/entity/migrator.d.ts +0 -135
  50. package/dist/entity/migrator.d.ts.map +0 -1
  51. package/dist/entity/migrator.js +0 -2
  52. package/dist/entity/migrator.js.map +0 -1
@@ -1,128 +1,41 @@
1
- export type ComparisonOperator = "=" | ">" | ">=" | "<" | "<=" | "<>" | "!=";
2
- export type Expand<T> = T extends any[]
3
- ? { [K in keyof T[0]]: T[0][K] }[] // 배열이면 첫 번째 요소를 Expand하고 배열로 감쌈
4
- : T extends object
5
- ? { [K in keyof T]: T[K] }
6
- : T;
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
- TSchema,
39
- T extends keyof TSchema | string,
40
- TOriginal = any,
18
+ TTables extends Record<string, any>,
41
19
  TResult = any,
42
- TJoined = EmptyRecord,
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 ExtractColumnType<
77
- TSchema,
78
- T extends keyof TSchema | string,
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
- // SQL 함수 타입 정의
117
- export type SqlFunction<T extends "string" | "number" | "boolean" | "date"> = {
118
- _type: "sql_function";
119
- _return: T;
120
- _sql: string;
121
- };
27
+ // Select 객체 타입 (현재는 컬럼 경로만 지원)
28
+ export type SelectObject<TTables extends Record<string, any>> = Record<
29
+ string,
30
+ SelectValue<TTables> // AvailableColumns 대신
31
+ >;
122
32
 
123
- // SQL 함수 결과에서 타입 추출
124
- type ExtractSqlType<T> =
125
- T extends SqlFunction<infer R>
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
- // Select 타입 확장
138
- export type SelectValue<
139
- TSchema,
140
- T extends keyof TSchema | string,
141
- TOriginal = any,
142
- TJoined = EmptyRecord,
143
- > =
144
- | AvailableColumns<TSchema, T, TOriginal, TJoined> // 기존 컬럼
145
- | SqlFunction<"string" | "number" | "boolean" | "date">; // SQL 함수
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
- // Select 객체 타입 정의
148
- export type SelectObject<
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
- // Select 결과 타입 추론
156
- export type ParseSelectObject<
157
- TSchema,
158
- T extends keyof TSchema | string,
159
- S extends SelectObject<TSchema, T, TOriginal, TJoined>,
160
- TOriginal = any,
161
- TJoined = EmptyRecord,
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
- // Where 조건 타입 (조인된 테이블 컬럼도 포함)
169
- export type WhereCondition<
170
- TSchema,
171
- T extends keyof TSchema | string,
172
- TOriginal = any,
173
- TJoined = EmptyRecord,
174
- > = {
175
- [key in AvailableColumns<TSchema, T, TOriginal, TJoined>]?: ExtractColumnType<
176
- TSchema,
177
- T,
178
- key & string,
179
- TOriginal,
180
- TJoined
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
- // Fulltext index 컬럼 추출 타입 (메인 테이블 + 조인된 테이블)
185
- export type FulltextColumns<
186
- TSchema,
187
- T extends keyof TSchema | string,
188
- TOriginal = any,
189
- TJoined = EmptyRecord,
190
- > = T extends keyof TSchema
191
- ? // 기존 테이블 케이스
192
- | (TSchema[T] extends { __fulltext__: readonly (infer Col)[] }
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 { PuriWrapper } from "./puri-wrapper";
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, PuriWrapper> = new Map();
5
+ private transactions: Map<DBPreset, PuriTransactionWrapper> = new Map();
6
6
 
7
- getTransaction(preset: DBPreset): PuriWrapper | undefined {
7
+ getTransaction(preset: DBPreset): PuriTransactionWrapper | undefined {
8
8
  return this.transactions.get(preset);
9
9
  }
10
10
 
11
- setTransaction(preset: DBPreset, trx: PuriWrapper): void {
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
  }
@@ -847,7 +847,7 @@ export type SonamuFastifyConfig = {
847
847
  AuthContext,
848
848
  request: FastifyRequest,
849
849
  reply: FastifyReply
850
- ) => Context;
850
+ ) => Context | Promise<Context>;
851
851
  guardHandler: (
852
852
  guard: GuardKey,
853
853
  request: FastifyRequest,
@@ -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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"}