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 +1 -1
- package/.turbo/turbo-test:ci.log +7 -7
- package/CHANGELOG.md +13 -0
- package/dist/index.d.ts +58 -58
- package/dist/index.js +52 -34
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +51 -33
- package/dist/index.mjs.map +1 -1
- package/package.json +6 -4
- package/src/commands/createOrDrop.test.ts +50 -5
- package/src/commands/createOrDrop.ts +43 -9
- package/src/commands/generate.test.ts +8 -5
- package/src/common.test.ts +10 -17
- package/src/common.ts +35 -31
- package/tsconfig.json +1 -1
- package/coverage/coverage-summary.json +0 -17
package/.env.local
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
DATABASE_URL=postgres://postgres:@localhost:5432/porm
|
|
2
|
-
#
|
|
2
|
+
#DATABASE_URL=postgres://romeerez:e2Y6ovIJruas@ep-autumn-tooth-279704.eu-central-1.aws.neon.tech/neondb?ssl=true
|
package/.turbo/turbo-test:ci.log
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
|
|
2
|
-
> rake-db@2.3.
|
|
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:
|
|
19
|
+
Tests: 184 passed, 184 total
|
|
20
20
|
Snapshots: 0 total
|
|
21
|
-
Time:
|
|
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.
|
|
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
|
|
109
|
-
union: <
|
|
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,
|
|
125
|
-
instanceOf: <
|
|
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: <
|
|
128
|
-
literal: <
|
|
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: <
|
|
131
|
-
nullable: <
|
|
132
|
-
nullish: <
|
|
133
|
-
object: <
|
|
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
|
|
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: <
|
|
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.
|
|
143
|
-
timestamps: <
|
|
144
|
-
timestamp():
|
|
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:
|
|
146
|
+
createdAt: T_14 & {
|
|
147
147
|
hasDefault: true;
|
|
148
148
|
};
|
|
149
|
-
updatedAt:
|
|
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
|
|
157
|
-
unique(columns: MaybeArray<string | IndexColumnOptions>, options?: IndexOptions
|
|
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
|
|
208
|
-
union: <
|
|
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,
|
|
224
|
-
instanceOf: <
|
|
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: <
|
|
227
|
-
literal: <
|
|
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: <
|
|
230
|
-
nullable: <
|
|
231
|
-
nullish: <
|
|
232
|
-
object: <
|
|
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
|
|
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: <
|
|
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.
|
|
242
|
-
timestamps: <
|
|
243
|
-
timestamp():
|
|
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:
|
|
245
|
+
createdAt: T_14 & {
|
|
246
246
|
hasDefault: true;
|
|
247
247
|
};
|
|
248
|
-
updatedAt:
|
|
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
|
|
256
|
-
unique(columns: MaybeArray<string | IndexColumnOptions>, options?: IndexOptions
|
|
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
|
|
306
|
-
union: <
|
|
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,
|
|
322
|
-
instanceOf: <
|
|
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: <
|
|
325
|
-
literal: <
|
|
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: <
|
|
328
|
-
nullable: <
|
|
329
|
-
nullish: <
|
|
330
|
-
object: <
|
|
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
|
|
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: <
|
|
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.
|
|
340
|
-
timestamps: <
|
|
341
|
-
timestamp():
|
|
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:
|
|
343
|
+
createdAt: T_14 & {
|
|
344
344
|
hasDefault: true;
|
|
345
345
|
};
|
|
346
|
-
updatedAt:
|
|
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
|
|
354
|
-
unique(columns: MaybeArray<string | IndexColumnOptions>, options?: IndexOptions
|
|
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
|
|
135
|
-
const
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
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
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
1370
|
+
create: true
|
|
1353
1371
|
});
|
|
1354
1372
|
}
|
|
1355
1373
|
};
|