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 CHANGED
@@ -10,7 +10,7 @@ interface BelongsTo extends RelationThunkBase {
10
10
  returns: 'one';
11
11
  options: BelongsToRelation['options'];
12
12
  }
13
- declare type BelongsToInfo<T extends Table, Relation extends BelongsTo, FK extends string = Relation['options']['foreignKey']> = {
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
- declare type HasManyInfo<T extends Table, Relations extends RelationThunks, Relation extends HasMany> = {
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
- declare type HasOneInfo<T extends Table, Relations extends RelationThunks, Relation extends HasOne> = {
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
- declare type OrchidORM<T extends TableClasses> = {
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
- declare type HasAndBelongsToManyInfo<T extends Table, Relation extends HasAndBelongsToMany> = {
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
- declare type RelationThunk = BelongsTo | HasOne | HasMany | HasAndBelongsToMany;
99
- declare type RelationThunks = Record<string, RelationThunk>;
100
- declare 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]>> = {
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
- declare type RelationScopeOrTable<Relation extends RelationThunkBase> = Relation['options']['scope'] extends (q: Query) => Query ? ReturnType<Relation['options']['scope']> : DbTable<ReturnType<Relation['fn']>>;
115
- declare 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
- declare type MapRelation<T extends Table, Relations extends RelationThunks, RelationName extends keyof Relations, Relation extends RelationThunk = Relations[RelationName], RelatedQuery extends Query = RelationScopeOrTable<Relation>, Info extends {
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
- declare type MapRelations<T extends Table> = 'relations' extends keyof T ? T['relations'] extends RelationThunks ? {
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
- declare type TableClass<T extends Table = Table> = new () => T;
127
- declare type TableClasses = Record<string, TableClass>;
128
- declare type TableToDb<T extends Table> = Db<T['table'], T['columns']['shape'], 'relations' extends keyof T ? T['relations'] extends RelationThunks ? {
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
- declare type DbTable<T extends TableClass> = TableToDb<InstanceType<T>> & Omit<MapRelations<InstanceType<T>>, keyof Query>;
135
- declare type TableConfig = {
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
- declare type ScopeFn<Related extends TableClass, Scope extends Query> = (q: DbTable<Related>) => Scope;
140
- declare type Table = {
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<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, orchid_core.ColumnDataBase>>>;
163
- updatedAt: orchid_core.ColumnWithDefault<T, orchid_core.RawExpression<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, orchid_core.ColumnDataBase>>>;
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<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, orchid_core.ColumnDataBase>>>;
172
- updatedAt: orchid_core.ColumnWithDefault<T_1, orchid_core.RawExpression<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, orchid_core.ColumnDataBase>>>;
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 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) & {
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 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) & {
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: <T_15 extends orchid_core.JSONTypeAny>(type: T_15) => orchid_core.JSONOptional<T_15>;
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 ? [Exclude<keyof InstanceType<ReturnType<Table_1>>["columns"]["shape"], number | symbol>, ...Exclude<keyof InstanceType<ReturnType<Table_1>>["columns"]["shape"], number | symbol>[]] : [string, ...string[]]>({ name, references, check, dropMode, }: {
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<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, orchid_core.ColumnDataBase>> | undefined;
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 ? [Exclude<keyof InstanceType<ReturnType<Table_2>>["columns"]["shape"], number | symbol>, ...Exclude<keyof InstanceType<ReturnType<Table_2>>["columns"]["shape"], number | symbol>[]] : [string, ...string[]]>(columns: string[], fnOrTable: Table_2, foreignColumns: Columns_1, options?: (pqb.ForeignKeyOptions & {
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<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, orchid_core.ColumnDataBase>>): {};
270
+ check(check: orchid_core.RawExpression): {};
271
271
  } : CT;
272
272
  noPrimaryKey?: boolean | undefined;
273
273
  snakeCase: boolean | undefined;
274
- setColumns: <T_16 extends ColumnsShape>(fn: (t: ColumnTypesBase extends CT ? {
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<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, orchid_core.ColumnDataBase>>>;
282
- updatedAt: orchid_core.ColumnWithDefault<T, orchid_core.RawExpression<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, orchid_core.ColumnDataBase>>>;
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<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, orchid_core.ColumnDataBase>>>;
291
- updatedAt: orchid_core.ColumnWithDefault<T_1, orchid_core.RawExpression<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, orchid_core.ColumnDataBase>>>;
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 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_13 extends object ? { [k in keyof T_13]: orchid_core.addQuestionMarks<{ [k_1 in keyof T_12]: T_12[k_1]["type"]; }>[k]; } : never) & {
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 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_13 extends object ? { [k in keyof T_13]: orchid_core.addQuestionMarks<{ [k_1 in keyof T_12]: T_12[k_1]["type"]; }>[k]; } : never) & {
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: <T_15 extends orchid_core.JSONTypeAny>(type: T_15) => orchid_core.JSONOptional<T_15>;
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 ? [Exclude<keyof InstanceType<ReturnType<Table_1>>["columns"]["shape"], number | symbol>, ...Exclude<keyof InstanceType<ReturnType<Table_1>>["columns"]["shape"], number | symbol>[]] : [string, ...string[]]>({ name, references, check, dropMode, }: {
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<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, orchid_core.ColumnDataBase>> | undefined;
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 ? [Exclude<keyof InstanceType<ReturnType<Table_2>>["columns"]["shape"], number | symbol>, ...Exclude<keyof InstanceType<ReturnType<Table_2>>["columns"]["shape"], number | symbol>[]] : [string, ...string[]]>(columns: string[], fnOrTable: Table_2, foreignColumns: Columns_1, options?: (pqb.ForeignKeyOptions & {
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<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, orchid_core.ColumnDataBase>>): {};
390
- } : CT) => T_16) => {
391
- shape: T_16;
392
- type: ColumnShapeOutput<T_16>;
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
- declare type QueryMethods<T extends Query> = Record<string, (q: T, ...args: any[]) => any>;
453
- declare type QueryOne<T extends Query> = SetQueryReturns<T, Exclude<QueryReturnType, 'all'>>;
454
- declare type MethodsBase<T extends Query> = {
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
- declare type MapQueryMethods<T extends Query, BaseQuery extends Query, Methods> = Methods extends QueryMethods<T> ? {
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
- declare 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
- declare type Repo<T extends Query, Methods extends MethodsBase<T>, Mapped = MapMethods<T, Methods>> = (<Q extends {
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
- declare type AppCodeUpdaterConfig = {
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 _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
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["default"] = e;
22
+ n.default = e;
28
23
  return Object.freeze(n);
29
24
  }
30
25
 
31
- var path__default = /*#__PURE__*/_interopDefaultLegacy(path);
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) => q2._on(
1095
- state.associationForeignKeyFull,
1096
- state.associationPrimaryKeyFull
1097
- )._where({
1098
- IN: {
1099
- columns: [state.foreignKeyFull],
1100
- values: [data.map((item) => item[state.primaryKey])]
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 } = typescript__default["default"];
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 = path__default["default"].relative(path__default["default"].dirname(from), to).split(path__default["default"].sep).join(path__default["default"].posix.sep);
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 fs__default["default"].readFile(filePath, "utf-8").then(
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 fs__default["default"].mkdir(path__default["default"].dirname(filePath), { recursive: true });
1701
+ await fs.mkdir(path.dirname(filePath), { recursive: true });
1703
1702
  }
1704
- await fs__default["default"].writeFile(filePath, write);
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 fs__default["default"].mkdir(path__default["default"].dirname(tablePath), { recursive: true });
1830
+ await fs.mkdir(path.dirname(tablePath), { recursive: true });
1832
1831
  try {
1833
- await fs__default["default"].writeFile(tablePath, orchidCore.codeToString(code, "", " "), { flag: "wx" });
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 fs__default["default"].readFile(tablePath, "utf-8").catch(() => void 0);
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 fs__default["default"].writeFile(tablePath, changes.apply());
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(value);
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 fs__default["default"].readFile(tablePath, "utf-8").catch(() => void 0);
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 fs__default["default"].writeFile(tablePath, changes.apply());
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 fs__default["default"].mkdir(path__default["default"].dirname(baseTablePath), { recursive: true });
2442
- await fs__default["default"].writeFile(
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