rake-db 2.1.18 → 2.2.1
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/CHANGELOG.md +18 -0
- package/dist/index.d.ts +111 -46
- package/dist/index.esm.js +545 -525
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +544 -524
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/ast.ts +102 -0
- package/src/commands/createOrDrop.ts +4 -4
- package/src/commands/generate.ts +2 -2
- package/src/commands/migrateOrRollback.ts +8 -8
- package/src/common.ts +8 -4
- package/src/index.ts +2 -0
- package/src/migration/changeTable.test.ts +13 -7
- package/src/migration/changeTable.ts +368 -431
- package/src/migration/createJoinTable.ts +92 -0
- package/src/migration/createTable.test.ts +8 -0
- package/src/migration/createTable.ts +105 -179
- package/src/migration/migration.test.ts +18 -0
- package/src/migration/migration.ts +53 -38
- package/src/migration/migrationUtils.ts +86 -94
- package/src/rakeDb.ts +2 -2
- package/src/test-utils.ts +3 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# rake-db
|
|
2
2
|
|
|
3
|
+
## 2.2.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies
|
|
8
|
+
- pqb@0.8.1
|
|
9
|
+
|
|
10
|
+
## 2.2.0
|
|
11
|
+
|
|
12
|
+
### Minor Changes
|
|
13
|
+
|
|
14
|
+
- 3f25b4d: Rename all model words to table words, because all models here are not models in OOP meaning
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- Updated dependencies [3f25b4d]
|
|
19
|
+
- pqb@0.8.0
|
|
20
|
+
|
|
3
21
|
## 2.1.18
|
|
4
22
|
|
|
5
23
|
### Patch Changes
|
package/dist/index.d.ts
CHANGED
|
@@ -1,55 +1,32 @@
|
|
|
1
1
|
import * as pqb from 'pqb';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
declare type MigrationConfig = {
|
|
5
|
-
migrationsPath: string;
|
|
6
|
-
migrationsTable: string;
|
|
7
|
-
requireTs(path: string): void;
|
|
8
|
-
noPrimaryKey?: NoPrimaryKeyOption;
|
|
9
|
-
} & QueryLogOptions;
|
|
10
|
-
|
|
11
|
-
declare const createDb: (arg: MaybeArray<AdapterOptions>, config: MigrationConfig) => Promise<void>;
|
|
12
|
-
declare const dropDb: (arg: MaybeArray<AdapterOptions>) => Promise<void>;
|
|
13
|
-
declare const resetDb: (arg: MaybeArray<AdapterOptions>, config: MigrationConfig) => Promise<void>;
|
|
14
|
-
|
|
15
|
-
declare const generate: (config: MigrationConfig, args: string[]) => Promise<void>;
|
|
16
|
-
|
|
17
|
-
declare const migrate: (options: MaybeArray<AdapterOptions>, config: MigrationConfig, args?: string[]) => Promise<void>;
|
|
18
|
-
declare const rollback: (options: MaybeArray<AdapterOptions>, config: MigrationConfig, args?: string[]) => Promise<void>;
|
|
2
|
+
import { EmptyObject, RawExpression, ColumnType, ColumnTypes, raw, ColumnsShape, TransactionAdapter, QueryLogObject, QueryResultRow, QueryInput, TypeParsers, QueryResult, QueryArraysResult, MaybeArray, IndexColumnOptions, IndexOptions, ForeignKeyOptions, TextColumn, NoPrimaryKeyOption, TableData, SingleColumnIndexOptions, QueryLogOptions, AdapterOptions } from 'pqb';
|
|
19
3
|
|
|
20
4
|
declare function add(item: ColumnType, options?: {
|
|
21
5
|
dropMode?: DropMode;
|
|
22
|
-
}):
|
|
6
|
+
}): RakeDbAst.ChangeTableItem.Column;
|
|
23
7
|
declare function add(emptyObject: EmptyObject): EmptyObject;
|
|
24
8
|
declare function add(items: Record<string, ColumnType>, options?: {
|
|
25
9
|
dropMode?: DropMode;
|
|
26
|
-
}): Record<string,
|
|
10
|
+
}): Record<string, RakeDbAst.ChangeTableItem.Column>;
|
|
11
|
+
declare type Change = RakeDbAst.ChangeTableItem.Change & ChangeOptions;
|
|
27
12
|
declare type ChangeOptions = {
|
|
28
13
|
usingUp?: RawExpression;
|
|
29
14
|
usingDown?: RawExpression;
|
|
30
15
|
};
|
|
31
|
-
declare type ChangeArg = ColumnType | ['default', unknown | RawExpression] | ['nullable', boolean] | ['comment', string | null] | ['compression', string] | ['primaryKey', boolean] | ['foreignKey', ForeignKey<string, string[]>] | ['index', Omit<SingleColumnIndexOptions, 'column'>];
|
|
32
16
|
declare type TableChangeMethods = typeof tableChangeMethods;
|
|
33
17
|
declare const tableChangeMethods: {
|
|
34
18
|
raw: (sql: string, values?: false | Record<string, unknown> | undefined) => RawExpression<ColumnType<unknown, pqb.Operators, unknown>>;
|
|
35
19
|
add: typeof add;
|
|
36
20
|
drop: typeof add;
|
|
37
|
-
change(from:
|
|
38
|
-
default(value: unknown | RawExpression):
|
|
39
|
-
nullable():
|
|
40
|
-
nonNullable():
|
|
41
|
-
comment(
|
|
42
|
-
rename(name: string):
|
|
21
|
+
change(from: ColumnType | Change, to: ColumnType | Change, options?: ChangeOptions): Change;
|
|
22
|
+
default(value: unknown | RawExpression): Change;
|
|
23
|
+
nullable(): Change;
|
|
24
|
+
nonNullable(): Change;
|
|
25
|
+
comment(comment: string | null): Change;
|
|
26
|
+
rename(name: string): RakeDbAst.ChangeTableItem.Rename;
|
|
43
27
|
};
|
|
44
|
-
declare type ChangeItem = [
|
|
45
|
-
action: 'add' | 'drop',
|
|
46
|
-
item: ColumnType,
|
|
47
|
-
options?: {
|
|
48
|
-
dropMode?: DropMode;
|
|
49
|
-
}
|
|
50
|
-
] | [action: 'change', from: ChangeArg, to: ChangeArg, options?: ChangeOptions] | ['rename', string];
|
|
51
28
|
declare type TableChanger = MigrationColumnTypes & TableChangeMethods;
|
|
52
|
-
declare type TableChangeData = Record<string,
|
|
29
|
+
declare type TableChangeData = Record<string, RakeDbAst.ChangeTableItem.Column | RakeDbAst.ChangeTableItem.Rename | Change | EmptyObject>;
|
|
53
30
|
|
|
54
31
|
declare type DropMode = 'CASCADE' | 'RESTRICT';
|
|
55
32
|
declare type TableOptions = {
|
|
@@ -69,10 +46,6 @@ declare type ChangeTableOptions = {
|
|
|
69
46
|
comment?: string | [string, string] | null;
|
|
70
47
|
};
|
|
71
48
|
declare type ChangeTableCallback = (t: TableChanger) => TableChangeData;
|
|
72
|
-
declare type ColumnIndex = {
|
|
73
|
-
columns: IndexColumnOptions[];
|
|
74
|
-
options: IndexOptions;
|
|
75
|
-
};
|
|
76
49
|
declare type ColumnComment = {
|
|
77
50
|
column: string;
|
|
78
51
|
comment: string | null;
|
|
@@ -89,9 +62,9 @@ declare type ExtensionOptions = {
|
|
|
89
62
|
};
|
|
90
63
|
declare class Migration extends TransactionAdapter {
|
|
91
64
|
up: boolean;
|
|
92
|
-
options:
|
|
65
|
+
options: RakeDbConfig;
|
|
93
66
|
log?: QueryLogObject;
|
|
94
|
-
constructor(tx: TransactionAdapter, up: boolean, options:
|
|
67
|
+
constructor(tx: TransactionAdapter, up: boolean, options: RakeDbConfig);
|
|
95
68
|
query<T extends QueryResultRow = any>(query: QueryInput, types?: TypeParsers, log?: QueryLogObject | undefined): Promise<QueryResult<T>>;
|
|
96
69
|
arrays<R extends any[] = any[]>(query: QueryInput, types?: TypeParsers, log?: QueryLogObject | undefined): Promise<QueryArraysResult<R>>;
|
|
97
70
|
createTable(tableName: string, options: TableOptions, fn: ColumnsShapeCallback): Promise<void>;
|
|
@@ -118,23 +91,115 @@ declare class Migration extends TransactionAdapter {
|
|
|
118
91
|
name?: string;
|
|
119
92
|
}): Promise<void>;
|
|
120
93
|
renameColumn(tableName: string, from: string, to: string): Promise<void>;
|
|
121
|
-
createSchema(schemaName: string): Promise<
|
|
122
|
-
dropSchema(schemaName: string): Promise<
|
|
94
|
+
createSchema(schemaName: string): Promise<void>;
|
|
95
|
+
dropSchema(schemaName: string): Promise<void>;
|
|
123
96
|
createExtension(name: string, options?: ExtensionOptions & {
|
|
124
97
|
ifNotExists?: boolean;
|
|
125
|
-
}): Promise<
|
|
98
|
+
}): Promise<void>;
|
|
126
99
|
dropExtension(name: string, options?: {
|
|
127
100
|
ifExists?: boolean;
|
|
128
101
|
cascade?: boolean;
|
|
129
|
-
}): Promise<
|
|
102
|
+
}): Promise<void>;
|
|
130
103
|
tableExists(tableName: string): Promise<boolean>;
|
|
131
104
|
columnExists(tableName: string, columnName: string): Promise<boolean>;
|
|
132
105
|
constraintExists(constraintName: string): Promise<boolean>;
|
|
133
106
|
}
|
|
134
107
|
|
|
108
|
+
declare type RakeDbAst = RakeDbAst.Table | RakeDbAst.ChangeTable | RakeDbAst.RenameTable | RakeDbAst.Schema | RakeDbAst.Extension;
|
|
109
|
+
declare namespace RakeDbAst {
|
|
110
|
+
type Table = {
|
|
111
|
+
type: 'table';
|
|
112
|
+
action: 'create' | 'drop';
|
|
113
|
+
name: string;
|
|
114
|
+
shape: ColumnsShape;
|
|
115
|
+
noPrimaryKey: NoPrimaryKeyOption;
|
|
116
|
+
dropMode?: DropMode;
|
|
117
|
+
comment?: string;
|
|
118
|
+
} & TableData;
|
|
119
|
+
type ChangeTable = {
|
|
120
|
+
type: 'changeTable';
|
|
121
|
+
name: string;
|
|
122
|
+
comment?: string | null;
|
|
123
|
+
shape: Record<string, ChangeTableItem>;
|
|
124
|
+
add: TableData;
|
|
125
|
+
drop: TableData;
|
|
126
|
+
};
|
|
127
|
+
type ChangeTableItem = ChangeTableItem.Column | ChangeTableItem.Change | ChangeTableItem.Rename;
|
|
128
|
+
namespace ChangeTableItem {
|
|
129
|
+
type Column = {
|
|
130
|
+
type: 'add' | 'drop';
|
|
131
|
+
item: ColumnType;
|
|
132
|
+
dropMode?: DropMode;
|
|
133
|
+
};
|
|
134
|
+
type Change = {
|
|
135
|
+
type: 'change';
|
|
136
|
+
from: ColumnChange;
|
|
137
|
+
to: ColumnChange;
|
|
138
|
+
using?: RawExpression;
|
|
139
|
+
};
|
|
140
|
+
type Rename = {
|
|
141
|
+
type: 'rename';
|
|
142
|
+
name: string;
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
type ColumnChange = {
|
|
146
|
+
column?: ColumnType;
|
|
147
|
+
type?: string;
|
|
148
|
+
collate?: string;
|
|
149
|
+
default?: unknown | RawExpression;
|
|
150
|
+
nullable?: boolean;
|
|
151
|
+
comment?: string | null;
|
|
152
|
+
compression?: string;
|
|
153
|
+
primaryKey?: boolean;
|
|
154
|
+
foreignKey?: {
|
|
155
|
+
table: string;
|
|
156
|
+
columns: string[];
|
|
157
|
+
} & ForeignKeyOptions;
|
|
158
|
+
index?: Omit<SingleColumnIndexOptions, 'column'>;
|
|
159
|
+
};
|
|
160
|
+
type RenameTable = {
|
|
161
|
+
type: 'renameTable';
|
|
162
|
+
from: string;
|
|
163
|
+
to: string;
|
|
164
|
+
};
|
|
165
|
+
type Schema = {
|
|
166
|
+
type: 'schema';
|
|
167
|
+
action: 'create' | 'drop';
|
|
168
|
+
name: string;
|
|
169
|
+
};
|
|
170
|
+
type Extension = {
|
|
171
|
+
type: 'extension';
|
|
172
|
+
action: 'create' | 'drop';
|
|
173
|
+
name: string;
|
|
174
|
+
schema?: string;
|
|
175
|
+
version?: string;
|
|
176
|
+
cascade?: boolean;
|
|
177
|
+
ifExists?: boolean;
|
|
178
|
+
ifNotExists?: boolean;
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
declare type RakeDbConfig = {
|
|
183
|
+
migrationsPath: string;
|
|
184
|
+
migrationsTable: string;
|
|
185
|
+
requireTs(path: string): void;
|
|
186
|
+
noPrimaryKey?: NoPrimaryKeyOption;
|
|
187
|
+
appCodeUpdater?: AppCodeUpdater;
|
|
188
|
+
} & QueryLogOptions;
|
|
189
|
+
declare type AppCodeUpdater = (ast: RakeDbAst) => Promise<void>;
|
|
190
|
+
|
|
191
|
+
declare const createDb: (arg: MaybeArray<AdapterOptions>, config: RakeDbConfig) => Promise<void>;
|
|
192
|
+
declare const dropDb: (arg: MaybeArray<AdapterOptions>) => Promise<void>;
|
|
193
|
+
declare const resetDb: (arg: MaybeArray<AdapterOptions>, config: RakeDbConfig) => Promise<void>;
|
|
194
|
+
|
|
195
|
+
declare const generate: (config: RakeDbConfig, args: string[]) => Promise<void>;
|
|
196
|
+
|
|
197
|
+
declare const migrate: (options: MaybeArray<AdapterOptions>, config: RakeDbConfig, args?: string[]) => Promise<void>;
|
|
198
|
+
declare const rollback: (options: MaybeArray<AdapterOptions>, config: RakeDbConfig, args?: string[]) => Promise<void>;
|
|
199
|
+
|
|
135
200
|
declare type ChangeCallback = (db: Migration, up: boolean) => Promise<void>;
|
|
136
201
|
declare const change: (fn: ChangeCallback) => void;
|
|
137
202
|
|
|
138
|
-
declare const rakeDb: (options: MaybeArray<AdapterOptions>, partialConfig?: Partial<
|
|
203
|
+
declare const rakeDb: (options: MaybeArray<AdapterOptions>, partialConfig?: Partial<RakeDbConfig>, args?: string[]) => Promise<void>;
|
|
139
204
|
|
|
140
|
-
export { ChangeTableCallback, ChangeTableOptions, ColumnComment,
|
|
205
|
+
export { AppCodeUpdater, ChangeTableCallback, ChangeTableOptions, ColumnComment, ColumnsShapeCallback, DropMode, ExtensionOptions, JoinTableOptions, Migration, MigrationColumnTypes, RakeDbAst, RakeDbConfig, TableOptions, change, createDb, dropDb, generate, migrate, rakeDb, resetDb, rollback };
|