orchid-orm 1.6.39 → 1.6.40
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/dist/index.d.ts +52 -52
- package/dist/index.js +35 -34
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +19 -10
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -5
- package/dist/bin.js +0 -515
- package/dist/bin.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ interface BelongsTo extends RelationThunkBase {
|
|
|
10
10
|
returns: 'one';
|
|
11
11
|
options: BelongsToRelation['options'];
|
|
12
12
|
}
|
|
13
|
-
|
|
13
|
+
type BelongsToInfo<T extends Table, Relation extends BelongsTo, FK extends string = Relation['options']['foreignKey']> = {
|
|
14
14
|
params: Record<FK, T['columns']['shape'][FK]['type']>;
|
|
15
15
|
populate: never;
|
|
16
16
|
chainedCreate: false;
|
|
@@ -22,7 +22,7 @@ interface HasMany extends RelationThunkBase {
|
|
|
22
22
|
returns: 'many';
|
|
23
23
|
options: HasManyRelation['options'];
|
|
24
24
|
}
|
|
25
|
-
|
|
25
|
+
type HasManyInfo<T extends Table, Relations extends RelationThunks, Relation extends HasMany> = {
|
|
26
26
|
params: Relation['options'] extends {
|
|
27
27
|
primaryKey: string;
|
|
28
28
|
} ? Record<Relation['options']['primaryKey'], T['columns']['shape'][Relation['options']['primaryKey']]['type']> : Relation['options'] extends {
|
|
@@ -42,7 +42,7 @@ interface HasOne extends RelationThunkBase {
|
|
|
42
42
|
returns: 'one';
|
|
43
43
|
options: HasOneRelation['options'];
|
|
44
44
|
}
|
|
45
|
-
|
|
45
|
+
type HasOneInfo<T extends Table, Relations extends RelationThunks, Relation extends HasOne> = {
|
|
46
46
|
params: Relation['options'] extends {
|
|
47
47
|
primaryKey: string;
|
|
48
48
|
} ? Record<Relation['options']['primaryKey'], T['columns']['shape'][Relation['options']['primaryKey']]['type']> : Relation['options'] extends {
|
|
@@ -61,7 +61,7 @@ declare function transaction<T extends {
|
|
|
61
61
|
$queryBuilder: Db;
|
|
62
62
|
}, Result>(this: T, fn: (db: T) => Promise<Result>): Promise<Result>;
|
|
63
63
|
|
|
64
|
-
|
|
64
|
+
type OrchidORM<T extends TableClasses> = {
|
|
65
65
|
[K in keyof T]: DbTable<T[K]>;
|
|
66
66
|
} & {
|
|
67
67
|
$transaction: typeof transaction;
|
|
@@ -82,7 +82,7 @@ interface HasAndBelongsToMany extends RelationThunkBase {
|
|
|
82
82
|
returns: 'many';
|
|
83
83
|
options: HasAndBelongsToManyRelation['options'];
|
|
84
84
|
}
|
|
85
|
-
|
|
85
|
+
type HasAndBelongsToManyInfo<T extends Table, Relation extends HasAndBelongsToMany> = {
|
|
86
86
|
params: Record<Relation['options']['primaryKey'], T['columns']['shape'][Relation['options']['primaryKey']]['type']>;
|
|
87
87
|
populate: never;
|
|
88
88
|
chainedCreate: true;
|
|
@@ -95,9 +95,9 @@ interface RelationThunkBase {
|
|
|
95
95
|
fn(): TableClass;
|
|
96
96
|
options: BaseRelation['options'];
|
|
97
97
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
98
|
+
type RelationThunk = BelongsTo | HasOne | HasMany | HasAndBelongsToMany;
|
|
99
|
+
type RelationThunks = Record<string, RelationThunk>;
|
|
100
|
+
type Relation<T extends Table, Relations extends RelationThunks, K extends StringKey<keyof Relations>, M extends Query = SetQueryTableAlias<DbTable<ReturnType<Relations[K]['fn']>>, K>, Info extends RelationInfo = RelationInfo<T, Relations, Relations[K]>> = {
|
|
101
101
|
type: Relations[K]['type'];
|
|
102
102
|
returns: Relations[K]['returns'];
|
|
103
103
|
key: K;
|
|
@@ -111,33 +111,33 @@ declare type Relation<T extends Table, Relations extends RelationThunks, K exten
|
|
|
111
111
|
primaryKey: string;
|
|
112
112
|
options: Relations[K]['options'];
|
|
113
113
|
};
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
114
|
+
type RelationScopeOrTable<Relation extends RelationThunkBase> = Relation['options']['scope'] extends (q: Query) => Query ? ReturnType<Relation['options']['scope']> : DbTable<ReturnType<Relation['fn']>>;
|
|
115
|
+
type RelationInfo<T extends Table = Table, Relations extends RelationThunks = RelationThunks, Relation extends RelationThunk = RelationThunk> = Relation extends BelongsTo ? BelongsToInfo<T, Relation> : Relation extends HasOne ? HasOneInfo<T, Relations, Relation> : Relation extends HasMany ? HasManyInfo<T, Relations, Relation> : Relation extends HasAndBelongsToMany ? HasAndBelongsToManyInfo<T, Relation> : never;
|
|
116
|
+
type MapRelation<T extends Table, Relations extends RelationThunks, RelationName extends keyof Relations, Relation extends RelationThunk = Relations[RelationName], RelatedQuery extends Query = RelationScopeOrTable<Relation>, Info extends {
|
|
117
117
|
params: Record<string, unknown>;
|
|
118
118
|
populate: string;
|
|
119
119
|
chainedCreate: boolean;
|
|
120
120
|
chainedDelete: boolean;
|
|
121
121
|
} = RelationInfo<T, Relations, Relation>> = RelationQuery<RelationName, Info['params'], Info['populate'], Relation['returns'] extends 'one' ? Relation['options']['required'] extends true ? SetQueryReturnsOne<RelatedQuery> : SetQueryReturnsOneOptional<RelatedQuery> : SetQueryReturnsAll<RelatedQuery>, Relation['options']['required'] extends boolean ? Relation['options']['required'] : false, Info['chainedCreate'], Info['chainedDelete']>;
|
|
122
|
-
|
|
122
|
+
type MapRelations<T extends Table> = 'relations' extends keyof T ? T['relations'] extends RelationThunks ? {
|
|
123
123
|
[K in keyof T['relations']]: MapRelation<T, T['relations'], K>;
|
|
124
124
|
} : EmptyObject : EmptyObject;
|
|
125
125
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
126
|
+
type TableClass<T extends Table = Table> = new () => T;
|
|
127
|
+
type TableClasses = Record<string, TableClass>;
|
|
128
|
+
type TableToDb<T extends Table> = Db<T['table'], T['columns']['shape'], 'relations' extends keyof T ? T['relations'] extends RelationThunks ? {
|
|
129
129
|
[K in StringKey<keyof T['relations']>]: Relation<T, T['relations'], K>;
|
|
130
130
|
} : Query['relations'] : Query['relations'], T['columnTypes']> & {
|
|
131
131
|
definedAs: string;
|
|
132
132
|
db: OrchidORM<TableClasses>;
|
|
133
133
|
};
|
|
134
|
-
|
|
135
|
-
|
|
134
|
+
type DbTable<T extends TableClass> = TableToDb<InstanceType<T>> & Omit<MapRelations<InstanceType<T>>, keyof Query>;
|
|
135
|
+
type TableConfig = {
|
|
136
136
|
shape: ColumnsShape;
|
|
137
137
|
type: unknown;
|
|
138
138
|
};
|
|
139
|
-
|
|
140
|
-
|
|
139
|
+
type ScopeFn<Related extends TableClass, Scope extends Query> = (q: DbTable<Related>) => Scope;
|
|
140
|
+
type Table = {
|
|
141
141
|
table: string;
|
|
142
142
|
columns: TableConfig;
|
|
143
143
|
schema?: string;
|
|
@@ -159,8 +159,8 @@ declare const createBaseTable: <CT extends ColumnTypesBase>({ columnTypes, snake
|
|
|
159
159
|
};
|
|
160
160
|
timestamp(): T;
|
|
161
161
|
}) => {
|
|
162
|
-
createdAt: orchid_core.ColumnWithDefault<T, orchid_core.RawExpression
|
|
163
|
-
updatedAt: orchid_core.ColumnWithDefault<T, orchid_core.RawExpression
|
|
162
|
+
createdAt: orchid_core.ColumnWithDefault<T, orchid_core.RawExpression>;
|
|
163
|
+
updatedAt: orchid_core.ColumnWithDefault<T, orchid_core.RawExpression>;
|
|
164
164
|
};
|
|
165
165
|
timestampsSnakeCase: <T_1 extends orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, orchid_core.ColumnDataBase>>(this: {
|
|
166
166
|
name(name: string): {
|
|
@@ -168,8 +168,8 @@ declare const createBaseTable: <CT extends ColumnTypesBase>({ columnTypes, snake
|
|
|
168
168
|
};
|
|
169
169
|
timestamp(): T_1;
|
|
170
170
|
}) => {
|
|
171
|
-
createdAt: orchid_core.ColumnWithDefault<T_1, orchid_core.RawExpression
|
|
172
|
-
updatedAt: orchid_core.ColumnWithDefault<T_1, orchid_core.RawExpression
|
|
171
|
+
createdAt: orchid_core.ColumnWithDefault<T_1, orchid_core.RawExpression>;
|
|
172
|
+
updatedAt: orchid_core.ColumnWithDefault<T_1, orchid_core.RawExpression>;
|
|
173
173
|
};
|
|
174
174
|
name: typeof orchid_core.name;
|
|
175
175
|
raw: (sql: string, values?: false | Record<string, unknown> | undefined) => orchid_core.RawExpression<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, orchid_core.ColumnDataBase>>;
|
|
@@ -240,12 +240,12 @@ declare const createBaseTable: <CT extends ColumnTypesBase>({ columnTypes, snake
|
|
|
240
240
|
nativeEnum: <T_9 extends orchid_core.EnumLike>(givenEnum: T_9) => orchid_core.JSONNativeEnum<T_9>;
|
|
241
241
|
nullable: <T_10 extends orchid_core.JSONTypeAny>(type: T_10) => orchid_core.JSONNullable<T_10>;
|
|
242
242
|
nullish: <T_11 extends orchid_core.JSONTypeAny>(type: T_11) => orchid_core.JSONNullish<T_11>;
|
|
243
|
-
object: <T_12 extends orchid_core.JSONObjectShape, UnknownKeys extends orchid_core.UnknownKeysParam = "strip", Catchall extends orchid_core.JSONTypeAny = orchid_core.JSONTypeAny>(shape: T_12) => orchid_core.JSONObject<T_12, UnknownKeys, Catchall, orchid_core.JSONTypeAny extends Catchall ? orchid_core.addQuestionMarks<{ [k_1 in keyof T_12]: T_12[k_1]["type"]; }> extends infer T_13 extends object ? { [k in keyof T_13]: orchid_core.addQuestionMarks<{ [k_1 in keyof T_12]: T_12[k_1]["type"]; }>[k]; } : never : (orchid_core.addQuestionMarks<{ [k_1 in keyof T_12]: T_12[k_1]["type"]; }> extends infer
|
|
243
|
+
object: <T_12 extends orchid_core.JSONObjectShape, UnknownKeys extends orchid_core.UnknownKeysParam = "strip", Catchall extends orchid_core.JSONTypeAny = orchid_core.JSONTypeAny>(shape: T_12) => orchid_core.JSONObject<T_12, UnknownKeys, Catchall, orchid_core.JSONTypeAny extends Catchall ? orchid_core.addQuestionMarks<{ [k_1 in keyof T_12]: T_12[k_1]["type"]; }> extends infer T_13 extends object ? { [k in keyof T_13]: orchid_core.addQuestionMarks<{ [k_1 in keyof T_12]: T_12[k_1]["type"]; }>[k]; } : never : (orchid_core.addQuestionMarks<{ [k_1 in keyof T_12]: T_12[k_1]["type"]; }> extends infer T_16 extends object ? { [k in keyof T_16]: orchid_core.addQuestionMarks<{ [k_1 in keyof T_12]: T_12[k_1]["type"]; }>[k]; } : never) & {
|
|
244
244
|
[k: string]: Catchall["type"];
|
|
245
|
-
} extends infer T_14 extends object ? { [k_2 in keyof T_14]: ((orchid_core.addQuestionMarks<{ [k_1 in keyof T_12]: T_12[k_1]["type"]; }> extends infer
|
|
245
|
+
} extends infer T_14 extends object ? { [k_2 in keyof T_14]: ((orchid_core.addQuestionMarks<{ [k_1 in keyof T_12]: T_12[k_1]["type"]; }> extends infer T_15 extends object ? { [k in keyof T_15]: orchid_core.addQuestionMarks<{ [k_1 in keyof T_12]: T_12[k_1]["type"]; }>[k]; } : never) & {
|
|
246
246
|
[k: string]: Catchall["type"];
|
|
247
247
|
})[k_2]; } : never>;
|
|
248
|
-
optional: <
|
|
248
|
+
optional: <T_17 extends orchid_core.JSONTypeAny>(type: T_17) => orchid_core.JSONOptional<T_17>;
|
|
249
249
|
record: typeof orchid_core.record;
|
|
250
250
|
}) => Type)): pqb.JSONColumn<Type>;
|
|
251
251
|
jsonText(this: ColumnTypesBase): pqb.JSONTextColumn;
|
|
@@ -257,29 +257,29 @@ declare const createBaseTable: <CT extends ColumnTypesBase>({ columnTypes, snake
|
|
|
257
257
|
} | undefined): {};
|
|
258
258
|
index(columns: orchid_core.MaybeArray<string | pqb.IndexColumnOptions>, options?: pqb.IndexOptions): {};
|
|
259
259
|
unique(columns: orchid_core.MaybeArray<string | pqb.IndexColumnOptions>, options?: pqb.IndexOptions): {};
|
|
260
|
-
constraint<Table_1 extends string | (() => pqb.ForeignKeyTable), Columns extends Table_1 extends () => pqb.ForeignKeyTable ? [
|
|
260
|
+
constraint<Table_1 extends string | (() => pqb.ForeignKeyTable), Columns extends Table_1 extends () => pqb.ForeignKeyTable ? [pqb.ColumnNameOfTable<ReturnType<Table_1>>, ...pqb.ColumnNameOfTable<ReturnType<Table_1>>[]] : [string, ...string[]]>({ name, references, check, dropMode, }: {
|
|
261
261
|
name?: string | undefined;
|
|
262
262
|
references?: [columns: string[], fnOrTable: Table_1, foreignColumns: Columns, options?: pqb.ForeignKeyOptions | undefined] | undefined;
|
|
263
|
-
check?: orchid_core.RawExpression
|
|
263
|
+
check?: orchid_core.RawExpression | undefined;
|
|
264
264
|
dropMode?: pqb.DropMode | undefined;
|
|
265
265
|
}): {};
|
|
266
|
-
foreignKey<Table_2 extends string | (() => pqb.ForeignKeyTable), Columns_1 extends Table_2 extends () => pqb.ForeignKeyTable ? [
|
|
266
|
+
foreignKey<Table_2 extends string | (() => pqb.ForeignKeyTable), Columns_1 extends Table_2 extends () => pqb.ForeignKeyTable ? [pqb.ColumnNameOfTable<ReturnType<Table_2>>, ...pqb.ColumnNameOfTable<ReturnType<Table_2>>[]] : [string, ...string[]]>(columns: string[], fnOrTable: Table_2, foreignColumns: Columns_1, options?: (pqb.ForeignKeyOptions & {
|
|
267
267
|
name?: string | undefined;
|
|
268
268
|
dropMode?: pqb.DropMode | undefined;
|
|
269
269
|
}) | undefined): {};
|
|
270
|
-
check(check: orchid_core.RawExpression
|
|
270
|
+
check(check: orchid_core.RawExpression): {};
|
|
271
271
|
} : CT;
|
|
272
272
|
noPrimaryKey?: boolean | undefined;
|
|
273
273
|
snakeCase: boolean | undefined;
|
|
274
|
-
setColumns: <
|
|
274
|
+
setColumns: <T_18 extends ColumnsShape>(fn: (t: ColumnTypesBase extends CT ? {
|
|
275
275
|
timestamps: <T extends orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, orchid_core.ColumnDataBase>>(this: {
|
|
276
276
|
name(name: string): {
|
|
277
277
|
timestamp(): T;
|
|
278
278
|
};
|
|
279
279
|
timestamp(): T;
|
|
280
280
|
}) => {
|
|
281
|
-
createdAt: orchid_core.ColumnWithDefault<T, orchid_core.RawExpression
|
|
282
|
-
updatedAt: orchid_core.ColumnWithDefault<T, orchid_core.RawExpression
|
|
281
|
+
createdAt: orchid_core.ColumnWithDefault<T, orchid_core.RawExpression>;
|
|
282
|
+
updatedAt: orchid_core.ColumnWithDefault<T, orchid_core.RawExpression>;
|
|
283
283
|
};
|
|
284
284
|
timestampsSnakeCase: <T_1 extends orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, orchid_core.ColumnDataBase>>(this: {
|
|
285
285
|
name(name: string): {
|
|
@@ -287,8 +287,8 @@ declare const createBaseTable: <CT extends ColumnTypesBase>({ columnTypes, snake
|
|
|
287
287
|
};
|
|
288
288
|
timestamp(): T_1;
|
|
289
289
|
}) => {
|
|
290
|
-
createdAt: orchid_core.ColumnWithDefault<T_1, orchid_core.RawExpression
|
|
291
|
-
updatedAt: orchid_core.ColumnWithDefault<T_1, orchid_core.RawExpression
|
|
290
|
+
createdAt: orchid_core.ColumnWithDefault<T_1, orchid_core.RawExpression>;
|
|
291
|
+
updatedAt: orchid_core.ColumnWithDefault<T_1, orchid_core.RawExpression>;
|
|
292
292
|
};
|
|
293
293
|
name: typeof orchid_core.name;
|
|
294
294
|
raw: (sql: string, values?: false | Record<string, unknown> | undefined) => orchid_core.RawExpression<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, orchid_core.ColumnDataBase>>;
|
|
@@ -359,12 +359,12 @@ declare const createBaseTable: <CT extends ColumnTypesBase>({ columnTypes, snake
|
|
|
359
359
|
nativeEnum: <T_9 extends orchid_core.EnumLike>(givenEnum: T_9) => orchid_core.JSONNativeEnum<T_9>;
|
|
360
360
|
nullable: <T_10 extends orchid_core.JSONTypeAny>(type: T_10) => orchid_core.JSONNullable<T_10>;
|
|
361
361
|
nullish: <T_11 extends orchid_core.JSONTypeAny>(type: T_11) => orchid_core.JSONNullish<T_11>;
|
|
362
|
-
object: <T_12 extends orchid_core.JSONObjectShape, UnknownKeys extends orchid_core.UnknownKeysParam = "strip", Catchall extends orchid_core.JSONTypeAny = orchid_core.JSONTypeAny>(shape: T_12) => orchid_core.JSONObject<T_12, UnknownKeys, Catchall, orchid_core.JSONTypeAny extends Catchall ? orchid_core.addQuestionMarks<{ [k_1 in keyof T_12]: T_12[k_1]["type"]; }> extends infer
|
|
362
|
+
object: <T_12 extends orchid_core.JSONObjectShape, UnknownKeys extends orchid_core.UnknownKeysParam = "strip", Catchall extends orchid_core.JSONTypeAny = orchid_core.JSONTypeAny>(shape: T_12) => orchid_core.JSONObject<T_12, UnknownKeys, Catchall, orchid_core.JSONTypeAny extends Catchall ? orchid_core.addQuestionMarks<{ [k_1 in keyof T_12]: T_12[k_1]["type"]; }> extends infer T_19 extends object ? { [k in keyof T_19]: orchid_core.addQuestionMarks<{ [k_1 in keyof T_12]: T_12[k_1]["type"]; }>[k]; } : never : (orchid_core.addQuestionMarks<{ [k_1 in keyof T_12]: T_12[k_1]["type"]; }> extends infer T_22 extends object ? { [k in keyof T_22]: orchid_core.addQuestionMarks<{ [k_1 in keyof T_12]: T_12[k_1]["type"]; }>[k]; } : never) & {
|
|
363
363
|
[k: string]: Catchall["type"];
|
|
364
|
-
} extends infer
|
|
364
|
+
} extends infer T_20 extends object ? { [k_2 in keyof T_20]: ((orchid_core.addQuestionMarks<{ [k_1 in keyof T_12]: T_12[k_1]["type"]; }> extends infer T_21 extends object ? { [k in keyof T_21]: orchid_core.addQuestionMarks<{ [k_1 in keyof T_12]: T_12[k_1]["type"]; }>[k]; } : never) & {
|
|
365
365
|
[k: string]: Catchall["type"];
|
|
366
366
|
})[k_2]; } : never>;
|
|
367
|
-
optional: <
|
|
367
|
+
optional: <T_17 extends orchid_core.JSONTypeAny>(type: T_17) => orchid_core.JSONOptional<T_17>;
|
|
368
368
|
record: typeof orchid_core.record;
|
|
369
369
|
}) => Type)): pqb.JSONColumn<Type>;
|
|
370
370
|
jsonText(this: ColumnTypesBase): pqb.JSONTextColumn;
|
|
@@ -376,20 +376,20 @@ declare const createBaseTable: <CT extends ColumnTypesBase>({ columnTypes, snake
|
|
|
376
376
|
} | undefined): {};
|
|
377
377
|
index(columns: orchid_core.MaybeArray<string | pqb.IndexColumnOptions>, options?: pqb.IndexOptions): {};
|
|
378
378
|
unique(columns: orchid_core.MaybeArray<string | pqb.IndexColumnOptions>, options?: pqb.IndexOptions): {};
|
|
379
|
-
constraint<Table_1 extends string | (() => pqb.ForeignKeyTable), Columns extends Table_1 extends () => pqb.ForeignKeyTable ? [
|
|
379
|
+
constraint<Table_1 extends string | (() => pqb.ForeignKeyTable), Columns extends Table_1 extends () => pqb.ForeignKeyTable ? [pqb.ColumnNameOfTable<ReturnType<Table_1>>, ...pqb.ColumnNameOfTable<ReturnType<Table_1>>[]] : [string, ...string[]]>({ name, references, check, dropMode, }: {
|
|
380
380
|
name?: string | undefined;
|
|
381
381
|
references?: [columns: string[], fnOrTable: Table_1, foreignColumns: Columns, options?: pqb.ForeignKeyOptions | undefined] | undefined;
|
|
382
|
-
check?: orchid_core.RawExpression
|
|
382
|
+
check?: orchid_core.RawExpression | undefined;
|
|
383
383
|
dropMode?: pqb.DropMode | undefined;
|
|
384
384
|
}): {};
|
|
385
|
-
foreignKey<Table_2 extends string | (() => pqb.ForeignKeyTable), Columns_1 extends Table_2 extends () => pqb.ForeignKeyTable ? [
|
|
385
|
+
foreignKey<Table_2 extends string | (() => pqb.ForeignKeyTable), Columns_1 extends Table_2 extends () => pqb.ForeignKeyTable ? [pqb.ColumnNameOfTable<ReturnType<Table_2>>, ...pqb.ColumnNameOfTable<ReturnType<Table_2>>[]] : [string, ...string[]]>(columns: string[], fnOrTable: Table_2, foreignColumns: Columns_1, options?: (pqb.ForeignKeyOptions & {
|
|
386
386
|
name?: string | undefined;
|
|
387
387
|
dropMode?: pqb.DropMode | undefined;
|
|
388
388
|
}) | undefined): {};
|
|
389
|
-
check(check: orchid_core.RawExpression
|
|
390
|
-
} : CT) =>
|
|
391
|
-
shape:
|
|
392
|
-
type: ColumnShapeOutput<
|
|
389
|
+
check(check: orchid_core.RawExpression): {};
|
|
390
|
+
} : CT) => T_18) => {
|
|
391
|
+
shape: T_18;
|
|
392
|
+
type: ColumnShapeOutput<T_18>;
|
|
393
393
|
};
|
|
394
394
|
belongsTo<Self extends any, Related extends TableClass<Table>, Scope extends Query, Options extends {
|
|
395
395
|
primaryKey: keyof InstanceType<Related>["columns"]["shape"];
|
|
@@ -449,20 +449,20 @@ declare const createBaseTable: <CT extends ColumnTypesBase>({ columnTypes, snake
|
|
|
449
449
|
};
|
|
450
450
|
};
|
|
451
451
|
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
452
|
+
type QueryMethods<T extends Query> = Record<string, (q: T, ...args: any[]) => any>;
|
|
453
|
+
type QueryOne<T extends Query> = SetQueryReturns<T, Exclude<QueryReturnType, 'all'>>;
|
|
454
|
+
type MethodsBase<T extends Query> = {
|
|
455
455
|
queryMethods?: QueryMethods<T>;
|
|
456
456
|
queryOneMethods?: QueryMethods<QueryOne<T>>;
|
|
457
457
|
queryWithWhereMethods?: QueryMethods<WhereResult<T>>;
|
|
458
458
|
queryOneWithWhereMethods?: QueryMethods<QueryOne<WhereResult<T>>>;
|
|
459
459
|
methods?: Record<string, unknown>;
|
|
460
460
|
};
|
|
461
|
-
|
|
461
|
+
type MapQueryMethods<T extends Query, BaseQuery extends Query, Methods> = Methods extends QueryMethods<T> ? {
|
|
462
462
|
[K in keyof Methods]: Methods[K] extends (q: any, ...args: infer Args) => infer Result ? <T extends BaseQuery>(this: T, ...args: Args) => Result extends Query ? MergeQuery<T, Result> : Result : never;
|
|
463
463
|
} : EmptyObject;
|
|
464
|
-
|
|
465
|
-
|
|
464
|
+
type MapMethods<T extends Query, Methods extends MethodsBase<T>> = MapQueryMethods<T, Query, Methods['queryMethods']> & MapQueryMethods<QueryOne<T>, QueryOne<Query>, Methods['queryOneMethods']> & MapQueryMethods<WhereResult<T>, WhereResult<Query>, Methods['queryWithWhereMethods']> & MapQueryMethods<QueryOne<WhereResult<T>>, QueryOne<WhereResult<Query>>, Methods['queryOneWithWhereMethods']> & (Methods['methods'] extends Record<string, unknown> ? Methods['methods'] : EmptyObject);
|
|
465
|
+
type Repo<T extends Query, Methods extends MethodsBase<T>, Mapped = MapMethods<T, Methods>> = (<Q extends {
|
|
466
466
|
table: T['table'];
|
|
467
467
|
shape: T['shape'];
|
|
468
468
|
}>(q: Q) => Q & Mapped) & T & Mapped;
|
|
@@ -470,7 +470,7 @@ declare const createRepo: <T extends Query, Methods extends MethodsBase<T>>(tabl
|
|
|
470
470
|
|
|
471
471
|
declare class AppCodeUpdaterError extends Error {
|
|
472
472
|
}
|
|
473
|
-
|
|
473
|
+
type AppCodeUpdaterConfig = {
|
|
474
474
|
tablePath(tableName: string): string;
|
|
475
475
|
baseTablePath: string;
|
|
476
476
|
baseTableName: string;
|
package/dist/index.js
CHANGED
|
@@ -1,17 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
3
|
var pqb = require('pqb');
|
|
6
4
|
var orchidCore = require('orchid-core');
|
|
7
5
|
var path = require('path');
|
|
8
6
|
var fs = require('fs/promises');
|
|
9
7
|
var typescript = require('typescript');
|
|
10
8
|
|
|
11
|
-
function
|
|
12
|
-
|
|
13
|
-
function _interopNamespace(e) {
|
|
14
|
-
if (e && e.__esModule) return e;
|
|
9
|
+
function _interopNamespaceDefault(e) {
|
|
15
10
|
var n = Object.create(null);
|
|
16
11
|
if (e) {
|
|
17
12
|
Object.keys(e).forEach(function (k) {
|
|
@@ -24,14 +19,11 @@ function _interopNamespace(e) {
|
|
|
24
19
|
}
|
|
25
20
|
});
|
|
26
21
|
}
|
|
27
|
-
n
|
|
22
|
+
n.default = e;
|
|
28
23
|
return Object.freeze(n);
|
|
29
24
|
}
|
|
30
25
|
|
|
31
|
-
var
|
|
32
|
-
var path__namespace = /*#__PURE__*/_interopNamespace(path);
|
|
33
|
-
var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
|
|
34
|
-
var typescript__default = /*#__PURE__*/_interopDefaultLegacy(typescript);
|
|
26
|
+
var path__namespace = /*#__PURE__*/_interopNamespaceDefault(path);
|
|
35
27
|
|
|
36
28
|
const createBaseTable = ({
|
|
37
29
|
columnTypes,
|
|
@@ -898,6 +890,8 @@ const makeHasAndBelongsToManyMethod = (table, qb, relation, relationName, query)
|
|
|
898
890
|
relationName,
|
|
899
891
|
state
|
|
900
892
|
),
|
|
893
|
+
// joinQuery can be a property of RelationQuery and be used by whereExists and other stuff which needs it
|
|
894
|
+
// and the chained query itself may be a query around this joinQuery
|
|
901
895
|
joinQuery(fromQuery, toQuery) {
|
|
902
896
|
const join = toQuery.whereExists(
|
|
903
897
|
subQuery,
|
|
@@ -924,6 +918,7 @@ const makeHasAndBelongsToManyMethod = (table, qb, relation, relationName, query)
|
|
|
924
918
|
const fromQuery = ref.query.clone();
|
|
925
919
|
fromQuery.query.select = [{ selectAs: { [fk]: pk } }];
|
|
926
920
|
const createdCount = await subQuery.transacting(q).count()._createFrom(
|
|
921
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
927
922
|
fromQuery,
|
|
928
923
|
{
|
|
929
924
|
[afk]: result[apk]
|
|
@@ -1091,15 +1086,18 @@ const nestedUpdate = (state) => {
|
|
|
1091
1086
|
if (params.update) {
|
|
1092
1087
|
await state.relatedTableQuery.transacting(q)._whereExists(
|
|
1093
1088
|
state.joinTableQuery,
|
|
1094
|
-
(q2) =>
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1089
|
+
(q2) => (
|
|
1090
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1091
|
+
q2._on(
|
|
1092
|
+
state.associationForeignKeyFull,
|
|
1093
|
+
state.associationPrimaryKeyFull
|
|
1094
|
+
)._where({
|
|
1095
|
+
IN: {
|
|
1096
|
+
columns: [state.foreignKeyFull],
|
|
1097
|
+
values: [data.map((item) => item[state.primaryKey])]
|
|
1098
|
+
}
|
|
1099
|
+
})
|
|
1100
|
+
)
|
|
1103
1101
|
)._where(
|
|
1104
1102
|
Array.isArray(params.update.where) ? { OR: params.update.where } : params.update.where
|
|
1105
1103
|
)._update(params.update.data);
|
|
@@ -1396,6 +1394,7 @@ const orchidORM = (_a, tables) => {
|
|
|
1396
1394
|
options2.noPrimaryKey = "ignore";
|
|
1397
1395
|
const dbTable = new pqb.Db(
|
|
1398
1396
|
adapter,
|
|
1397
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1399
1398
|
qb,
|
|
1400
1399
|
table.table,
|
|
1401
1400
|
table.columns.shape,
|
|
@@ -1486,7 +1485,7 @@ class FileChanges {
|
|
|
1486
1485
|
}
|
|
1487
1486
|
}
|
|
1488
1487
|
|
|
1489
|
-
const { createSourceFile, ScriptTarget, SyntaxKind } =
|
|
1488
|
+
const { createSourceFile, ScriptTarget, SyntaxKind } = typescript;
|
|
1490
1489
|
const iterate = (kind) => {
|
|
1491
1490
|
return function* (statements) {
|
|
1492
1491
|
for (const node of statements) {
|
|
@@ -1626,7 +1625,7 @@ const ts = {
|
|
|
1626
1625
|
};
|
|
1627
1626
|
|
|
1628
1627
|
const getImportPath = (from, to) => {
|
|
1629
|
-
const rel =
|
|
1628
|
+
const rel = path.relative(path.dirname(from), to).split(path.sep).join(path.posix.sep);
|
|
1630
1629
|
const importPath = rel.startsWith("./") || rel.startsWith("../") ? rel : `./${rel}`;
|
|
1631
1630
|
return importPath.replace(/\.[tj]s$/, "");
|
|
1632
1631
|
};
|
|
@@ -1656,7 +1655,7 @@ const optionsToString = (options) => {
|
|
|
1656
1655
|
return lines.join("\n ");
|
|
1657
1656
|
};
|
|
1658
1657
|
const updateMainFile = async (filePath, tablePath, ast, options, logger) => {
|
|
1659
|
-
const result = await
|
|
1658
|
+
const result = await fs.readFile(filePath, "utf-8").then(
|
|
1660
1659
|
(content2) => ({ error: void 0, content: content2 }),
|
|
1661
1660
|
(error) => {
|
|
1662
1661
|
return { error, content: void 0 };
|
|
@@ -1699,9 +1698,9 @@ const updateMainFile = async (filePath, tablePath, ast, options, logger) => {
|
|
|
1699
1698
|
}
|
|
1700
1699
|
if (write) {
|
|
1701
1700
|
if (result.error) {
|
|
1702
|
-
await
|
|
1701
|
+
await fs.mkdir(path.dirname(filePath), { recursive: true });
|
|
1703
1702
|
}
|
|
1704
|
-
await
|
|
1703
|
+
await fs.writeFile(filePath, write);
|
|
1705
1704
|
logger == null ? void 0 : logger.log(
|
|
1706
1705
|
`${result.content ? "Updated" : "Created"} ${orchidCore.pathToLog(filePath)}`
|
|
1707
1706
|
);
|
|
@@ -1828,9 +1827,9 @@ const createTable = async (_a) => {
|
|
|
1828
1827
|
props,
|
|
1829
1828
|
"}\n"
|
|
1830
1829
|
];
|
|
1831
|
-
await
|
|
1830
|
+
await fs.mkdir(path.dirname(tablePath), { recursive: true });
|
|
1832
1831
|
try {
|
|
1833
|
-
await
|
|
1832
|
+
await fs.writeFile(tablePath, orchidCore.codeToString(code, "", " "), { flag: "wx" });
|
|
1834
1833
|
logger == null ? void 0 : logger.log(`Created ${orchidCore.pathToLog(tablePath)}`);
|
|
1835
1834
|
} catch (err) {
|
|
1836
1835
|
if (err.code !== "EEXIST") {
|
|
@@ -1876,7 +1875,7 @@ const changeTable = async (_a) => {
|
|
|
1876
1875
|
"logger"
|
|
1877
1876
|
]);
|
|
1878
1877
|
const tablePath = params.tablePath(orchidCore.toCamelCase(ast.name));
|
|
1879
|
-
const content = await
|
|
1878
|
+
const content = await fs.readFile(tablePath, "utf-8").catch(() => void 0);
|
|
1880
1879
|
if (!content)
|
|
1881
1880
|
return;
|
|
1882
1881
|
const changes = new FileChanges(content);
|
|
@@ -1890,7 +1889,7 @@ const changeTable = async (_a) => {
|
|
|
1890
1889
|
addColumns(context);
|
|
1891
1890
|
addTableData(context);
|
|
1892
1891
|
}
|
|
1893
|
-
await
|
|
1892
|
+
await fs.writeFile(tablePath, changes.apply());
|
|
1894
1893
|
logger == null ? void 0 : logger.log(`Updated ${orchidCore.pathToLog(tablePath)}`);
|
|
1895
1894
|
};
|
|
1896
1895
|
function* iterateColumnsShapes(statements, className) {
|
|
@@ -2151,7 +2150,9 @@ const getColumnMethodArgs = (t, to, key, dataType) => {
|
|
|
2151
2150
|
if (!value)
|
|
2152
2151
|
return;
|
|
2153
2152
|
if (key === "indexes") {
|
|
2154
|
-
return pqb.columnIndexesToCode(
|
|
2153
|
+
return pqb.columnIndexesToCode(
|
|
2154
|
+
value
|
|
2155
|
+
);
|
|
2155
2156
|
}
|
|
2156
2157
|
if (key === "foreignKeys") {
|
|
2157
2158
|
return pqb.columnForeignKeysToCode(value);
|
|
@@ -2359,7 +2360,7 @@ const renameTable = async (_a) => {
|
|
|
2359
2360
|
]);
|
|
2360
2361
|
var _a2;
|
|
2361
2362
|
const tablePath = params.tablePath(orchidCore.toCamelCase(ast.from));
|
|
2362
|
-
const content = await
|
|
2363
|
+
const content = await fs.readFile(tablePath, "utf-8").catch(() => void 0);
|
|
2363
2364
|
if (!content)
|
|
2364
2365
|
return;
|
|
2365
2366
|
const changes = new FileChanges(content);
|
|
@@ -2399,7 +2400,7 @@ const renameTable = async (_a) => {
|
|
|
2399
2400
|
}
|
|
2400
2401
|
}
|
|
2401
2402
|
}
|
|
2402
|
-
await
|
|
2403
|
+
await fs.writeFile(tablePath, changes.apply());
|
|
2403
2404
|
logger == null ? void 0 : logger.log(`Updated ${orchidCore.pathToLog(tablePath)}`);
|
|
2404
2405
|
};
|
|
2405
2406
|
|
|
@@ -2438,8 +2439,8 @@ const createBaseTableFile = async ({
|
|
|
2438
2439
|
baseTablePath,
|
|
2439
2440
|
logger
|
|
2440
2441
|
}) => {
|
|
2441
|
-
await
|
|
2442
|
-
await
|
|
2442
|
+
await fs.mkdir(path.dirname(baseTablePath), { recursive: true });
|
|
2443
|
+
await fs.writeFile(
|
|
2443
2444
|
baseTablePath,
|
|
2444
2445
|
`import { createBaseTable } from 'orchid-orm';
|
|
2445
2446
|
|