rake-db 2.3.23 → 2.3.25

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/.env.local CHANGED
@@ -1,2 +1,2 @@
1
1
  DATABASE_URL=postgres://postgres:@localhost:5432/porm
2
- #DATABASE_URL_TEST=postgres://postgres:@localhost:5432/porm_test
2
+ #DATABASE_URL=postgres://romeerez:e2Y6ovIJruas@ep-autumn-tooth-279704.eu-central-1.aws.neon.tech/neondb?ssl=true
@@ -1,22 +1,22 @@
1
1
 
2
- > rake-db@2.3.22 test:ci /home/romeo/dev/my/orchid-orm/packages/rake-db
2
+ > rake-db@2.3.24 test:ci /home/romeo/dev/my/orchid-orm/packages/rake-db
3
3
  > jest --coverage --coverageReporters json-summary
4
4
 
5
5
  PASS src/commands/createOrDrop.test.ts
6
6
  PASS src/common.test.ts
7
- PASS src/migration/createTable.test.ts
8
- PASS src/migration/migration.test.ts
9
- PASS src/pull/structureToAst.test.ts
10
7
  PASS src/migration/changeTable.test.ts
8
+ PASS src/pull/structureToAst.test.ts
11
9
  PASS src/commands/migrateOrRollback.test.ts
10
+ PASS src/migration/migration.test.ts
11
+ PASS src/migration/createTable.test.ts
12
12
  PASS src/pull/astToMigration.test.ts
13
+ PASS src/commands/generate.test.ts
13
14
  PASS src/pull/pull.test.ts
14
15
  PASS src/rakeDb.test.ts
15
16
  PASS src/pull/dbStructure.test.ts
16
- PASS src/commands/generate.test.ts
17
17
 
18
18
  Test Suites: 12 passed, 12 total
19
- Tests: 182 passed, 182 total
19
+ Tests: 184 passed, 184 total
20
20
  Snapshots: 0 total
21
- Time: 7.495 s
21
+ Time: 6.736 s
22
22
  Ran all test suites.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # rake-db
2
2
 
3
+ ## 2.3.25
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies
8
+ - pqb@0.9.14
9
+
10
+ ## 2.3.24
11
+
12
+ ### Patch Changes
13
+
14
+ - Handle ssl required case in db create; Confirm db creation before asking for creds
15
+
3
16
  ## 2.3.23
4
17
 
5
18
  ### Patch Changes
package/dist/index.d.ts CHANGED
@@ -15,7 +15,7 @@ declare type ChangeOptions = {
15
15
  };
16
16
  declare type TableChangeMethods = typeof tableChangeMethods;
17
17
  declare const tableChangeMethods: {
18
- raw: (sql: string, values?: false | Record<string, unknown> | undefined) => RawExpression<ColumnType<unknown, pqb.Operators, unknown>>;
18
+ raw: (sql: string, values?: false | Record<string, unknown> | undefined) => RawExpression<ColumnType<unknown, pqb.BaseOperators, unknown>>;
19
19
  add: typeof add;
20
20
  drop: typeof add;
21
21
  change(from: ColumnType | Change, to: ColumnType | Change, options?: ChangeOptions): Change;
@@ -105,8 +105,8 @@ declare const createMigrationInterface: (tx: TransactionAdapter, up: boolean, op
105
105
  xml: () => pqb.XMLColumn;
106
106
  json: <Type extends pqb.JSONTypeAny>(schemaOrFn: Type | ((j: {
107
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 | undefined) => pqb.JSONTuple<T_1, Rest>;
109
- union: <T_1 extends [pqb.JSONTypeAny, pqb.JSONTypeAny, ...pqb.JSONTypeAny[]]>(types: T_1) => pqb.JSONUnion<T_1>;
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
110
  any: () => pqb.JSONAny;
111
111
  bigint: () => pqb.JSONBigInt;
112
112
  boolean: () => pqb.JSONBoolean;
@@ -121,40 +121,40 @@ declare const createMigrationInterface: (tx: TransactionAdapter, up: boolean, op
121
121
  void: () => pqb.JSONVoid;
122
122
  array: <Type_1 extends pqb.JSONTypeAny>(element: Type_1) => pqb.JSONArray<Type_1, "many">;
123
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_2 extends [U_1, ...U_1[]]>(options: T_2) => pqb.JSONEnum<U_1, T_2>;
125
- instanceOf: <T_3 extends new (...args: any[]) => any>(cls: T_3) => pqb.JSONInstanceOf<T_3>;
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
126
  intersection: <Left extends pqb.JSONTypeAny, Right extends pqb.JSONTypeAny>(left: Left, right: Right) => pqb.JSONIntersection<Left, Right>;
127
- lazy: <T_4 extends pqb.JSONTypeAny>(fn: () => T_4) => pqb.JSONLazy<T_4>;
128
- literal: <T_5 extends pqb.Primitive>(value: T_5) => pqb.JSONLiteral<T_5>;
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
129
  map: <Key extends pqb.JSONTypeAny, Value_1 extends pqb.JSONTypeAny>(keyType: Key, valueType: Value_1) => pqb.JSONMap<Key, Value_1>;
130
- nativeEnum: <T_6 extends pqb.EnumLike>(givenEnum: T_6) => pqb.JSONNativeEnum<T_6>;
131
- nullable: <T_7 extends pqb.JSONTypeAny>(type: T_7) => pqb.JSONNullable<T_7>;
132
- nullish: <T_8 extends pqb.JSONTypeAny>(type: T_8) => pqb.JSONNullish<T_8>;
133
- object: <T_9 extends pqb.JSONObjectShape, UnknownKeys extends pqb.UnknownKeysParam = "strip", Catchall extends pqb.JSONTypeAny = pqb.JSONTypeAny>(shape: T_9) => pqb.JSONObject<T_9, UnknownKeys, Catchall, pqb.JSONTypeAny extends Catchall ? pqb.addQuestionMarks<{ [k_1 in keyof T_9]: T_9[k_1]["type"]; }> extends infer T_10 extends object ? { [k in keyof T_10]: pqb.addQuestionMarks<{ [k_1_1 in keyof T_9]: T_9[k_1_1]["type"]; }>[k]; } : never : (pqb.addQuestionMarks<{ [k_1_2 in keyof T_9]: T_9[k_1_2]["type"]; }> extends infer T_10_1 extends object ? { [k_2 in keyof T_10_1]: pqb.addQuestionMarks<{ [k_1_3 in keyof T_9]: T_9[k_1_3]["type"]; }>[k_2]; } : never) & {
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
134
  [k: string]: Catchall["type"];
135
- } extends infer T_11 extends object ? { [k_2 in keyof T_11]: ((pqb.addQuestionMarks<{ [k_1_4 in keyof T_9]: T_9[k_1_4]["type"]; }> extends infer T_10_2 extends object ? { [k_3 in keyof T_10_2]: pqb.addQuestionMarks<{ [k_1_5 in keyof T_9]: T_9[k_1_5]["type"]; }>[k_3]; } : never) & {
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
136
  [k: string]: Catchall["type"];
137
137
  })[k_2]; } : never>;
138
- optional: <T_12 extends pqb.JSONTypeAny>(type: T_12) => pqb.JSONOptional<T_12>;
138
+ optional: <T_13 extends pqb.JSONTypeAny>(type: T_13) => pqb.JSONOptional<T_13>;
139
139
  record: typeof pqb.record;
140
140
  }) => Type)) => pqb.JSONColumn<Type>;
141
141
  jsonText: () => pqb.JSONTextColumn;
142
- array: <Item extends ColumnType<unknown, pqb.Operators, unknown>>(item: Item) => pqb.ArrayColumn<Item>;
143
- timestamps: <T_13 extends ColumnType<unknown, pqb.Operators, unknown>>(this: {
144
- timestamp(): T_13;
142
+ array: <Item extends ColumnType<unknown, pqb.BaseOperators, unknown>>(item: Item) => pqb.ArrayColumn<Item>;
143
+ timestamps: <T_14 extends ColumnType<unknown, pqb.BaseOperators, unknown>>(this: {
144
+ timestamp(): T_14;
145
145
  }) => {
146
- createdAt: T_13 & {
146
+ createdAt: T_14 & {
147
147
  hasDefault: true;
148
148
  };
149
- updatedAt: T_13 & {
149
+ updatedAt: T_14 & {
150
150
  hasDefault: true;
151
151
  };
152
152
  };
153
153
  primaryKey(columns: string[], options?: {
154
154
  name?: string | undefined;
155
155
  } | undefined): {};
156
- index(columns: MaybeArray<string | IndexColumnOptions>, options?: IndexOptions | undefined): {};
157
- unique(columns: MaybeArray<string | IndexColumnOptions>, options?: IndexOptions | undefined): {};
156
+ index(columns: MaybeArray<string | IndexColumnOptions>, options?: IndexOptions): {};
157
+ unique(columns: MaybeArray<string | IndexColumnOptions>, options?: IndexOptions): {};
158
158
  foreignKey: {
159
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
160
  <Table_1 extends string, Columns_1 extends [string, ...string[]]>(columns: string[], table: Table_1, foreignColumns: Columns_1, options?: ForeignKeyOptions | undefined): {};
@@ -204,8 +204,8 @@ declare const createMigrationInterface: (tx: TransactionAdapter, up: boolean, op
204
204
  xml: () => pqb.XMLColumn;
205
205
  json: <Type extends pqb.JSONTypeAny>(schemaOrFn: Type | ((j: {
206
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 | undefined) => pqb.JSONTuple<T_1, Rest>;
208
- union: <T_1 extends [pqb.JSONTypeAny, pqb.JSONTypeAny, ...pqb.JSONTypeAny[]]>(types: T_1) => pqb.JSONUnion<T_1>;
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
209
  any: () => pqb.JSONAny;
210
210
  bigint: () => pqb.JSONBigInt;
211
211
  boolean: () => pqb.JSONBoolean;
@@ -220,40 +220,40 @@ declare const createMigrationInterface: (tx: TransactionAdapter, up: boolean, op
220
220
  void: () => pqb.JSONVoid;
221
221
  array: <Type_1 extends pqb.JSONTypeAny>(element: Type_1) => pqb.JSONArray<Type_1, "many">;
222
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_2 extends [U_1, ...U_1[]]>(options: T_2) => pqb.JSONEnum<U_1, T_2>;
224
- instanceOf: <T_3 extends new (...args: any[]) => any>(cls: T_3) => pqb.JSONInstanceOf<T_3>;
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
225
  intersection: <Left extends pqb.JSONTypeAny, Right extends pqb.JSONTypeAny>(left: Left, right: Right) => pqb.JSONIntersection<Left, Right>;
226
- lazy: <T_4 extends pqb.JSONTypeAny>(fn: () => T_4) => pqb.JSONLazy<T_4>;
227
- literal: <T_5 extends pqb.Primitive>(value: T_5) => pqb.JSONLiteral<T_5>;
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
228
  map: <Key extends pqb.JSONTypeAny, Value_1 extends pqb.JSONTypeAny>(keyType: Key, valueType: Value_1) => pqb.JSONMap<Key, Value_1>;
229
- nativeEnum: <T_6 extends pqb.EnumLike>(givenEnum: T_6) => pqb.JSONNativeEnum<T_6>;
230
- nullable: <T_7 extends pqb.JSONTypeAny>(type: T_7) => pqb.JSONNullable<T_7>;
231
- nullish: <T_8 extends pqb.JSONTypeAny>(type: T_8) => pqb.JSONNullish<T_8>;
232
- object: <T_9 extends pqb.JSONObjectShape, UnknownKeys extends pqb.UnknownKeysParam = "strip", Catchall extends pqb.JSONTypeAny = pqb.JSONTypeAny>(shape: T_9) => pqb.JSONObject<T_9, UnknownKeys, Catchall, pqb.JSONTypeAny extends Catchall ? pqb.addQuestionMarks<{ [k_1 in keyof T_9]: T_9[k_1]["type"]; }> extends infer T_10 extends object ? { [k in keyof T_10]: pqb.addQuestionMarks<{ [k_1_1 in keyof T_9]: T_9[k_1_1]["type"]; }>[k]; } : never : (pqb.addQuestionMarks<{ [k_1_2 in keyof T_9]: T_9[k_1_2]["type"]; }> extends infer T_10_1 extends object ? { [k_2 in keyof T_10_1]: pqb.addQuestionMarks<{ [k_1_3 in keyof T_9]: T_9[k_1_3]["type"]; }>[k_2]; } : never) & {
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
233
  [k: string]: Catchall["type"];
234
- } extends infer T_11 extends object ? { [k_2 in keyof T_11]: ((pqb.addQuestionMarks<{ [k_1_4 in keyof T_9]: T_9[k_1_4]["type"]; }> extends infer T_10_2 extends object ? { [k_3 in keyof T_10_2]: pqb.addQuestionMarks<{ [k_1_5 in keyof T_9]: T_9[k_1_5]["type"]; }>[k_3]; } : never) & {
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
235
  [k: string]: Catchall["type"];
236
236
  })[k_2]; } : never>;
237
- optional: <T_12 extends pqb.JSONTypeAny>(type: T_12) => pqb.JSONOptional<T_12>;
237
+ optional: <T_13 extends pqb.JSONTypeAny>(type: T_13) => pqb.JSONOptional<T_13>;
238
238
  record: typeof pqb.record;
239
239
  }) => Type)) => pqb.JSONColumn<Type>;
240
240
  jsonText: () => pqb.JSONTextColumn;
241
- array: <Item extends ColumnType<unknown, pqb.Operators, unknown>>(item: Item) => pqb.ArrayColumn<Item>;
242
- timestamps: <T_13 extends ColumnType<unknown, pqb.Operators, unknown>>(this: {
243
- timestamp(): T_13;
241
+ array: <Item extends ColumnType<unknown, pqb.BaseOperators, unknown>>(item: Item) => pqb.ArrayColumn<Item>;
242
+ timestamps: <T_14 extends ColumnType<unknown, pqb.BaseOperators, unknown>>(this: {
243
+ timestamp(): T_14;
244
244
  }) => {
245
- createdAt: T_13 & {
245
+ createdAt: T_14 & {
246
246
  hasDefault: true;
247
247
  };
248
- updatedAt: T_13 & {
248
+ updatedAt: T_14 & {
249
249
  hasDefault: true;
250
250
  };
251
251
  };
252
252
  primaryKey(columns: string[], options?: {
253
253
  name?: string | undefined;
254
254
  } | undefined): {};
255
- index(columns: MaybeArray<string | IndexColumnOptions>, options?: IndexOptions | undefined): {};
256
- unique(columns: MaybeArray<string | IndexColumnOptions>, options?: IndexOptions | undefined): {};
255
+ index(columns: MaybeArray<string | IndexColumnOptions>, options?: IndexOptions): {};
256
+ unique(columns: MaybeArray<string | IndexColumnOptions>, options?: IndexOptions): {};
257
257
  foreignKey: {
258
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
259
  <Table_1 extends string, Columns_1 extends [string, ...string[]]>(columns: string[], table: Table_1, foreignColumns: Columns_1, options?: ForeignKeyOptions | undefined): {};
@@ -302,8 +302,8 @@ declare const createMigrationInterface: (tx: TransactionAdapter, up: boolean, op
302
302
  xml: () => pqb.XMLColumn;
303
303
  json: <Type extends pqb.JSONTypeAny>(schemaOrFn: Type | ((j: {
304
304
  set: <Value extends pqb.JSONTypeAny>(valueType: Value) => pqb.JSONSet<Value>;
305
- tuple: <T_1 extends [] | pqb.JSONTupleItems, Rest extends pqb.JSONTypeAny | null = null>(items: T_1, rest?: Rest | undefined) => pqb.JSONTuple<T_1, Rest>;
306
- union: <T_1 extends [pqb.JSONTypeAny, pqb.JSONTypeAny, ...pqb.JSONTypeAny[]]>(types: T_1) => pqb.JSONUnion<T_1>;
305
+ tuple: <T_1 extends pqb.JSONTupleItems | [], Rest extends pqb.JSONTypeAny | null = null>(items: T_1, rest?: Rest) => pqb.JSONTuple<T_1, Rest>;
306
+ union: <T_2 extends [pqb.JSONTypeAny, pqb.JSONTypeAny, ...pqb.JSONTypeAny[]]>(types: T_2) => pqb.JSONUnion<T_2>;
307
307
  any: () => pqb.JSONAny;
308
308
  bigint: () => pqb.JSONBigInt;
309
309
  boolean: () => pqb.JSONBoolean;
@@ -318,40 +318,40 @@ declare const createMigrationInterface: (tx: TransactionAdapter, up: boolean, op
318
318
  void: () => pqb.JSONVoid;
319
319
  array: <Type_1 extends pqb.JSONTypeAny>(element: Type_1) => pqb.JSONArray<Type_1, "many">;
320
320
  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]>;
321
- enum: <U_1 extends string, T_2 extends [U_1, ...U_1[]]>(options: T_2) => pqb.JSONEnum<U_1, T_2>;
322
- instanceOf: <T_3 extends new (...args: any[]) => any>(cls: T_3) => pqb.JSONInstanceOf<T_3>;
321
+ enum: <U_1 extends string, T_3 extends [U_1, ...U_1[]]>(options: T_3) => pqb.JSONEnum<U_1, T_3>;
322
+ instanceOf: <T_4 extends new (...args: any[]) => any>(cls: T_4) => pqb.JSONInstanceOf<T_4>;
323
323
  intersection: <Left extends pqb.JSONTypeAny, Right extends pqb.JSONTypeAny>(left: Left, right: Right) => pqb.JSONIntersection<Left, Right>;
324
- lazy: <T_4 extends pqb.JSONTypeAny>(fn: () => T_4) => pqb.JSONLazy<T_4>;
325
- literal: <T_5 extends pqb.Primitive>(value: T_5) => pqb.JSONLiteral<T_5>;
324
+ lazy: <T_5 extends pqb.JSONTypeAny>(fn: () => T_5) => pqb.JSONLazy<T_5>;
325
+ literal: <T_6 extends pqb.Primitive>(value: T_6) => pqb.JSONLiteral<T_6>;
326
326
  map: <Key extends pqb.JSONTypeAny, Value_1 extends pqb.JSONTypeAny>(keyType: Key, valueType: Value_1) => pqb.JSONMap<Key, Value_1>;
327
- nativeEnum: <T_6 extends pqb.EnumLike>(givenEnum: T_6) => pqb.JSONNativeEnum<T_6>;
328
- nullable: <T_7 extends pqb.JSONTypeAny>(type: T_7) => pqb.JSONNullable<T_7>;
329
- nullish: <T_8 extends pqb.JSONTypeAny>(type: T_8) => pqb.JSONNullish<T_8>;
330
- object: <T_9 extends pqb.JSONObjectShape, UnknownKeys extends pqb.UnknownKeysParam = "strip", Catchall extends pqb.JSONTypeAny = pqb.JSONTypeAny>(shape: T_9) => pqb.JSONObject<T_9, UnknownKeys, Catchall, pqb.JSONTypeAny extends Catchall ? pqb.addQuestionMarks<{ [k_1 in keyof T_9]: T_9[k_1]["type"]; }> extends infer T_10 extends object ? { [k in keyof T_10]: pqb.addQuestionMarks<{ [k_1_1 in keyof T_9]: T_9[k_1_1]["type"]; }>[k]; } : never : (pqb.addQuestionMarks<{ [k_1_2 in keyof T_9]: T_9[k_1_2]["type"]; }> extends infer T_10_1 extends object ? { [k_2 in keyof T_10_1]: pqb.addQuestionMarks<{ [k_1_3 in keyof T_9]: T_9[k_1_3]["type"]; }>[k_2]; } : never) & {
327
+ nativeEnum: <T_7 extends pqb.EnumLike>(givenEnum: T_7) => pqb.JSONNativeEnum<T_7>;
328
+ nullable: <T_8 extends pqb.JSONTypeAny>(type: T_8) => pqb.JSONNullable<T_8>;
329
+ nullish: <T_9 extends pqb.JSONTypeAny>(type: T_9) => pqb.JSONNullish<T_9>;
330
+ 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) & {
331
331
  [k: string]: Catchall["type"];
332
- } extends infer T_11 extends object ? { [k_2 in keyof T_11]: ((pqb.addQuestionMarks<{ [k_1_4 in keyof T_9]: T_9[k_1_4]["type"]; }> extends infer T_10_2 extends object ? { [k_3 in keyof T_10_2]: pqb.addQuestionMarks<{ [k_1_5 in keyof T_9]: T_9[k_1_5]["type"]; }>[k_3]; } : never) & {
332
+ } 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) & {
333
333
  [k: string]: Catchall["type"];
334
334
  })[k_2]; } : never>;
335
- optional: <T_12 extends pqb.JSONTypeAny>(type: T_12) => pqb.JSONOptional<T_12>;
335
+ optional: <T_13 extends pqb.JSONTypeAny>(type: T_13) => pqb.JSONOptional<T_13>;
336
336
  record: typeof pqb.record;
337
337
  }) => Type)) => pqb.JSONColumn<Type>;
338
338
  jsonText: () => pqb.JSONTextColumn;
339
- array: <Item extends ColumnType<unknown, pqb.Operators, unknown>>(item: Item) => pqb.ArrayColumn<Item>;
340
- timestamps: <T_13 extends ColumnType<unknown, pqb.Operators, unknown>>(this: {
341
- timestamp(): T_13;
339
+ array: <Item extends ColumnType<unknown, pqb.BaseOperators, unknown>>(item: Item) => pqb.ArrayColumn<Item>;
340
+ timestamps: <T_14 extends ColumnType<unknown, pqb.BaseOperators, unknown>>(this: {
341
+ timestamp(): T_14;
342
342
  }) => {
343
- createdAt: T_13 & {
343
+ createdAt: T_14 & {
344
344
  hasDefault: true;
345
345
  };
346
- updatedAt: T_13 & {
346
+ updatedAt: T_14 & {
347
347
  hasDefault: true;
348
348
  };
349
349
  };
350
350
  primaryKey(columns: string[], options?: {
351
351
  name?: string | undefined;
352
352
  } | undefined): {};
353
- index(columns: MaybeArray<string | IndexColumnOptions>, options?: IndexOptions | undefined): {};
354
- unique(columns: MaybeArray<string | IndexColumnOptions>, options?: IndexOptions | undefined): {};
353
+ index(columns: MaybeArray<string | IndexColumnOptions>, options?: IndexOptions): {};
354
+ unique(columns: MaybeArray<string | IndexColumnOptions>, options?: IndexOptions): {};
355
355
  foreignKey: {
356
356
  <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): {};
357
357
  <Table_1 extends string, Columns_1 extends [string, ...string[]]>(columns: string[], table: Table_1, foreignColumns: Columns_1, options?: ForeignKeyOptions | undefined): {};
package/dist/index.js CHANGED
@@ -3,9 +3,9 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var pqb = require('pqb');
6
- var Enquirer = require('enquirer');
7
6
  var path = require('path');
8
7
  var promises = require('fs/promises');
8
+ var prompts = require('prompts');
9
9
  var url = require('url');
10
10
 
11
11
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -28,8 +28,8 @@ function _interopNamespace(e) {
28
28
  return Object.freeze(n);
29
29
  }
30
30
 
31
- var Enquirer__default = /*#__PURE__*/_interopDefaultLegacy(Enquirer);
32
31
  var path__default = /*#__PURE__*/_interopDefaultLegacy(path);
32
+ var prompts__default = /*#__PURE__*/_interopDefaultLegacy(prompts);
33
33
 
34
34
  var __defProp$6 = Object.defineProperty;
35
35
  var __defProps$5 = Object.defineProperties;
@@ -131,32 +131,35 @@ const setAdapterOptions = (options, set) => {
131
131
  return __spreadValues$6(__spreadValues$6({}, options), set);
132
132
  }
133
133
  };
134
- const askAdminCredentials = async () => {
135
- const prompt = new Enquirer__default["default"].Snippet({
136
- message: `What are postgres admin login and password?`,
137
- fields: [
138
- {
139
- name: "user",
140
- required: true
141
- },
142
- {
143
- name: "password"
144
- }
145
- ],
146
- values: {
147
- user: "postgres",
148
- password: ""
134
+ const setAdminCredentialsToOptions = async (options, create) => {
135
+ const confirm = await prompts__default["default"]([
136
+ {
137
+ message: `Would you like to share admin credentials to ${create ? "create" : "drop"} a database`,
138
+ type: "confirm",
139
+ name: "confirm",
140
+ initial: true
141
+ }
142
+ ]);
143
+ if (!confirm.confirm) {
144
+ return;
145
+ }
146
+ const values = await prompts__default["default"]([
147
+ {
148
+ message: "Enter admin user:",
149
+ type: "text",
150
+ name: "user",
151
+ initial: "postgres",
152
+ min: 1
149
153
  },
150
- template: "Admin user: {{user}}\nAdmin password: {{password}}"
151
- });
152
- const { values } = await prompt.run();
153
- if (!values.password)
154
- values.password = "";
155
- return values;
156
- };
157
- const setAdminCredentialsToOptions = async (options) => {
158
- const values = await askAdminCredentials();
159
- return setAdapterOptions(options, values);
154
+ {
155
+ message: "Enter admin password:",
156
+ type: "password",
157
+ name: "password"
158
+ }
159
+ ]);
160
+ return setAdapterOptions(options, __spreadProps$5(__spreadValues$6({}, values), {
161
+ password: values.password || void 0
162
+ }));
160
163
  };
161
164
  const createSchemaMigrations = async (db, config) => {
162
165
  try {
@@ -1299,9 +1302,12 @@ const execute = async (options, sql) => {
1299
1302
  return "ok";
1300
1303
  } catch (error) {
1301
1304
  const err = error;
1305
+ if (typeof err.message === "string" && err.message.includes("sslmode=require")) {
1306
+ return "ssl required";
1307
+ }
1302
1308
  if (err.code === "42P04" || err.code === "3D000") {
1303
1309
  return "already";
1304
- } else if (err.code === "42501") {
1310
+ } else if (err.code === "42501" || typeof err.message === "string" && err.message.includes("password authentication failed")) {
1305
1311
  return "forbidden";
1306
1312
  } else {
1307
1313
  return { error };
@@ -1320,18 +1326,30 @@ const createOrDrop = async (options, adminOptions, config, args) => {
1320
1326
  console.log(args.successMessage(params));
1321
1327
  } else if (result === "already") {
1322
1328
  console.log(args.alreadyMessage(params));
1329
+ } else if (result === "ssl required") {
1330
+ console.log("SSL is required: append ?ssl=true to the database url string");
1331
+ return;
1323
1332
  } else if (result === "forbidden") {
1324
- await createOrDrop(
1333
+ let message = `Permission denied to ${args.create ? "create" : "drop"} database.`;
1334
+ const host = adminOptions.databaseURL ? new URL(adminOptions.databaseURL).hostname : adminOptions.host;
1335
+ const isLocal = host === "localhost";
1336
+ if (!isLocal) {
1337
+ message += `
1338
+ Don't use this command for database service providers, only for a local db.`;
1339
+ }
1340
+ console.log(message);
1341
+ const updatedOptions = await setAdminCredentialsToOptions(
1325
1342
  options,
1326
- await setAdminCredentialsToOptions(options),
1327
- config,
1328
- args
1343
+ args.create
1329
1344
  );
1345
+ if (!updatedOptions)
1346
+ return;
1347
+ await createOrDrop(options, updatedOptions, config, args);
1330
1348
  return;
1331
1349
  } else {
1332
1350
  throw result.error;
1333
1351
  }
1334
- if (!args.createVersionsTable)
1352
+ if (!args.create)
1335
1353
  return;
1336
1354
  const db = new pqb.Adapter(options);
1337
1355
  await createSchemaMigrations(db, config);
@@ -1349,7 +1367,7 @@ const createDb = async (arg, config) => {
1349
1367
  alreadyMessage({ database }) {
1350
1368
  return `Database ${database} already exists`;
1351
1369
  },
1352
- createVersionsTable: true
1370
+ create: true
1353
1371
  });
1354
1372
  }
1355
1373
  };