rake-db 2.3.5 → 2.3.8
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 +23 -0
- package/dist/index.d.ts +215 -8
- package/dist/index.js +61 -26
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +43 -27
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
- package/src/commands/migrateOrRollback.test.ts +4 -2
- package/src/commands/migrateOrRollback.ts +10 -4
- package/src/common.ts +2 -2
- package/src/migration/changeTable.ts +3 -3
- package/src/migration/createTable.ts +3 -3
- package/src/migration/migration.ts +57 -43
- package/src/migration/migrationUtils.ts +2 -3
- package/src/test-utils.ts +3 -3
- package/src/pull/getColumnByType.ts +0 -15
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
# rake-db
|
|
2
2
|
|
|
3
|
+
## 2.3.8
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies
|
|
8
|
+
- pqb@0.9.6
|
|
9
|
+
|
|
10
|
+
## 2.3.7
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- Mix query builder into migration db interface
|
|
15
|
+
- Updated dependencies
|
|
16
|
+
- pqb@0.9.5
|
|
17
|
+
|
|
18
|
+
## 2.3.6
|
|
19
|
+
|
|
20
|
+
### Patch Changes
|
|
21
|
+
|
|
22
|
+
- Improve esm support
|
|
23
|
+
- Updated dependencies
|
|
24
|
+
- pqb@0.9.4
|
|
25
|
+
|
|
3
26
|
## 2.3.5
|
|
4
27
|
|
|
5
28
|
### Patch Changes
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as pqb from 'pqb';
|
|
2
|
-
import { EmptyObject, RawExpression, ColumnType, ColumnTypes, raw, ColumnsShape,
|
|
2
|
+
import { EmptyObject, RawExpression, ColumnType, ColumnTypes, raw, ColumnsShape, DbResult, columnTypes, TransactionAdapter, AdapterOptions, TextColumn, MaybeArray, IndexColumnOptions, IndexOptions, ForeignKeyOptions, QueryLogObject, NoPrimaryKeyOption, TableData, SingleColumnIndexOptions, QueryLogOptions } from 'pqb';
|
|
3
3
|
|
|
4
4
|
declare function add(item: ColumnType, options?: {
|
|
5
5
|
dropMode?: DropMode;
|
|
@@ -60,15 +60,222 @@ declare type ExtensionOptions = {
|
|
|
60
60
|
version?: string;
|
|
61
61
|
cascade?: boolean;
|
|
62
62
|
};
|
|
63
|
-
declare
|
|
63
|
+
declare type Migration = DbResult<typeof columnTypes> & MigrationBase;
|
|
64
|
+
declare const createMigrationInterface: (tx: TransactionAdapter, up: boolean, options: RakeDbConfig, adapterOptions: AdapterOptions, appCodeUpdaterCache: object) => pqb.Db<string, Record<string, never>, pqb.RelationsBase, {
|
|
65
|
+
smallint: () => pqb.SmallIntColumn;
|
|
66
|
+
integer: () => pqb.IntegerColumn;
|
|
67
|
+
bigint: () => pqb.BigIntColumn;
|
|
68
|
+
numeric: <Precision extends number | undefined = undefined, Scale extends number | undefined = undefined>(precision?: Precision | undefined, scale?: Scale | undefined) => pqb.DecimalColumn<Precision, Scale>;
|
|
69
|
+
decimal: <Precision_1 extends number | undefined = undefined, Scale_1 extends number | undefined = undefined>(precision?: Precision_1 | undefined, scale?: Scale_1 | undefined) => pqb.DecimalColumn<Precision_1, Scale_1>;
|
|
70
|
+
real: () => pqb.RealColumn;
|
|
71
|
+
doublePrecision: () => pqb.DoublePrecisionColumn;
|
|
72
|
+
smallSerial: () => pqb.SmallSerialColumn;
|
|
73
|
+
serial: () => pqb.SerialColumn;
|
|
74
|
+
bigSerial: () => pqb.BigSerialColumn;
|
|
75
|
+
money: () => pqb.MoneyColumn;
|
|
76
|
+
varchar: <Limit extends number | undefined = undefined>(limit?: Limit | undefined) => pqb.VarCharColumn<Limit>;
|
|
77
|
+
char: <Limit_1 extends number | undefined = undefined>(limit?: Limit_1 | undefined) => pqb.CharColumn<Limit_1>;
|
|
78
|
+
text: (min: number, max: number) => TextColumn;
|
|
79
|
+
string: (min: number, max: number) => TextColumn;
|
|
80
|
+
bytea: () => pqb.ByteaColumn;
|
|
81
|
+
date: () => pqb.DateColumn;
|
|
82
|
+
timestamp: <Precision_2 extends number | undefined = undefined>(precision?: Precision_2 | undefined) => pqb.TimestampColumn<Precision_2>;
|
|
83
|
+
timestampWithTimeZone: <Precision_3 extends number | undefined = undefined>(precision?: Precision_3 | undefined) => pqb.TimestampWithTimeZoneColumn<Precision_3>;
|
|
84
|
+
time: <Precision_4 extends number | undefined = undefined>(precision?: Precision_4 | undefined) => pqb.TimeColumn<Precision_4>;
|
|
85
|
+
timeWithTimeZone: <Precision_5 extends number | undefined = undefined>(precision?: Precision_5 | undefined) => pqb.TimeWithTimeZoneColumn<Precision_5>;
|
|
86
|
+
interval: <Fields extends string | undefined = undefined, Precision_6 extends number | undefined = undefined>(fields?: Fields | undefined, precision?: Precision_6 | undefined) => pqb.IntervalColumn<Fields, Precision_6>;
|
|
87
|
+
boolean: () => pqb.BooleanColumn;
|
|
88
|
+
enum: <U extends string, T extends [U, ...U[]]>(dataType: string, type: T) => pqb.EnumColumn<U, T>;
|
|
89
|
+
point: () => pqb.PointColumn;
|
|
90
|
+
line: () => pqb.LineColumn;
|
|
91
|
+
lseg: () => pqb.LsegColumn;
|
|
92
|
+
box: () => pqb.BoxColumn;
|
|
93
|
+
path: () => pqb.PathColumn;
|
|
94
|
+
polygon: () => pqb.PolygonColumn;
|
|
95
|
+
circle: () => pqb.CircleColumn;
|
|
96
|
+
cidr: () => pqb.CidrColumn;
|
|
97
|
+
inet: () => pqb.InetColumn;
|
|
98
|
+
macaddr: () => pqb.MacAddrColumn;
|
|
99
|
+
macaddr8: () => pqb.MacAddr8Column;
|
|
100
|
+
bit: <Length extends number>(length: Length) => pqb.BitColumn<Length>;
|
|
101
|
+
bitVarying: <Length_1 extends number | undefined = undefined>(length?: Length_1 | undefined) => pqb.BitVaryingColumn<Length_1>;
|
|
102
|
+
tsvector: () => pqb.TsVectorColumn;
|
|
103
|
+
tsquery: () => pqb.TsQueryColumn;
|
|
104
|
+
uuid: () => pqb.UUIDColumn;
|
|
105
|
+
xml: () => pqb.XMLColumn;
|
|
106
|
+
json: <Type extends pqb.JSONTypeAny>(schemaOrFn: Type | ((j: {
|
|
107
|
+
set: <Value extends pqb.JSONTypeAny>(valueType: Value) => pqb.JSONSet<Value>;
|
|
108
|
+
tuple: <T_1 extends [] | pqb.JSONTupleItems, Rest extends pqb.JSONTypeAny | null = null>(items: T_1, rest?: Rest) => pqb.JSONTuple<T_1, Rest>;
|
|
109
|
+
union: <T_2 extends [pqb.JSONTypeAny, pqb.JSONTypeAny, ...pqb.JSONTypeAny[]]>(types: T_2) => pqb.JSONUnion<T_2>;
|
|
110
|
+
any: () => pqb.JSONAny;
|
|
111
|
+
bigint: () => pqb.JSONBigInt;
|
|
112
|
+
boolean: () => pqb.JSONBoolean;
|
|
113
|
+
date: () => pqb.JSONDate;
|
|
114
|
+
nan: () => pqb.JSONNaN;
|
|
115
|
+
never: () => pqb.JSONNever;
|
|
116
|
+
null: () => pqb.JSONNull;
|
|
117
|
+
number: () => pqb.JSONNumber;
|
|
118
|
+
string: () => pqb.JSONString;
|
|
119
|
+
undefined: () => pqb.JSONUndefined;
|
|
120
|
+
unknown: () => pqb.JSONUnknown;
|
|
121
|
+
void: () => pqb.JSONVoid;
|
|
122
|
+
array: <Type_1 extends pqb.JSONTypeAny>(element: Type_1) => pqb.JSONArray<Type_1, "many">;
|
|
123
|
+
discriminatedUnion: <Discriminator extends string, DiscriminatorValue extends pqb.Primitive, Types extends [pqb.JSONDiscriminatedObject<Discriminator, DiscriminatorValue>, pqb.JSONDiscriminatedObject<Discriminator, DiscriminatorValue>, ...pqb.JSONDiscriminatedObject<Discriminator, DiscriminatorValue>[]]>(discriminator: Discriminator, options: Types) => pqb.JSONDiscriminatedUnion<Discriminator, DiscriminatorValue, Types[number]>;
|
|
124
|
+
enum: <U_1 extends string, T_3 extends [U_1, ...U_1[]]>(options: T_3) => pqb.JSONEnum<U_1, T_3>;
|
|
125
|
+
instanceOf: <T_4 extends new (...args: any[]) => any>(cls: T_4) => pqb.JSONInstanceOf<T_4>;
|
|
126
|
+
intersection: <Left extends pqb.JSONTypeAny, Right extends pqb.JSONTypeAny>(left: Left, right: Right) => pqb.JSONIntersection<Left, Right>;
|
|
127
|
+
lazy: <T_5 extends pqb.JSONTypeAny>(fn: () => T_5) => pqb.JSONLazy<T_5>;
|
|
128
|
+
literal: <T_6 extends pqb.Primitive>(value: T_6) => pqb.JSONLiteral<T_6>;
|
|
129
|
+
map: <Key extends pqb.JSONTypeAny, Value_1 extends pqb.JSONTypeAny>(keyType: Key, valueType: Value_1) => pqb.JSONMap<Key, Value_1>;
|
|
130
|
+
nativeEnum: <T_7 extends pqb.EnumLike>(givenEnum: T_7) => pqb.JSONNativeEnum<T_7>;
|
|
131
|
+
nullable: <T_8 extends pqb.JSONTypeAny>(type: T_8) => pqb.JSONNullable<T_8>;
|
|
132
|
+
nullish: <T_9 extends pqb.JSONTypeAny>(type: T_9) => pqb.JSONNullish<T_9>;
|
|
133
|
+
object: <T_10 extends pqb.JSONObjectShape, UnknownKeys extends pqb.UnknownKeysParam = "strip", Catchall extends pqb.JSONTypeAny = pqb.JSONTypeAny>(shape: T_10) => pqb.JSONObject<T_10, UnknownKeys, Catchall, pqb.JSONTypeAny extends Catchall ? pqb.addQuestionMarks<{ [k_1 in keyof T_10]: T_10[k_1]["type"]; }> extends infer T_11 extends object ? { [k in keyof T_11]: pqb.addQuestionMarks<{ [k_1 in keyof T_10]: T_10[k_1]["type"]; }>[k]; } : never : (pqb.addQuestionMarks<{ [k_1 in keyof T_10]: T_10[k_1]["type"]; }> extends infer T_11 extends object ? { [k in keyof T_11]: pqb.addQuestionMarks<{ [k_1 in keyof T_10]: T_10[k_1]["type"]; }>[k]; } : never) & {
|
|
134
|
+
[k: string]: Catchall["type"];
|
|
135
|
+
} extends infer T_12 extends object ? { [k_2 in keyof T_12]: ((pqb.addQuestionMarks<{ [k_1 in keyof T_10]: T_10[k_1]["type"]; }> extends infer T_11 extends object ? { [k in keyof T_11]: pqb.addQuestionMarks<{ [k_1 in keyof T_10]: T_10[k_1]["type"]; }>[k]; } : never) & {
|
|
136
|
+
[k: string]: Catchall["type"];
|
|
137
|
+
})[k_2]; } : never>;
|
|
138
|
+
optional: <T_13 extends pqb.JSONTypeAny>(type: T_13) => pqb.JSONOptional<T_13>;
|
|
139
|
+
record: typeof pqb.record;
|
|
140
|
+
}) => Type)) => pqb.JSONColumn<Type>;
|
|
141
|
+
jsonText: () => pqb.JSONTextColumn;
|
|
142
|
+
array: <Item extends ColumnType<unknown, pqb.Operators, unknown>>(item: Item) => pqb.ArrayColumn<Item>;
|
|
143
|
+
timestamps: <T_14 extends ColumnType<unknown, pqb.Operators, unknown>>(this: {
|
|
144
|
+
timestamp(): T_14;
|
|
145
|
+
}) => {
|
|
146
|
+
createdAt: T_14 & {
|
|
147
|
+
hasDefault: true;
|
|
148
|
+
};
|
|
149
|
+
updatedAt: T_14 & {
|
|
150
|
+
hasDefault: true;
|
|
151
|
+
};
|
|
152
|
+
};
|
|
153
|
+
primaryKey(columns: string[], options?: {
|
|
154
|
+
name?: string | undefined;
|
|
155
|
+
} | undefined): {};
|
|
156
|
+
index(columns: MaybeArray<string | IndexColumnOptions>, options?: IndexOptions): {};
|
|
157
|
+
unique(columns: MaybeArray<string | IndexColumnOptions>, options?: IndexOptions): {};
|
|
158
|
+
foreignKey: {
|
|
159
|
+
<Table extends pqb.ForeignKeyTableWithColumns, Columns extends [Exclude<keyof InstanceType<Table>["columns"]["shape"], number | symbol>, ...Exclude<keyof InstanceType<Table>["columns"]["shape"], number | symbol>[]]>(columns: string[], fn: () => Table, foreignColumns: Columns, options?: ForeignKeyOptions | undefined): {};
|
|
160
|
+
<Table_1 extends string, Columns_1 extends [string, ...string[]]>(columns: string[], table: Table_1, foreignColumns: Columns_1, options?: ForeignKeyOptions | undefined): {};
|
|
161
|
+
};
|
|
162
|
+
}> & {
|
|
163
|
+
<Table_2 extends string, Shape extends ColumnsShape = ColumnsShape>(table: Table_2, shape?: Shape | ((t: {
|
|
164
|
+
smallint: () => pqb.SmallIntColumn;
|
|
165
|
+
integer: () => pqb.IntegerColumn;
|
|
166
|
+
bigint: () => pqb.BigIntColumn;
|
|
167
|
+
numeric: <Precision extends number | undefined = undefined, Scale extends number | undefined = undefined>(precision?: Precision | undefined, scale?: Scale | undefined) => pqb.DecimalColumn<Precision, Scale>;
|
|
168
|
+
decimal: <Precision_1 extends number | undefined = undefined, Scale_1 extends number | undefined = undefined>(precision?: Precision_1 | undefined, scale?: Scale_1 | undefined) => pqb.DecimalColumn<Precision_1, Scale_1>;
|
|
169
|
+
real: () => pqb.RealColumn;
|
|
170
|
+
doublePrecision: () => pqb.DoublePrecisionColumn;
|
|
171
|
+
smallSerial: () => pqb.SmallSerialColumn;
|
|
172
|
+
serial: () => pqb.SerialColumn;
|
|
173
|
+
bigSerial: () => pqb.BigSerialColumn;
|
|
174
|
+
money: () => pqb.MoneyColumn;
|
|
175
|
+
varchar: <Limit extends number | undefined = undefined>(limit?: Limit | undefined) => pqb.VarCharColumn<Limit>;
|
|
176
|
+
char: <Limit_1 extends number | undefined = undefined>(limit?: Limit_1 | undefined) => pqb.CharColumn<Limit_1>;
|
|
177
|
+
text: (min: number, max: number) => TextColumn;
|
|
178
|
+
string: (min: number, max: number) => TextColumn;
|
|
179
|
+
bytea: () => pqb.ByteaColumn;
|
|
180
|
+
date: () => pqb.DateColumn;
|
|
181
|
+
timestamp: <Precision_2 extends number | undefined = undefined>(precision?: Precision_2 | undefined) => pqb.TimestampColumn<Precision_2>;
|
|
182
|
+
timestampWithTimeZone: <Precision_3 extends number | undefined = undefined>(precision?: Precision_3 | undefined) => pqb.TimestampWithTimeZoneColumn<Precision_3>;
|
|
183
|
+
time: <Precision_4 extends number | undefined = undefined>(precision?: Precision_4 | undefined) => pqb.TimeColumn<Precision_4>;
|
|
184
|
+
timeWithTimeZone: <Precision_5 extends number | undefined = undefined>(precision?: Precision_5 | undefined) => pqb.TimeWithTimeZoneColumn<Precision_5>;
|
|
185
|
+
interval: <Fields extends string | undefined = undefined, Precision_6 extends number | undefined = undefined>(fields?: Fields | undefined, precision?: Precision_6 | undefined) => pqb.IntervalColumn<Fields, Precision_6>;
|
|
186
|
+
boolean: () => pqb.BooleanColumn;
|
|
187
|
+
enum: <U extends string, T extends [U, ...U[]]>(dataType: string, type: T) => pqb.EnumColumn<U, T>;
|
|
188
|
+
point: () => pqb.PointColumn;
|
|
189
|
+
line: () => pqb.LineColumn;
|
|
190
|
+
lseg: () => pqb.LsegColumn;
|
|
191
|
+
box: () => pqb.BoxColumn;
|
|
192
|
+
path: () => pqb.PathColumn;
|
|
193
|
+
polygon: () => pqb.PolygonColumn;
|
|
194
|
+
circle: () => pqb.CircleColumn;
|
|
195
|
+
cidr: () => pqb.CidrColumn;
|
|
196
|
+
inet: () => pqb.InetColumn;
|
|
197
|
+
macaddr: () => pqb.MacAddrColumn;
|
|
198
|
+
macaddr8: () => pqb.MacAddr8Column;
|
|
199
|
+
bit: <Length extends number>(length: Length) => pqb.BitColumn<Length>;
|
|
200
|
+
bitVarying: <Length_1 extends number | undefined = undefined>(length?: Length_1 | undefined) => pqb.BitVaryingColumn<Length_1>;
|
|
201
|
+
tsvector: () => pqb.TsVectorColumn;
|
|
202
|
+
tsquery: () => pqb.TsQueryColumn;
|
|
203
|
+
uuid: () => pqb.UUIDColumn;
|
|
204
|
+
xml: () => pqb.XMLColumn;
|
|
205
|
+
json: <Type extends pqb.JSONTypeAny>(schemaOrFn: Type | ((j: {
|
|
206
|
+
set: <Value extends pqb.JSONTypeAny>(valueType: Value) => pqb.JSONSet<Value>;
|
|
207
|
+
tuple: <T_1 extends [] | pqb.JSONTupleItems, Rest extends pqb.JSONTypeAny | null = null>(items: T_1, rest?: Rest) => pqb.JSONTuple<T_1, Rest>;
|
|
208
|
+
union: <T_2 extends [pqb.JSONTypeAny, pqb.JSONTypeAny, ...pqb.JSONTypeAny[]]>(types: T_2) => pqb.JSONUnion<T_2>;
|
|
209
|
+
any: () => pqb.JSONAny;
|
|
210
|
+
bigint: () => pqb.JSONBigInt;
|
|
211
|
+
boolean: () => pqb.JSONBoolean;
|
|
212
|
+
date: () => pqb.JSONDate;
|
|
213
|
+
nan: () => pqb.JSONNaN;
|
|
214
|
+
never: () => pqb.JSONNever;
|
|
215
|
+
null: () => pqb.JSONNull;
|
|
216
|
+
number: () => pqb.JSONNumber;
|
|
217
|
+
string: () => pqb.JSONString;
|
|
218
|
+
undefined: () => pqb.JSONUndefined;
|
|
219
|
+
unknown: () => pqb.JSONUnknown;
|
|
220
|
+
void: () => pqb.JSONVoid;
|
|
221
|
+
array: <Type_1 extends pqb.JSONTypeAny>(element: Type_1) => pqb.JSONArray<Type_1, "many">;
|
|
222
|
+
discriminatedUnion: <Discriminator extends string, DiscriminatorValue extends pqb.Primitive, Types extends [pqb.JSONDiscriminatedObject<Discriminator, DiscriminatorValue>, pqb.JSONDiscriminatedObject<Discriminator, DiscriminatorValue>, ...pqb.JSONDiscriminatedObject<Discriminator, DiscriminatorValue>[]]>(discriminator: Discriminator, options: Types) => pqb.JSONDiscriminatedUnion<Discriminator, DiscriminatorValue, Types[number]>;
|
|
223
|
+
enum: <U_1 extends string, T_3 extends [U_1, ...U_1[]]>(options: T_3) => pqb.JSONEnum<U_1, T_3>;
|
|
224
|
+
instanceOf: <T_4 extends new (...args: any[]) => any>(cls: T_4) => pqb.JSONInstanceOf<T_4>;
|
|
225
|
+
intersection: <Left extends pqb.JSONTypeAny, Right extends pqb.JSONTypeAny>(left: Left, right: Right) => pqb.JSONIntersection<Left, Right>;
|
|
226
|
+
lazy: <T_5 extends pqb.JSONTypeAny>(fn: () => T_5) => pqb.JSONLazy<T_5>;
|
|
227
|
+
literal: <T_6 extends pqb.Primitive>(value: T_6) => pqb.JSONLiteral<T_6>;
|
|
228
|
+
map: <Key extends pqb.JSONTypeAny, Value_1 extends pqb.JSONTypeAny>(keyType: Key, valueType: Value_1) => pqb.JSONMap<Key, Value_1>;
|
|
229
|
+
nativeEnum: <T_7 extends pqb.EnumLike>(givenEnum: T_7) => pqb.JSONNativeEnum<T_7>;
|
|
230
|
+
nullable: <T_8 extends pqb.JSONTypeAny>(type: T_8) => pqb.JSONNullable<T_8>;
|
|
231
|
+
nullish: <T_9 extends pqb.JSONTypeAny>(type: T_9) => pqb.JSONNullish<T_9>;
|
|
232
|
+
object: <T_10 extends pqb.JSONObjectShape, UnknownKeys extends pqb.UnknownKeysParam = "strip", Catchall extends pqb.JSONTypeAny = pqb.JSONTypeAny>(shape: T_10) => pqb.JSONObject<T_10, UnknownKeys, Catchall, pqb.JSONTypeAny extends Catchall ? pqb.addQuestionMarks<{ [k_1 in keyof T_10]: T_10[k_1]["type"]; }> extends infer T_11 extends object ? { [k in keyof T_11]: pqb.addQuestionMarks<{ [k_1 in keyof T_10]: T_10[k_1]["type"]; }>[k]; } : never : (pqb.addQuestionMarks<{ [k_1 in keyof T_10]: T_10[k_1]["type"]; }> extends infer T_11 extends object ? { [k in keyof T_11]: pqb.addQuestionMarks<{ [k_1 in keyof T_10]: T_10[k_1]["type"]; }>[k]; } : never) & {
|
|
233
|
+
[k: string]: Catchall["type"];
|
|
234
|
+
} extends infer T_12 extends object ? { [k_2 in keyof T_12]: ((pqb.addQuestionMarks<{ [k_1 in keyof T_10]: T_10[k_1]["type"]; }> extends infer T_11 extends object ? { [k in keyof T_11]: pqb.addQuestionMarks<{ [k_1 in keyof T_10]: T_10[k_1]["type"]; }>[k]; } : never) & {
|
|
235
|
+
[k: string]: Catchall["type"];
|
|
236
|
+
})[k_2]; } : never>;
|
|
237
|
+
optional: <T_13 extends pqb.JSONTypeAny>(type: T_13) => pqb.JSONOptional<T_13>;
|
|
238
|
+
record: typeof pqb.record;
|
|
239
|
+
}) => Type)) => pqb.JSONColumn<Type>;
|
|
240
|
+
jsonText: () => pqb.JSONTextColumn;
|
|
241
|
+
array: <Item extends ColumnType<unknown, pqb.Operators, unknown>>(item: Item) => pqb.ArrayColumn<Item>;
|
|
242
|
+
timestamps: <T_14 extends ColumnType<unknown, pqb.Operators, unknown>>(this: {
|
|
243
|
+
timestamp(): T_14;
|
|
244
|
+
}) => {
|
|
245
|
+
createdAt: T_14 & {
|
|
246
|
+
hasDefault: true;
|
|
247
|
+
};
|
|
248
|
+
updatedAt: T_14 & {
|
|
249
|
+
hasDefault: true;
|
|
250
|
+
};
|
|
251
|
+
};
|
|
252
|
+
primaryKey(columns: string[], options?: {
|
|
253
|
+
name?: string | undefined;
|
|
254
|
+
} | undefined): {};
|
|
255
|
+
index(columns: MaybeArray<string | IndexColumnOptions>, options?: IndexOptions): {};
|
|
256
|
+
unique(columns: MaybeArray<string | IndexColumnOptions>, options?: IndexOptions): {};
|
|
257
|
+
foreignKey: {
|
|
258
|
+
<Table extends pqb.ForeignKeyTableWithColumns, Columns extends [Exclude<keyof InstanceType<Table>["columns"]["shape"], number | symbol>, ...Exclude<keyof InstanceType<Table>["columns"]["shape"], number | symbol>[]]>(columns: string[], fn: () => Table, foreignColumns: Columns, options?: ForeignKeyOptions | undefined): {};
|
|
259
|
+
<Table_1 extends string, Columns_1 extends [string, ...string[]]>(columns: string[], table: Table_1, foreignColumns: Columns_1, options?: ForeignKeyOptions | undefined): {};
|
|
260
|
+
};
|
|
261
|
+
}) => Shape) | undefined, options?: pqb.DbTableOptions | undefined): pqb.Db<Table_2, Shape, pqb.RelationsBase, pqb.ColumnTypesBase>;
|
|
262
|
+
adapter: pqb.Adapter;
|
|
263
|
+
close: () => Promise<void>;
|
|
264
|
+
} & MigrationBase & {
|
|
265
|
+
adapter: TransactionAdapter;
|
|
266
|
+
log: QueryLogObject | undefined;
|
|
64
267
|
up: boolean;
|
|
65
268
|
options: RakeDbConfig;
|
|
66
269
|
adapterOptions: AdapterOptions;
|
|
67
270
|
appCodeUpdaterCache: object;
|
|
271
|
+
};
|
|
272
|
+
declare class MigrationBase {
|
|
273
|
+
adapter: TransactionAdapter;
|
|
68
274
|
log?: QueryLogObject;
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
275
|
+
up: boolean;
|
|
276
|
+
options: RakeDbConfig;
|
|
277
|
+
adapterOptions: AdapterOptions;
|
|
278
|
+
appCodeUpdaterCache: object;
|
|
72
279
|
createTable(tableName: string, options: TableOptions, fn: ColumnsShapeCallback): Promise<void>;
|
|
73
280
|
createTable(tableName: string, fn: ColumnsShapeCallback): Promise<void>;
|
|
74
281
|
dropTable(tableName: string, options: TableOptions, fn: ColumnsShapeCallback): Promise<void>;
|
|
@@ -102,7 +309,7 @@ declare class Migration extends TransactionAdapter {
|
|
|
102
309
|
columnExists(tableName: string, columnName: string): Promise<boolean>;
|
|
103
310
|
constraintExists(constraintName: string): Promise<boolean>;
|
|
104
311
|
}
|
|
105
|
-
declare const runCodeUpdater: (migration:
|
|
312
|
+
declare const runCodeUpdater: (migration: MigrationBase, ast: RakeDbAst) => Promise<void> | undefined;
|
|
106
313
|
|
|
107
314
|
declare type RakeDbAst = RakeDbAst.Table | RakeDbAst.ChangeTable | RakeDbAst.RenameTable | RakeDbAst.Schema | RakeDbAst.Extension;
|
|
108
315
|
declare namespace RakeDbAst {
|
|
@@ -185,7 +392,7 @@ declare namespace RakeDbAst {
|
|
|
185
392
|
declare type RakeDbConfig = {
|
|
186
393
|
migrationsPath: string;
|
|
187
394
|
migrationsTable: string;
|
|
188
|
-
requireTs(path: string): void
|
|
395
|
+
requireTs(path: string): Promise<void>;
|
|
189
396
|
noPrimaryKey?: NoPrimaryKeyOption;
|
|
190
397
|
appCodeUpdater?: AppCodeUpdater;
|
|
191
398
|
useCodeUpdater?: boolean;
|
|
@@ -211,4 +418,4 @@ declare const change: (fn: ChangeCallback) => void;
|
|
|
211
418
|
|
|
212
419
|
declare const rakeDb: (options: MaybeArray<AdapterOptions>, partialConfig?: Partial<RakeDbConfig>, args?: string[]) => Promise<void>;
|
|
213
420
|
|
|
214
|
-
export { AppCodeUpdater, ChangeTableCallback, ChangeTableOptions, ColumnComment, ColumnsShapeCallback, DropMode, ExtensionOptions, JoinTableOptions, Migration, MigrationColumnTypes, RakeDbAst, RakeDbConfig, TableOptions, change, createDb, dropDb, generate, migrate, rakeDb, resetDb, rollback, runCodeUpdater, writeMigrationFile };
|
|
421
|
+
export { AppCodeUpdater, ChangeTableCallback, ChangeTableOptions, ColumnComment, ColumnsShapeCallback, DropMode, ExtensionOptions, JoinTableOptions, Migration, MigrationBase, MigrationColumnTypes, RakeDbAst, RakeDbConfig, TableOptions, change, createDb, createMigrationInterface, dropDb, generate, migrate, rakeDb, resetDb, rollback, runCodeUpdater, writeMigrationFile };
|
package/dist/index.js
CHANGED
|
@@ -9,6 +9,24 @@ var promises = require('fs/promises');
|
|
|
9
9
|
|
|
10
10
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
11
11
|
|
|
12
|
+
function _interopNamespace(e) {
|
|
13
|
+
if (e && e.__esModule) return e;
|
|
14
|
+
var n = Object.create(null);
|
|
15
|
+
if (e) {
|
|
16
|
+
Object.keys(e).forEach(function (k) {
|
|
17
|
+
if (k !== 'default') {
|
|
18
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
19
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
get: function () { return e[k]; }
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
n["default"] = e;
|
|
27
|
+
return Object.freeze(n);
|
|
28
|
+
}
|
|
29
|
+
|
|
12
30
|
var Enquirer__default = /*#__PURE__*/_interopDefaultLegacy(Enquirer);
|
|
13
31
|
var path__default = /*#__PURE__*/_interopDefaultLegacy(path);
|
|
14
32
|
|
|
@@ -34,7 +52,7 @@ var __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b));
|
|
|
34
52
|
const migrationConfigDefaults = {
|
|
35
53
|
migrationsPath: path__default["default"].resolve("src", "migrations"),
|
|
36
54
|
migrationsTable: "schemaMigrations",
|
|
37
|
-
requireTs: require,
|
|
55
|
+
requireTs: (path2) => (function (t) { return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(t)); }); })(path2),
|
|
38
56
|
log: true,
|
|
39
57
|
logger: console,
|
|
40
58
|
useCodeUpdater: true
|
|
@@ -436,7 +454,7 @@ const createTable$1 = async (migration, up, tableName, options, fn) => {
|
|
|
436
454
|
validatePrimaryKey(ast);
|
|
437
455
|
const queries = astToQueries$1(ast);
|
|
438
456
|
for (const query of queries) {
|
|
439
|
-
await migration.query(query);
|
|
457
|
+
await migration.adapter.query(query);
|
|
440
458
|
}
|
|
441
459
|
await runCodeUpdater(migration, ast);
|
|
442
460
|
};
|
|
@@ -670,7 +688,7 @@ const changeTable = async (migration, up, tableName, options, fn) => {
|
|
|
670
688
|
const ast = makeAst(up, tableName, changeData, changeTableData, options);
|
|
671
689
|
const queries = astToQueries(ast);
|
|
672
690
|
for (const query of queries) {
|
|
673
|
-
await migration.query(query);
|
|
691
|
+
await migration.adapter.query(query);
|
|
674
692
|
}
|
|
675
693
|
await runCodeUpdater(migration, ast);
|
|
676
694
|
};
|
|
@@ -899,21 +917,31 @@ var __spreadValues$2 = (a, b) => {
|
|
|
899
917
|
return a;
|
|
900
918
|
};
|
|
901
919
|
var __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
}
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
}
|
|
920
|
+
const createMigrationInterface = (tx, up, options, adapterOptions, appCodeUpdaterCache) => {
|
|
921
|
+
const adapter = new pqb.TransactionAdapter(tx, tx.client, tx.types);
|
|
922
|
+
const { query, arrays } = adapter;
|
|
923
|
+
const log = pqb.logParamToLogObject(options.logger || console, options.log);
|
|
924
|
+
adapter.query = (q, types) => {
|
|
925
|
+
return wrapWithLog(log, q, () => query.call(adapter, q, types));
|
|
926
|
+
};
|
|
927
|
+
adapter.arrays = (q, types) => {
|
|
928
|
+
return wrapWithLog(log, q, () => arrays.call(adapter, q, types));
|
|
929
|
+
};
|
|
930
|
+
const db = pqb.createDb({ adapter, columnTypes: pqb.columnTypes });
|
|
931
|
+
const { prototype: proto } = MigrationBase;
|
|
932
|
+
for (const key of Object.getOwnPropertyNames(proto)) {
|
|
933
|
+
db[key] = proto[key];
|
|
934
|
+
}
|
|
935
|
+
return Object.assign(db, {
|
|
936
|
+
adapter,
|
|
937
|
+
log,
|
|
938
|
+
up,
|
|
939
|
+
options,
|
|
940
|
+
adapterOptions,
|
|
941
|
+
appCodeUpdaterCache
|
|
942
|
+
});
|
|
943
|
+
};
|
|
944
|
+
class MigrationBase {
|
|
917
945
|
createTable(tableName, cbOrOptions, cb) {
|
|
918
946
|
const options = typeof cbOrOptions === "function" ? {} : cbOrOptions;
|
|
919
947
|
const fn = cb || cbOrOptions;
|
|
@@ -938,7 +966,7 @@ class Migration extends pqb.TransactionAdapter {
|
|
|
938
966
|
toSchema,
|
|
939
967
|
to: t
|
|
940
968
|
};
|
|
941
|
-
await this.query(
|
|
969
|
+
await this.adapter.query(
|
|
942
970
|
`ALTER TABLE ${quoteWithSchema({
|
|
943
971
|
schema: ast.fromSchema,
|
|
944
972
|
name: ast.from
|
|
@@ -1061,7 +1089,7 @@ const createSchema$1 = async (migration, up, name) => {
|
|
|
1061
1089
|
action: up ? "create" : "drop",
|
|
1062
1090
|
name
|
|
1063
1091
|
};
|
|
1064
|
-
await migration.query(
|
|
1092
|
+
await migration.adapter.query(
|
|
1065
1093
|
`${ast.action === "create" ? "CREATE" : "DROP"} SCHEMA "${name}"`
|
|
1066
1094
|
);
|
|
1067
1095
|
await runCodeUpdater(migration, ast);
|
|
@@ -1078,11 +1106,11 @@ const createExtension = async (migration, up, name, options) => {
|
|
|
1078
1106
|
} else {
|
|
1079
1107
|
query = `CREATE EXTENSION${ast.ifExists ? " IF NOT EXISTS" : ""} "${ast.name}"${ast.schema ? ` SCHEMA "${ast.schema}"` : ""}${ast.version ? ` VERSION '${ast.version}'` : ""}${ast.cascade ? " CASCADE" : ""}`;
|
|
1080
1108
|
}
|
|
1081
|
-
await migration.query(query);
|
|
1109
|
+
await migration.adapter.query(query);
|
|
1082
1110
|
await runCodeUpdater(migration, ast);
|
|
1083
1111
|
};
|
|
1084
1112
|
const queryExists = (db, sql) => {
|
|
1085
|
-
return db.query(sql).then(({ rowCount }) => rowCount > 0);
|
|
1113
|
+
return db.adapter.query(sql).then(({ rowCount }) => rowCount > 0);
|
|
1086
1114
|
};
|
|
1087
1115
|
const runCodeUpdater = (migration, ast) => {
|
|
1088
1116
|
var _a, _b;
|
|
@@ -1149,19 +1177,25 @@ const migrateOrRollback = async (options, config, args, up) => {
|
|
|
1149
1177
|
const changeCache = {};
|
|
1150
1178
|
const processMigration = async (db, up, file, config, options, appCodeUpdaterCache) => {
|
|
1151
1179
|
await db.transaction(async (tx) => {
|
|
1152
|
-
const db2 =
|
|
1180
|
+
const db2 = createMigrationInterface(
|
|
1181
|
+
tx,
|
|
1182
|
+
up,
|
|
1183
|
+
config,
|
|
1184
|
+
options,
|
|
1185
|
+
appCodeUpdaterCache
|
|
1186
|
+
);
|
|
1153
1187
|
setCurrentMigration(db2);
|
|
1154
1188
|
setCurrentMigrationUp(up);
|
|
1155
1189
|
const callback = changeCache[file.path];
|
|
1156
1190
|
if (callback) {
|
|
1157
1191
|
change(callback);
|
|
1158
1192
|
} else {
|
|
1159
|
-
config.requireTs(file.path);
|
|
1193
|
+
await config.requireTs(file.path);
|
|
1160
1194
|
changeCache[file.path] = getCurrentChangeCallback();
|
|
1161
1195
|
}
|
|
1162
1196
|
await getCurrentPromise();
|
|
1163
1197
|
await (up ? saveMigratedVersion : removeMigratedVersion)(
|
|
1164
|
-
db2,
|
|
1198
|
+
db2.adapter,
|
|
1165
1199
|
file.version,
|
|
1166
1200
|
config
|
|
1167
1201
|
);
|
|
@@ -1950,9 +1984,10 @@ Generate arguments:
|
|
|
1950
1984
|
`
|
|
1951
1985
|
);
|
|
1952
1986
|
|
|
1953
|
-
exports.
|
|
1987
|
+
exports.MigrationBase = MigrationBase;
|
|
1954
1988
|
exports.change = change;
|
|
1955
1989
|
exports.createDb = createDb;
|
|
1990
|
+
exports.createMigrationInterface = createMigrationInterface;
|
|
1956
1991
|
exports.dropDb = dropDb;
|
|
1957
1992
|
exports.generate = generate;
|
|
1958
1993
|
exports.migrate = migrate;
|