rake-db 2.3.6 → 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 CHANGED
@@ -1,5 +1,20 @@
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
+
3
18
  ## 2.3.6
4
19
 
5
20
  ### 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, TransactionAdapter, AdapterOptions, QueryLogObject, QueryResultRow, QueryInput, TypeParsers, QueryResult, QueryArraysResult, MaybeArray, IndexColumnOptions, IndexOptions, ForeignKeyOptions, TextColumn, NoPrimaryKeyOption, TableData, SingleColumnIndexOptions, QueryLogOptions } from 'pqb';
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 class Migration extends TransactionAdapter {
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
- constructor(tx: TransactionAdapter, up: boolean, options: RakeDbConfig, adapterOptions: AdapterOptions, appCodeUpdaterCache: object);
70
- query<T extends QueryResultRow = any>(query: QueryInput, types?: TypeParsers, log?: QueryLogObject | undefined): Promise<QueryResult<T>>;
71
- arrays<R extends any[] = any[]>(query: QueryInput, types?: TypeParsers, log?: QueryLogObject | undefined): Promise<QueryArraysResult<R>>;
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: Migration, ast: RakeDbAst) => Promise<void> | undefined;
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 {
@@ -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
@@ -454,7 +454,7 @@ const createTable$1 = async (migration, up, tableName, options, fn) => {
454
454
  validatePrimaryKey(ast);
455
455
  const queries = astToQueries$1(ast);
456
456
  for (const query of queries) {
457
- await migration.query(query);
457
+ await migration.adapter.query(query);
458
458
  }
459
459
  await runCodeUpdater(migration, ast);
460
460
  };
@@ -688,7 +688,7 @@ const changeTable = async (migration, up, tableName, options, fn) => {
688
688
  const ast = makeAst(up, tableName, changeData, changeTableData, options);
689
689
  const queries = astToQueries(ast);
690
690
  for (const query of queries) {
691
- await migration.query(query);
691
+ await migration.adapter.query(query);
692
692
  }
693
693
  await runCodeUpdater(migration, ast);
694
694
  };
@@ -917,21 +917,31 @@ var __spreadValues$2 = (a, b) => {
917
917
  return a;
918
918
  };
919
919
  var __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));
920
- class Migration extends pqb.TransactionAdapter {
921
- constructor(tx, up, options, adapterOptions, appCodeUpdaterCache) {
922
- super(tx, tx.client, tx.types);
923
- this.up = up;
924
- this.options = options;
925
- this.adapterOptions = adapterOptions;
926
- this.appCodeUpdaterCache = appCodeUpdaterCache;
927
- this.log = pqb.logParamToLogObject(options.logger || console, options.log);
928
- }
929
- async query(query, types = this.types, log = this.log) {
930
- return wrapWithLog(log, query, () => super.query(query, types));
931
- }
932
- async arrays(query, types = this.types, log = this.log) {
933
- return wrapWithLog(log, query, () => super.arrays(query, types));
934
- }
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 {
935
945
  createTable(tableName, cbOrOptions, cb) {
936
946
  const options = typeof cbOrOptions === "function" ? {} : cbOrOptions;
937
947
  const fn = cb || cbOrOptions;
@@ -956,7 +966,7 @@ class Migration extends pqb.TransactionAdapter {
956
966
  toSchema,
957
967
  to: t
958
968
  };
959
- await this.query(
969
+ await this.adapter.query(
960
970
  `ALTER TABLE ${quoteWithSchema({
961
971
  schema: ast.fromSchema,
962
972
  name: ast.from
@@ -1079,7 +1089,7 @@ const createSchema$1 = async (migration, up, name) => {
1079
1089
  action: up ? "create" : "drop",
1080
1090
  name
1081
1091
  };
1082
- await migration.query(
1092
+ await migration.adapter.query(
1083
1093
  `${ast.action === "create" ? "CREATE" : "DROP"} SCHEMA "${name}"`
1084
1094
  );
1085
1095
  await runCodeUpdater(migration, ast);
@@ -1096,11 +1106,11 @@ const createExtension = async (migration, up, name, options) => {
1096
1106
  } else {
1097
1107
  query = `CREATE EXTENSION${ast.ifExists ? " IF NOT EXISTS" : ""} "${ast.name}"${ast.schema ? ` SCHEMA "${ast.schema}"` : ""}${ast.version ? ` VERSION '${ast.version}'` : ""}${ast.cascade ? " CASCADE" : ""}`;
1098
1108
  }
1099
- await migration.query(query);
1109
+ await migration.adapter.query(query);
1100
1110
  await runCodeUpdater(migration, ast);
1101
1111
  };
1102
1112
  const queryExists = (db, sql) => {
1103
- return db.query(sql).then(({ rowCount }) => rowCount > 0);
1113
+ return db.adapter.query(sql).then(({ rowCount }) => rowCount > 0);
1104
1114
  };
1105
1115
  const runCodeUpdater = (migration, ast) => {
1106
1116
  var _a, _b;
@@ -1167,7 +1177,13 @@ const migrateOrRollback = async (options, config, args, up) => {
1167
1177
  const changeCache = {};
1168
1178
  const processMigration = async (db, up, file, config, options, appCodeUpdaterCache) => {
1169
1179
  await db.transaction(async (tx) => {
1170
- const db2 = new Migration(tx, up, config, options, appCodeUpdaterCache);
1180
+ const db2 = createMigrationInterface(
1181
+ tx,
1182
+ up,
1183
+ config,
1184
+ options,
1185
+ appCodeUpdaterCache
1186
+ );
1171
1187
  setCurrentMigration(db2);
1172
1188
  setCurrentMigrationUp(up);
1173
1189
  const callback = changeCache[file.path];
@@ -1179,7 +1195,7 @@ const processMigration = async (db, up, file, config, options, appCodeUpdaterCac
1179
1195
  }
1180
1196
  await getCurrentPromise();
1181
1197
  await (up ? saveMigratedVersion : removeMigratedVersion)(
1182
- db2,
1198
+ db2.adapter,
1183
1199
  file.version,
1184
1200
  config
1185
1201
  );
@@ -1968,9 +1984,10 @@ Generate arguments:
1968
1984
  `
1969
1985
  );
1970
1986
 
1971
- exports.Migration = Migration;
1987
+ exports.MigrationBase = MigrationBase;
1972
1988
  exports.change = change;
1973
1989
  exports.createDb = createDb;
1990
+ exports.createMigrationInterface = createMigrationInterface;
1974
1991
  exports.dropDb = dropDb;
1975
1992
  exports.generate = generate;
1976
1993
  exports.migrate = migrate;