orchid-orm 1.17.2 → 1.17.4

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
@@ -2,7 +2,7 @@ import * as pqb from 'pqb';
2
2
  import { Query, QueryWithTable, SetQueryTableAlias, WhereArg, UpdateData, CreateData, Db, IsolationLevel, TransactionOptions, Adapter, FromArgs, FromResult, AdapterOptions, QueryLogOptions, NoPrimaryKeyOption, RelationConfigBase, RelationQuery, SetQueryReturnsOne, SetQueryReturnsOneOptional, SetQueryReturnsAll, RelationQueryBase, ColumnsShape, DefaultColumnTypes, QueryData, QueryBase, QueryBeforeHook, QueryAfterHook, AfterHook, WhereResult, MergeQuery, SetQueryReturns, QueryReturnType } from 'pqb';
3
3
  export { OrchidOrmError, OrchidOrmInternalError, columnTypes, raw, testTransaction } from 'pqb';
4
4
  import * as orchid_core from 'orchid-core';
5
- import { EmptyObject, MaybeArray, ColumnTypesBase, ColumnShapeQueryType, ColumnShapeOutput, ColumnShapeInput, ColumnsShapeBase } from 'orchid-core';
5
+ import { EmptyObject, MaybeArray, StringKey, ColumnTypesBase, ColumnShapeQueryType, ColumnShapeOutput, ColumnShapeInput, ColumnsShapeBase } from 'orchid-core';
6
6
 
7
7
  type RelationCommonOptions<Related extends TableClass = TableClass, Scope extends Query = Query> = {
8
8
  scope?: ScopeFn<Related, Scope>;
@@ -28,17 +28,24 @@ type BelongsTo = RelationThunkBase & {
28
28
  options: BelongsToOptions;
29
29
  };
30
30
  type BelongsToOptions<Self extends Table = Table, Related extends TableClass = TableClass, Scope extends Query = Query> = RelationCommonOptions<Related, Scope> & RelationRefsOrKeysOptions<keyof Self['columns'], keyof InstanceType<Related>['columns'], keyof InstanceType<Related>['columns'], keyof Self['columns']>;
31
- type BelongsToInfo<T extends Table, Relation extends BelongsTo, K extends string, FK extends string = Relation['options'] extends RelationRefsOptions ? Relation['options']['columns'][number] : Relation['options'] extends RelationKeysOptions ? Relation['options']['foreignKey'] : never, Q extends QueryWithTable = SetQueryTableAlias<DbTable<ReturnType<Relation['fn']>>, K>> = {
31
+ type BelongsToInfo<T extends Table, Relation extends BelongsTo, K extends string, FK extends string = Relation['options'] extends RelationRefsOptions ? Relation['options']['columns'][number] : Relation['options'] extends RelationKeysOptions ? Relation['options']['foreignKey'] : never, Q extends QueryWithTable = SetQueryTableAlias<DbTable<ReturnType<Relation['fn']>>, K>, DataForCreate = RelationToOneDataForCreate<{
32
+ nestedCreateQuery: Q;
33
+ table: Q;
34
+ }>, Required = Relation['options']['required'] extends true ? true : false> = {
32
35
  table: Q;
33
36
  query: Q;
34
37
  joinQuery(fromQuery: Query, toQuery: Query): Query;
35
38
  one: true;
36
- required: Relation['options']['required'] extends true ? true : false;
39
+ required: Required;
37
40
  omitForeignKeyInCreate: FK;
38
- dataForCreate: RelationToOneDataForCreate<{
39
- nestedCreateQuery: Q;
40
- table: Q;
41
- }>;
41
+ requiredDataForCreate: {
42
+ [L in FK]: T['columns'][L]['inputType'];
43
+ } | (Required extends true ? {
44
+ [Key in K]: DataForCreate;
45
+ } : {
46
+ [Key in K]?: DataForCreate;
47
+ });
48
+ optionalDataForCreate: EmptyObject;
42
49
  dataForUpdate: {
43
50
  disconnect: boolean;
44
51
  } | {
@@ -80,10 +87,13 @@ type HasManyInfo<T extends Table, Relations extends RelationThunks, Relation ext
80
87
  one: false;
81
88
  required: Relation['options']['required'] extends true ? true : false;
82
89
  omitForeignKeyInCreate: never;
83
- dataForCreate: Relation['options'] extends RelationThroughOptions ? EmptyObject : RelationToManyDataForCreate<{
84
- nestedCreateQuery: NestedCreateQuery;
85
- table: Q;
86
- }>;
90
+ requiredDataForCreate: EmptyObject;
91
+ optionalDataForCreate: {
92
+ [P in K]?: Relation['options'] extends RelationThroughOptions ? EmptyObject : RelationToManyDataForCreate<{
93
+ nestedCreateQuery: NestedCreateQuery;
94
+ table: Q;
95
+ }>;
96
+ };
87
97
  dataForUpdate: {
88
98
  disconnect?: MaybeArray<WhereArg<Q>>;
89
99
  delete?: MaybeArray<WhereArg<Q>>;
@@ -98,7 +108,7 @@ type HasManyInfo<T extends Table, Relations extends RelationThunks, Relation ext
98
108
  };
99
109
  params: Relation['options'] extends RelationRefsOptions ? {
100
110
  [K in Relation['options']['columns'][number]]: T['columns'][K]['type'];
101
- } : Relation['options'] extends RelationKeysOptions ? Record<Relation['options']['primaryKey'], T['columns'][Relation['options']['primaryKey']]['type']> : Relation['options'] extends RelationThroughOptions ? RelationConfig<T, Relations, Relations[Relation['options']['through']]>['params'] : never;
111
+ } : Relation['options'] extends RelationKeysOptions ? Record<Relation['options']['primaryKey'], T['columns'][Relation['options']['primaryKey']]['type']> : Relation['options'] extends RelationThroughOptions ? RelationConfig<T, Relations, Relations[Relation['options']['through']], Relation['options']['through']>['params'] : never;
102
112
  populate: Populate;
103
113
  chainedCreate: Relation['options'] extends RelationThroughOptions ? false : true;
104
114
  chainedDelete: true;
@@ -120,10 +130,13 @@ type HasOneInfo<T extends Table, Relations extends RelationThunks, Relation exte
120
130
  one: true;
121
131
  required: Relation['options']['required'] extends true ? true : false;
122
132
  omitForeignKeyInCreate: never;
123
- dataForCreate: Relation['options'] extends RelationThroughOptions ? EmptyObject : RelationToOneDataForCreate<{
124
- nestedCreateQuery: NestedCreateQuery;
125
- table: Q;
126
- }>;
133
+ requiredDataForCreate: EmptyObject;
134
+ optionalDataForCreate: Relation['options'] extends RelationThroughOptions ? EmptyObject : {
135
+ [P in K]?: RelationToOneDataForCreate<{
136
+ nestedCreateQuery: NestedCreateQuery;
137
+ table: Q;
138
+ }>;
139
+ };
127
140
  dataForUpdate: {
128
141
  disconnect: boolean;
129
142
  } | {
@@ -143,7 +156,7 @@ type HasOneInfo<T extends Table, Relations extends RelationThunks, Relation exte
143
156
  };
144
157
  params: Relation['options'] extends RelationRefsOptions ? {
145
158
  [K in Relation['options']['columns'][number]]: T['columns'][K]['type'];
146
- } : Relation['options'] extends RelationKeysOptions ? Record<Relation['options']['primaryKey'], T['columns'][Relation['options']['primaryKey']]['type']> : Relation['options'] extends RelationThroughOptions ? RelationConfig<T, Relations, Relations[Relation['options']['through']]>['params'] : never;
159
+ } : Relation['options'] extends RelationKeysOptions ? Record<Relation['options']['primaryKey'], T['columns'][Relation['options']['primaryKey']]['type']> : Relation['options'] extends RelationThroughOptions ? RelationConfig<T, Relations, Relations[Relation['options']['through']], Relation['options']['through']>['params'] : never;
147
160
  populate: Populate;
148
161
  chainedCreate: Relation['options'] extends RelationThroughOptions ? false : true;
149
162
  chainedDelete: true;
@@ -257,10 +270,13 @@ type HasAndBelongsToManyInfo<T extends Table, Relation extends HasAndBelongsToMa
257
270
  one: false;
258
271
  required: Relation['options']['required'] extends true ? true : false;
259
272
  omitForeignKeyInCreate: never;
260
- dataForCreate: RelationToManyDataForCreate<{
261
- nestedCreateQuery: Q;
262
- table: Q;
263
- }>;
273
+ requiredDataForCreate: EmptyObject;
274
+ optionalDataForCreate: {
275
+ [P in K]?: RelationToManyDataForCreate<{
276
+ nestedCreateQuery: Q;
277
+ table: Q;
278
+ }>;
279
+ };
264
280
  dataForUpdate: {
265
281
  disconnect?: MaybeArray<WhereArg<Q>>;
266
282
  set?: MaybeArray<WhereArg<Q>>;
@@ -323,8 +339,8 @@ type RelationThunk = BelongsTo | HasOne | HasMany | HasAndBelongsToMany;
323
339
  type RelationThunks = Record<string, RelationThunk>;
324
340
  type RelationScopeOrTable<Relation extends RelationThunkBase> = Relation['options']['scope'] extends (q: Query) => Query ? ReturnType<Relation['options']['scope']> : RelationQueryFromFn<Relation>;
325
341
  type RelationQueryFromFn<Relation extends RelationThunkBase, TC extends TableClass = ReturnType<Relation['fn']>, Q extends Query = DbTable<TC>> = Q;
326
- type RelationConfig<T extends Table = Table, Relations extends RelationThunks = RelationThunks, Relation extends RelationThunk = RelationThunk, K extends string = string, Result extends RelationConfigBase = Relation extends BelongsTo ? BelongsToInfo<T, Relation, K> : Relation extends HasOne ? HasOneInfo<T, Relations, Relation, K> : Relation extends HasMany ? HasManyInfo<T, Relations, Relation, K> : Relation extends HasAndBelongsToMany ? HasAndBelongsToManyInfo<T, Relation, K> : never> = Result;
327
- type MapRelation<T extends Table, Relations extends RelationThunks, RelationName extends keyof Relations, Relation extends RelationThunk = Relations[RelationName], RelatedQuery extends Query = RelationScopeOrTable<Relation>, Config extends RelationConfigBase = RelationConfig<T, Relations, Relation>> = RelationQuery<RelationName, Config, Config['one'] extends true ? Config['required'] extends true ? SetQueryReturnsOne<RelatedQuery> : SetQueryReturnsOneOptional<RelatedQuery> : SetQueryReturnsAll<RelatedQuery>>;
342
+ type RelationConfig<T extends Table = Table, Relations extends RelationThunks = RelationThunks, Relation extends RelationThunk = RelationThunk, K extends PropertyKey = PropertyKey, Result extends RelationConfigBase = Relation extends BelongsTo ? BelongsToInfo<T, Relation, StringKey<K>> : Relation extends HasOne ? HasOneInfo<T, Relations, Relation, StringKey<K>> : Relation extends HasMany ? HasManyInfo<T, Relations, Relation, StringKey<K>> : Relation extends HasAndBelongsToMany ? HasAndBelongsToManyInfo<T, Relation, StringKey<K>> : never> = Result;
343
+ type MapRelation<T extends Table, Relations extends RelationThunks, RelationName extends keyof Relations, Relation extends RelationThunk = Relations[RelationName], RelatedQuery extends Query = RelationScopeOrTable<Relation>, Config extends RelationConfigBase = RelationConfig<T, Relations, Relation, RelationName>> = RelationQuery<RelationName, Config, Config['one'] extends true ? Config['required'] extends true ? SetQueryReturnsOne<RelatedQuery> : SetQueryReturnsOneOptional<RelatedQuery> : SetQueryReturnsAll<RelatedQuery>>;
328
344
  type MapRelations<T extends Table> = T extends {
329
345
  relations: RelationThunks;
330
346
  } ? {
@@ -470,19 +486,19 @@ declare const createBaseTable: <ColumnTypes extends Record<string, orchid_core.A
470
486
  unknown: () => orchid_core.JSONUnknown;
471
487
  boolean: () => orchid_core.JSONBoolean;
472
488
  null: () => orchid_core.JSONNull;
473
- number: () => orchid_core.JSONNumber;
474
- string: () => orchid_core.JSONString;
475
- array: <T_5 extends orchid_core.JSONType<unknown, {}>>(item: T_5) => orchid_core.JSONArray<T_5, "many">;
489
+ number: <T_5 extends number = number>() => orchid_core.JSONNumber<T_5>;
490
+ string: <T_6 extends string = string>() => orchid_core.JSONString<T_6>;
491
+ array: <T_7 extends orchid_core.JSONType<unknown, {}>>(item: T_7) => orchid_core.JSONArray<T_7, "many">;
476
492
  object: <Shape extends orchid_core.JSONObjectShape>(shape: Shape) => orchid_core.JSONObject<Shape, "strip", orchid_core.JSONType<unknown, {}>>;
477
- literal: <T_6 extends orchid_core.JSONPrimitive>(value: T_6) => orchid_core.JSONLiteral<T_6>;
493
+ literal: <T_8 extends orchid_core.JSONPrimitive>(value: T_8) => orchid_core.JSONLiteral<T_8>;
478
494
  discriminatedUnion: <Discriminator extends string, Types extends orchid_core.JSONDiscriminatedUnionArg<Discriminator>>(discriminator: Discriminator, types: Types) => orchid_core.JSONDiscriminatedUnion<Discriminator, Types>;
479
- enum: <U_1 extends string, T_7 extends [U_1, ...U_1[]]>(options: T_7) => orchid_core.JSONEnum<string, T_7>;
495
+ enum: <U_1 extends string, T_9 extends [U_1, ...U_1[]]>(options: T_9) => orchid_core.JSONEnum<string, T_9>;
480
496
  intersection: <Left extends orchid_core.JSONType<unknown, {}>, Right extends orchid_core.JSONType<unknown, {}>>(left: Left, right: Right) => orchid_core.JSONIntersection<Left, Right>;
481
- lazy: <T_8 extends orchid_core.JSONType<unknown, {}>>(fn: () => T_8) => orchid_core.JSONLazy<T_8>;
482
- nativeEnum: <T_9 extends orchid_core.EnumLike>(type: T_9) => orchid_core.JSONNativeEnum<T_9>;
483
- record: <Key extends orchid_core.JSONNumber | orchid_core.JSONString, Value extends orchid_core.JSONType<unknown, {}>>(...args: [value: Value] | [key: Key, value: Value]) => orchid_core.JSONRecord<Key, Value>;
484
- tuple: <T_10 extends orchid_core.JSONTupleItems, Rest extends orchid_core.JSONType<unknown, {}> | undefined = undefined>(items: T_10, rest?: Rest | undefined) => orchid_core.JSONTuple<T_10, Rest>;
485
- union: <T_11 extends orchid_core.JSONUnionArgs>(...types: T_11) => orchid_core.JSONUnion<T_11>;
497
+ lazy: <T_10 extends orchid_core.JSONType<unknown, {}>>(fn: () => T_10) => orchid_core.JSONLazy<T_10>;
498
+ nativeEnum: <T_11 extends orchid_core.EnumLike>(type: T_11) => orchid_core.JSONNativeEnum<T_11>;
499
+ record: <Key extends orchid_core.JSONString<string> | orchid_core.JSONNumber<number>, Value extends orchid_core.JSONType<unknown, {}>>(...args: [value: Value] | [key: Key, value: Value]) => orchid_core.JSONRecord<Key, Value>;
500
+ tuple: <T_12 extends orchid_core.JSONTupleItems, Rest extends orchid_core.JSONType<unknown, {}> | undefined = undefined>(items: T_12, rest?: Rest | undefined) => orchid_core.JSONTuple<T_12, Rest>;
501
+ union: <T_13 extends orchid_core.JSONUnionArgs>(...types: T_13) => orchid_core.JSONUnion<T_13>;
486
502
  }) => Type) | undefined): pqb.JSONColumn<Type>;
487
503
  jsonText(): pqb.JSONTextColumn;
488
504
  array<Item extends pqb.ColumnType<unknown, pqb.BaseOperators, unknown, unknown, unknown>>(item: Item): pqb.ArrayColumn<Item>;
@@ -510,9 +526,9 @@ declare const createBaseTable: <ColumnTypes extends Record<string, orchid_core.A
510
526
  language: string | undefined;
511
527
  filePath: string;
512
528
  result: ColumnsShapeBase;
513
- clone<T_12 extends QueryBase>(this: T_12): T_12;
529
+ clone<T_14 extends QueryBase>(this: T_14): T_14;
514
530
  getFilePath(): string;
515
- setColumns<T_13 extends ColumnsShape>(fn: (t: Record<string, orchid_core.AnyColumnTypeCreator> extends ColumnTypes ? {
531
+ setColumns<T_15 extends ColumnsShape>(fn: (t: Record<string, orchid_core.AnyColumnTypeCreator> extends ColumnTypes ? {
516
532
  timestamps<T extends orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, unknown, unknown, orchid_core.ColumnDataBase>>(this: {
517
533
  name(name: string): {
518
534
  timestamp(): T;
@@ -610,19 +626,19 @@ declare const createBaseTable: <ColumnTypes extends Record<string, orchid_core.A
610
626
  unknown: () => orchid_core.JSONUnknown;
611
627
  boolean: () => orchid_core.JSONBoolean;
612
628
  null: () => orchid_core.JSONNull;
613
- number: () => orchid_core.JSONNumber;
614
- string: () => orchid_core.JSONString;
615
- array: <T_5 extends orchid_core.JSONType<unknown, {}>>(item: T_5) => orchid_core.JSONArray<T_5, "many">;
629
+ number: <T_5 extends number = number>() => orchid_core.JSONNumber<T_5>;
630
+ string: <T_6 extends string = string>() => orchid_core.JSONString<T_6>;
631
+ array: <T_7 extends orchid_core.JSONType<unknown, {}>>(item: T_7) => orchid_core.JSONArray<T_7, "many">;
616
632
  object: <Shape extends orchid_core.JSONObjectShape>(shape: Shape) => orchid_core.JSONObject<Shape, "strip", orchid_core.JSONType<unknown, {}>>;
617
- literal: <T_6 extends orchid_core.JSONPrimitive>(value: T_6) => orchid_core.JSONLiteral<T_6>;
633
+ literal: <T_8 extends orchid_core.JSONPrimitive>(value: T_8) => orchid_core.JSONLiteral<T_8>;
618
634
  discriminatedUnion: <Discriminator extends string, Types extends orchid_core.JSONDiscriminatedUnionArg<Discriminator>>(discriminator: Discriminator, types: Types) => orchid_core.JSONDiscriminatedUnion<Discriminator, Types>;
619
- enum: <U_1 extends string, T_7 extends [U_1, ...U_1[]]>(options: T_7) => orchid_core.JSONEnum<string, T_7>;
635
+ enum: <U_1 extends string, T_9 extends [U_1, ...U_1[]]>(options: T_9) => orchid_core.JSONEnum<string, T_9>;
620
636
  intersection: <Left extends orchid_core.JSONType<unknown, {}>, Right extends orchid_core.JSONType<unknown, {}>>(left: Left, right: Right) => orchid_core.JSONIntersection<Left, Right>;
621
- lazy: <T_8 extends orchid_core.JSONType<unknown, {}>>(fn: () => T_8) => orchid_core.JSONLazy<T_8>;
622
- nativeEnum: <T_9 extends orchid_core.EnumLike>(type: T_9) => orchid_core.JSONNativeEnum<T_9>;
623
- record: <Key extends orchid_core.JSONNumber | orchid_core.JSONString, Value extends orchid_core.JSONType<unknown, {}>>(...args: [value: Value] | [key: Key, value: Value]) => orchid_core.JSONRecord<Key, Value>;
624
- tuple: <T_10 extends orchid_core.JSONTupleItems, Rest extends orchid_core.JSONType<unknown, {}> | undefined = undefined>(items: T_10, rest?: Rest | undefined) => orchid_core.JSONTuple<T_10, Rest>;
625
- union: <T_11 extends orchid_core.JSONUnionArgs>(...types: T_11) => orchid_core.JSONUnion<T_11>;
637
+ lazy: <T_10 extends orchid_core.JSONType<unknown, {}>>(fn: () => T_10) => orchid_core.JSONLazy<T_10>;
638
+ nativeEnum: <T_11 extends orchid_core.EnumLike>(type: T_11) => orchid_core.JSONNativeEnum<T_11>;
639
+ record: <Key extends orchid_core.JSONString<string> | orchid_core.JSONNumber<number>, Value extends orchid_core.JSONType<unknown, {}>>(...args: [value: Value] | [key: Key, value: Value]) => orchid_core.JSONRecord<Key, Value>;
640
+ tuple: <T_12 extends orchid_core.JSONTupleItems, Rest extends orchid_core.JSONType<unknown, {}> | undefined = undefined>(items: T_12, rest?: Rest | undefined) => orchid_core.JSONTuple<T_12, Rest>;
641
+ union: <T_13 extends orchid_core.JSONUnionArgs>(...types: T_13) => orchid_core.JSONUnion<T_13>;
626
642
  }) => Type) | undefined): pqb.JSONColumn<Type>;
627
643
  jsonText(): pqb.JSONTextColumn;
628
644
  array<Item extends pqb.ColumnType<unknown, pqb.BaseOperators, unknown, unknown, unknown>>(item: Item): pqb.ArrayColumn<Item>;
@@ -645,7 +661,7 @@ declare const createBaseTable: <ColumnTypes extends Record<string, orchid_core.A
645
661
  dropMode?: pqb.DropMode | undefined;
646
662
  }) | undefined): {};
647
663
  check(check: orchid_core.RawSQLBase<orchid_core.ColumnTypeBase<unknown, orchid_core.BaseOperators, unknown, unknown, unknown, orchid_core.ColumnDataBase>, {}>): {};
648
- } : ColumnTypes) => T_13): T_13;
664
+ } : ColumnTypes) => T_15): T_15;
649
665
  belongsTo<Self extends any, Related extends TableClass<Table>, Scope extends Query, Options extends BelongsToOptions<Self, Related, Scope>>(this: Self, fn: () => Related, options: Options): {
650
666
  type: "belongsTo";
651
667
  fn: () => Related;