orchid-orm 1.59.4 → 1.59.5

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
@@ -1,4 +1,4 @@
1
- import { Column, TableData, ColumnsShape, Query, SelectableFromShape, CreateManyMethodsNames, QueryHasWhere, CreateData, AddQueryDefaults, RelationConfigBase, QueryManyTake, QueryManyTakeOptional, EmptyObject, UpdateData, WhereArg, CreateMethodsNames, MaybeArray, JoinQueryMethod, DeleteMethodsNames, Db, IsolationLevel, TransactionOptions, AfterCommitStandaloneHook, AdapterBase, FromArg, FromResult, DbSharedOptions, RelationsBase, ShapeColumnPrimaryKeys, ShapeUniqueColumns, TableDataItemsUniqueColumns, TableDataItemsUniqueColumnTuples, UniqueConstraints, TableDataItemsUniqueConstraints, ComputedColumnsFromOptions, MapTableScopesOption, TableDataItem, ComputedOptionsFactory, RecordUnknown, ShallowSimplify, ComputedOptionsConfig, QueryOrExpression, QueryData, IsQuery, TableDataFn, DbTableOptionScopes, QueryScopes, ColumnSchemaConfig, StaticSQLArgs, RawSql, DynamicSQLArg, DynamicRawSQL, DefaultSchemaConfig, DefaultColumnTypes, QueryBeforeHookInternal, QueryAfterHook, AfterHook, MergeQuery, QueryReturnType } from 'pqb';
1
+ import { Column, TableData, ColumnsShape, Query, SelectableFromShape, CreateManyMethodsNames, QueryHasWhere, RelationConfigBase, QueryManyTake, QueryManyTakeOptional, EmptyObject, CreateData, UpdateData, WhereArg, CreateMethodsNames, MaybeArray, JoinQueryMethod, DeleteMethodsNames, Db, IsolationLevel, TransactionOptions, AfterCommitStandaloneHook, AdapterBase, FromArg, FromResult, DbSharedOptions, ShapeColumnPrimaryKeys, ShapeUniqueColumns, TableDataItemsUniqueColumns, TableDataItemsUniqueColumnTuples, UniqueConstraints, TableDataItemsUniqueConstraints, ComputedColumnsFromOptions, MapTableScopesOption, TableDataItem, ComputedOptionsFactory, RecordUnknown, ShallowSimplify, ComputedOptionsConfig, QueryOrExpression, QueryData, IsQuery, TableDataFn, DbTableOptionScopes, QueryScopes, ColumnSchemaConfig, StaticSQLArgs, RawSql, DynamicSQLArg, DynamicRawSQL, DefaultSchemaConfig, DefaultColumnTypes, QueryBeforeHookInternal, QueryAfterHook, AfterHook, MergeQuery, QueryReturnType } from 'pqb';
2
2
  export * from 'pqb';
3
3
 
4
4
  interface RelationRefsOptions<Column extends PropertyKey = string, Shape extends Column.Shape.QueryInit = Column.Shape.QueryInit> {
@@ -24,14 +24,15 @@ type HasOneOptions<Columns extends Column.Shape.QueryInit = Column.Shape.QueryIn
24
24
  type HasOneParams<T extends RelationConfigSelf, Options> = Options extends RelationRefsOptions ? {
25
25
  [Name in Options['columns'][number]]: T['columns']['shape'][Name]['type'];
26
26
  } : Options extends RelationThroughOptions ? RelationConfigParams<T, T['relations'][Options['through']]> : never;
27
- type HasOnePopulate<T extends RelationConfigSelf, Name extends string> = T['relations'][Name]['options'] extends RelationRefsOptions ? T['relations'][Name]['options']['references'][number] : never;
28
- type HasOneQueryThrough<T extends RelationConfigSelf, Name extends string, TableQuery extends Query> = {
29
- [K in keyof TableQuery]: K extends '__defaults' ? HasOnePopulate<T, Name> : K extends '__selectable' ? SelectableFromShape<TableQuery['shape'], Name> : K extends '__as' ? Name : K extends CreateMethodsNames ? never : TableQuery[K];
27
+ type HasOneQueryThrough<Name extends string, TableQuery extends Query> = {
28
+ [K in keyof TableQuery]: K extends '__selectable' ? SelectableFromShape<TableQuery['shape'], Name> : K extends '__as' ? Name : K extends CreateMethodsNames ? never : TableQuery[K];
30
29
  } & QueryHasWhere & HasRelJoin;
31
- type HasOneQuery<T extends RelationConfigSelf, Name extends string, TableQuery extends Query> = T['relations'][Name]['options'] extends RelationThroughOptions ? HasOneQueryThrough<T, Name, TableQuery> : {
32
- [K in keyof TableQuery]: K extends '__defaults' ? HasOnePopulate<T, Name> : K extends '__selectable' ? SelectableFromShape<TableQuery['shape'], Name> : K extends '__as' ? Name : K extends CreateManyMethodsNames ? never : TableQuery[K];
33
- } & QueryHasWhere & HasRelJoin;
34
- interface HasOneInfo<T extends RelationConfigSelf, Name extends string, Rel extends HasOne, Q extends Query, CD = T['relations'][Name]['options'] extends RelationThroughOptions ? CreateData<Q> : CreateData<AddQueryDefaults<Q, HasOnePopulate<T, Name>>>> extends RelationConfigBase {
30
+ type HasOneQuery<T extends RelationConfigSelf, Name extends string, TableQuery extends Query> = T['relations'][Name]['options'] extends RelationRefsOptions ? {
31
+ [K in keyof TableQuery]: K extends '__defaults' ? {
32
+ [K in keyof TableQuery['__defaults'] | T['relations'][Name]['options']['references'][number]]: true;
33
+ } : K extends '__selectable' ? SelectableFromShape<TableQuery['shape'], Name> : K extends '__as' ? Name : K extends CreateManyMethodsNames ? never : TableQuery[K];
34
+ } & QueryHasWhere & HasRelJoin : HasOneQueryThrough<Name, TableQuery>;
35
+ interface HasOneInfo<T extends RelationConfigSelf, Name extends string, Rel extends HasOne, Q extends Query> extends RelationConfigBase {
35
36
  returnsOne: true;
36
37
  query: Q;
37
38
  params: HasOneParams<T, Rel['options']>;
@@ -39,7 +40,7 @@ interface HasOneInfo<T extends RelationConfigSelf, Name extends string, Rel exte
39
40
  omitForeignKeyInCreate: never;
40
41
  optionalDataForCreate: T['relations'][Name]['options'] extends RelationThroughOptions ? EmptyObject : {
41
42
  [P in Name]?: RelationToOneDataForCreate<{
42
- nestedCreateQuery: CD;
43
+ nestedCreateQuery: CreateData<Q>;
43
44
  table: Q;
44
45
  }>;
45
46
  };
@@ -62,10 +63,10 @@ interface HasOneInfo<T extends RelationConfigSelf, Name extends string, Rel exte
62
63
  } | {
63
64
  upsert: {
64
65
  update: UpdateData<Q>;
65
- create: CD | (() => CD);
66
+ create: CreateData<Q> | (() => CreateData<Q>);
66
67
  };
67
68
  } | {
68
- create: CD;
69
+ create: CreateData<Q>;
69
70
  };
70
71
  }
71
72
 
@@ -73,9 +74,11 @@ interface HasMany extends RelationThunkBase {
73
74
  type: 'hasMany';
74
75
  options: HasOneOptions;
75
76
  }
76
- type HasManyQuery<T extends RelationConfigSelf, Name extends string, TableQuery extends Query> = T['relations'][Name]['options'] extends RelationThroughOptions ? HasOneQueryThrough<T, Name, TableQuery> : {
77
- [K in keyof TableQuery]: K extends '__defaults' ? HasOnePopulate<T, Name> : K extends '__selectable' ? SelectableFromShape<TableQuery['shape'], Name> : K extends '__as' ? Name : TableQuery[K];
78
- } & QueryHasWhere & HasRelJoin;
77
+ type HasManyQuery<T extends RelationConfigSelf, Name extends string, TableQuery extends Query> = T['relations'][Name]['options'] extends RelationRefsOptions ? {
78
+ [K in keyof TableQuery]: K extends '__defaults' ? {
79
+ [K in keyof TableQuery['__defaults'] | T['relations'][Name]['options']['references'][number]]: true;
80
+ } : K extends '__selectable' ? SelectableFromShape<TableQuery['shape'], Name> : K extends '__as' ? Name : TableQuery[K];
81
+ } & QueryHasWhere & HasRelJoin : HasOneQueryThrough<Name, TableQuery>;
79
82
  interface HasManyInfo<T extends RelationConfigSelf, Name extends string, Rel extends HasMany, Q extends Query> extends RelationConfigBase {
80
83
  returnsOne: false;
81
84
  query: Q;
@@ -84,11 +87,11 @@ interface HasManyInfo<T extends RelationConfigSelf, Name extends string, Rel ext
84
87
  omitForeignKeyInCreate: never;
85
88
  optionalDataForCreate: {
86
89
  [P in Name]?: T['relations'][Name]['options'] extends RelationThroughOptions ? EmptyObject : {
87
- create?: CreateData<T['relations'][Name]['options'] extends RelationThroughOptions ? Q : AddQueryDefaults<Q, HasOnePopulate<T, Name>>>[];
90
+ create?: CreateData<Q>[];
88
91
  connect?: WhereArg<Q>[];
89
92
  connectOrCreate?: {
90
93
  where: WhereArg<Q>;
91
- create: CreateData<T['relations'][Name]['options'] extends RelationThroughOptions ? Q : AddQueryDefaults<Q, HasOnePopulate<T, Name>>>;
94
+ create: CreateData<Q>;
92
95
  }[];
93
96
  };
94
97
  };
@@ -110,7 +113,7 @@ interface HasManyInfo<T extends RelationConfigSelf, Name extends string, Rel ext
110
113
  };
111
114
  set?: MaybeArray<WhereArg<Q>>;
112
115
  add?: MaybeArray<WhereArg<Q>>;
113
- create?: CreateData<T['relations'][Name]['options'] extends RelationThroughOptions ? Q : AddQueryDefaults<Q, HasOnePopulate<T, Name>>>[];
116
+ create?: CreateData<Q>[];
114
117
  };
115
118
  }
116
119
 
@@ -204,7 +207,7 @@ interface FromQuery extends Query {
204
207
  type OrchidORM<T extends TableClasses = TableClasses> = {
205
208
  [K in keyof T]: T[K] extends {
206
209
  new (): infer R extends ORMTableInput;
207
- } ? ORMTableInputToQueryBuilder<R> : never;
210
+ } ? TableToDb<R> : never;
208
211
  } & OrchidORMMethods;
209
212
  interface OrchidORMMethods {
210
213
  /**
@@ -405,7 +408,7 @@ interface RelationThunks {
405
408
  }
406
409
  type RelationTableToQuery<Relation> = Relation extends {
407
410
  related: infer R extends ORMTableInput;
408
- } ? ORMTableInputToQueryBuilder<R> : never;
411
+ } ? TableToDb<R> : never;
409
412
  interface RelationConfigSelf {
410
413
  columns: {
411
414
  shape: Column.Shape.QueryInit;
@@ -428,12 +431,11 @@ interface TableInfo {
428
431
  }
429
432
  interface Table extends Query, TableInfo {
430
433
  }
431
- interface TableToDb<T extends ORMTableInput, Relations extends RelationsBase> extends TableInfo, Db<T['table'], T['columns']['shape'], keyof ShapeColumnPrimaryKeys<T['columns']['shape']> extends never ? never : ShapeColumnPrimaryKeys<T['columns']['shape']>, ShapeUniqueColumns<T['columns']['shape']> | TableDataItemsUniqueColumns<T['columns']['shape'], T['columns']['data']>, TableDataItemsUniqueColumnTuples<T['columns']['shape'], T['columns']['data']>, UniqueConstraints<T['columns']['shape']> | TableDataItemsUniqueConstraints<T['columns']['data']>, T['types'], T['columns']['shape'] & ComputedColumnsFromOptions<T['computed']>, MapTableScopesOption<T>, ColumnsShape.DefaultSelectKeys<T['columns']['shape']>> {
432
- relations: Relations;
434
+ interface TableToDb<T extends ORMTableInput> extends TableInfo, Db<T['table'], T['columns']['shape'], keyof ShapeColumnPrimaryKeys<T['columns']['shape']> extends never ? never : ShapeColumnPrimaryKeys<T['columns']['shape']>, ShapeUniqueColumns<T['columns']['shape']> | TableDataItemsUniqueColumns<T['columns']['shape'], T['columns']['data']>, TableDataItemsUniqueColumnTuples<T['columns']['shape'], T['columns']['data']>, UniqueConstraints<T['columns']['shape']> | TableDataItemsUniqueConstraints<T['columns']['data']>, T['types'], T['columns']['shape'] & ComputedColumnsFromOptions<T['computed']>, MapTableScopesOption<T>, ColumnsShape.DefaultSelectKeys<T['columns']['shape']>> {
435
+ relations: T extends RelationConfigSelf ? {
436
+ [K in keyof T['relations'] & string]: T['relations'][K] extends BelongsTo ? BelongsToInfo<T, K, T['relations'][K]['options']['columns'][number] & string, T['relations'][K]['options']['required'], BelongsToQuery<RelationTableToQuery<T['relations'][K]>, K>> : T['relations'][K] extends HasOne ? HasOneInfo<T, K, T['relations'][K], HasOneQuery<T, K, RelationTableToQuery<T['relations'][K]>>> : T['relations'][K] extends HasMany ? HasManyInfo<T, K, T['relations'][K], HasManyQuery<T, K, RelationTableToQuery<T['relations'][K]>>> : T['relations'][K] extends HasAndBelongsToMany ? HasAndBelongsToManyInfo<T, K, T['relations'][K]['options']['columns'][number] & string, HasAndBelongsToManyQuery<K, RelationTableToQuery<T['relations'][K]>>> : never;
437
+ } : EmptyObject;
433
438
  }
434
- type ORMTableInputToQueryBuilder<T extends ORMTableInput> = T extends RelationConfigSelf ? TableToDb<T, T extends RelationConfigSelf ? {
435
- [K in keyof T['relations'] & string]: T['relations'][K] extends BelongsTo ? BelongsToInfo<T, K, T['relations'][K]['options']['columns'][number] & string, T['relations'][K]['options']['required'], BelongsToQuery<RelationTableToQuery<T['relations'][K]>, K>> : T['relations'][K] extends HasOne ? HasOneInfo<T, K, T['relations'][K], HasOneQuery<T, K, RelationTableToQuery<T['relations'][K]>>> : T['relations'][K] extends HasMany ? HasManyInfo<T, K, T['relations'][K], HasManyQuery<T, K, RelationTableToQuery<T['relations'][K]>>> : T['relations'][K] extends HasAndBelongsToMany ? HasAndBelongsToManyInfo<T, K, T['relations'][K]['options']['columns'][number] & string, HasAndBelongsToManyQuery<K, RelationTableToQuery<T['relations'][K]>>> : never;
436
- } : EmptyObject> : TableToDb<T, EmptyObject>;
437
439
  interface ORMTableInput {
438
440
  table: string;
439
441
  columns: {
@@ -726,4 +728,4 @@ declare const createRepo: <T extends Query, Methods extends MethodsBase<T>>(tabl
726
728
  shape: T['shape'];
727
729
  }>(q: Q) => Query & Q & MapMethods<T, Methods>) & T, Methods>;
728
730
 
729
- export { type BaseTableClass, type BaseTableInstance, type DefaultSelect, type Insertable, type MapMethods, type MapQueryMethods, type MethodsBase, type ORMTableInput, type ORMTableInputToQueryBuilder, type OrchidORM, type OrchidOrmParam, type Queryable, type Repo, type Selectable, type SetColumnsResult, type Table, type TableClass, type TableClasses, type TableInfo, type TableToDb, type Updatable, createBaseTable, createRepo, orchidORMWithAdapter };
731
+ export { type BaseTableClass, type BaseTableInstance, type DefaultSelect, type Insertable, type MapMethods, type MapQueryMethods, type MethodsBase, type ORMTableInput, type OrchidORM, type OrchidOrmParam, type Queryable, type Repo, type Selectable, type SetColumnsResult, type Table, type TableClass, type TableClasses, type TableInfo, type TableToDb, type Updatable, createBaseTable, createRepo, orchidORMWithAdapter };