orchid-orm 1.18.0 → 1.18.1

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,6 +1,6 @@
1
- import { Query, QueryWithTable, SetQueryTableAlias, RelationJoinQuery, WhereArg, UpdateData, CreateData, AddQueryDefaults, Db, IsolationLevel, TransactionOptions, Adapter, FromArgs, FromResult, AdapterOptions, QueryLogOptions, NoPrimaryKeyOption, RelationQuery, RelationConfigBase, RelationQueryBase, ComputedColumnsBase, QueryData, QueryBase, DefaultColumnTypes, QueryBeforeHook, QueryAfterHook, AfterHook, WhereResult, MergeQuery, SetQueryReturns, QueryReturnType } from 'pqb';
1
+ import { Query, QueryWithTable, SetQueryTableAlias, RelationJoinQuery, WhereArg, UpdateData, CreateData, AddQueryDefaults, Db, IsolationLevel, TransactionOptions, Adapter, FromArgs, FromResult, AdapterOptions, QueryLogOptions, NoPrimaryKeyOption, RelationQuery, RelationConfigBase, RelationQueryBase, ComputedColumnsBase, QueryData, QueryBase, DbTableOptionScopes, DefaultColumnTypes, QueryBeforeHook, QueryAfterHook, AfterHook, WhereResult, MergeQuery, SetQueryReturns, QueryReturnType } from 'pqb';
2
2
  export * from 'pqb';
3
- import { EmptyObject, MaybeArray, StringKey, ColumnsShapeBase, ColumnShapeQueryType, ColumnShapeOutput, ColumnShapeInput } from 'orchid-core';
3
+ import { ColumnsShapeBase, EmptyObject, MaybeArray, StringKey, CoreQueryScopes, ColumnShapeQueryType, ColumnShapeOutput, ColumnShapeInput } from 'orchid-core';
4
4
 
5
5
  type RelationCommonOptions<Related extends TableClass = TableClass, Scope extends Query = Query> = {
6
6
  scope?: ScopeFn<Related, Scope>;
@@ -25,7 +25,7 @@ type BelongsTo = RelationThunkBase & {
25
25
  type: 'belongsTo';
26
26
  options: BelongsToOptions;
27
27
  };
28
- 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']>;
28
+ type BelongsToOptions<Columns extends ColumnsShapeBase = ColumnsShapeBase, Related extends TableClass = TableClass, Scope extends Query = Query> = RelationCommonOptions<Related, Scope> & RelationRefsOrKeysOptions<keyof Columns, keyof InstanceType<Related>['columns'], keyof InstanceType<Related>['columns'], keyof Columns>;
29
29
  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<{
30
30
  nestedCreateQuery: Q;
31
31
  table: Q;
@@ -76,7 +76,7 @@ type HasMany = RelationThunkBase & {
76
76
  type: 'hasMany';
77
77
  options: HasManyOptions;
78
78
  };
79
- type HasManyOptions<Self extends Table = Table, Related extends TableClass = TableClass, Scope extends Query = Query, Through extends string = string, Source extends string = string> = HasOneOptions<Self, Related, Scope, Through, Source>;
79
+ type HasManyOptions<Columns extends ColumnsShapeBase = ColumnsShapeBase, Related extends TableClass = TableClass, Scope extends Query = Query, Through extends string = string, Source extends string = string> = HasOneOptions<Columns, Related, Scope, Through, Source>;
80
80
  type HasManyInfo<T extends Table, Relations extends RelationThunks, Relation extends HasMany, K extends string, Populate extends Record<string, true> = Relation['options'] extends RelationRefsOptions ? Record<Relation['options']['references'][number], true> : Relation['options'] extends RelationKeysOptions ? Record<Relation['options']['foreignKey'], true> : never, TC extends TableClass = ReturnType<Relation['fn']>, Q extends QueryWithTable = SetQueryTableAlias<DbTable<TC>, K>, NestedCreateQuery extends Query = Relation['options'] extends RelationThroughOptions ? Q : AddQueryDefaults<Q, Populate>> = {
81
81
  table: Q;
82
82
  query: Q;
@@ -114,7 +114,7 @@ type HasOne = RelationThunkBase & {
114
114
  type: 'hasOne';
115
115
  options: HasOneOptions;
116
116
  };
117
- type HasOneOptions<Self extends Table = Table, Related extends TableClass = TableClass, Scope extends Query = Query, Through extends string = string, Source extends string = string> = RelationCommonOptions<Related, Scope> & (RelationHasOptions<keyof Self['columns'], keyof InstanceType<Related>['columns']> | RelationThroughOptions<Through, Source>);
117
+ type HasOneOptions<Columns extends ColumnsShapeBase = ColumnsShapeBase, Related extends TableClass = TableClass, Scope extends Query = Query, Through extends string = string, Source extends string = string> = RelationCommonOptions<Related, Scope> & (RelationHasOptions<keyof Columns, keyof InstanceType<Related>['columns']> | RelationThroughOptions<Through, Source>);
118
118
  type HasOneInfo<T extends Table, Relations extends RelationThunks, Relation extends HasOne, K extends string, Populate extends Record<string, true> = Relation['options'] extends RelationRefsOptions ? Record<Relation['options']['references'][number], true> : Relation['options'] extends RelationKeysOptions ? Record<Relation['options']['foreignKey'], true> : never, TC extends TableClass = ReturnType<Relation['fn']>, Q extends QueryWithTable = SetQueryTableAlias<DbTable<TC>, K>, NestedCreateQuery extends Query = Relation['options'] extends RelationThroughOptions ? Q : AddQueryDefaults<Q, Populate>> = {
119
119
  table: Q;
120
120
  query: Q;
@@ -239,8 +239,8 @@ type HasAndBelongsToMany = RelationThunkBase & {
239
239
  type: 'hasAndBelongsToMany';
240
240
  options: HasAndBelongsToManyOptions;
241
241
  };
242
- type HasAndBelongsToManyOptions<Self extends Table = Table, Related extends TableClass = TableClass, Scope extends Query = Query> = RelationCommonOptions<Related, Scope> & ({
243
- columns: (keyof Self['columns'])[];
242
+ type HasAndBelongsToManyOptions<Columns extends ColumnsShapeBase = ColumnsShapeBase, Related extends TableClass = TableClass, Scope extends Query = Query> = RelationCommonOptions<Related, Scope> & ({
243
+ columns: (keyof Columns)[];
244
244
  references: string[];
245
245
  through: {
246
246
  table: string;
@@ -248,7 +248,7 @@ type HasAndBelongsToManyOptions<Self extends Table = Table, Related extends Tabl
248
248
  references: (keyof InstanceType<Related>['columns'])[];
249
249
  };
250
250
  } | {
251
- primaryKey: keyof Self['columns'];
251
+ primaryKey: keyof Columns;
252
252
  foreignKey: string;
253
253
  joinTable: string;
254
254
  associationPrimaryKey: string;
@@ -344,7 +344,7 @@ type TableClass<T extends Table = Table> = {
344
344
  type TableClasses = Record<string, TableClass>;
345
345
  type TableToDb<T extends Table, RelationQueries extends Record<string, RelationQueryBase>> = Db<T['table'], T['columns'], RelationQueries, T['types'], T['computed'] extends ComputedColumnsBase<never> ? T['columns'] & {
346
346
  [K in keyof T['computed']]: ReturnType<T['computed'][K]>['_type'];
347
- } : T['columns']> & {
347
+ } : T['columns'], T['scopes']> & {
348
348
  definedAs: string;
349
349
  db: OrchidORM;
350
350
  getFilePath(): string;
@@ -364,6 +364,7 @@ type Table = {
364
364
  * collect computed columns returned by {@link BaseTable.setColumns}
365
365
  */
366
366
  computed?: ComputedColumnsBase<never>;
367
+ scopes?: CoreQueryScopes;
367
368
  };
368
369
  type Queryable<T extends Table> = Partial<ColumnShapeQueryType<T['columns']>>;
369
370
  type Selectable<T extends Table> = ColumnShapeOutput<T['columns']>;
@@ -478,22 +479,37 @@ interface BaseTableInstance<ColumnTypes> {
478
479
  * @param computed - object where keys are column names and values are functions returning raw SQL
479
480
  */
480
481
  setComputed<Table extends string, Shape extends ColumnsShapeBase, Computed extends ComputedColumnsBase<Db<Table, Shape, EmptyObject, ColumnTypes>>>(computed: Computed): Computed;
481
- belongsTo<Self extends Table, Related extends TableClass, Scope extends Query, Options extends BelongsToOptions<Self, Related, Scope>>(this: Self, fn: () => Related, options: Options): {
482
+ /**
483
+ * See {@link ScopeMethods}
484
+ */
485
+ setScopes<Table extends string, Columns extends ColumnsShapeBase, Keys extends string>(this: {
486
+ table: Table;
487
+ columns: Columns;
488
+ }, scopes: DbTableOptionScopes<Table, Columns, Keys>): CoreQueryScopes<Keys>;
489
+ belongsTo<Columns extends ColumnsShapeBase, Related extends TableClass, Scope extends Query, Options extends BelongsToOptions<Columns, Related, Scope>>(this: {
490
+ columns: Columns;
491
+ }, fn: () => Related, options: Options): {
482
492
  type: 'belongsTo';
483
493
  fn: () => Related;
484
494
  options: Options;
485
495
  };
486
- hasOne<Self extends Table, Related extends TableClass, Scope extends Query, Through extends string, Source extends string, Options extends HasOneOptions<Self, Related, Scope, Through, Source>>(this: Self, fn: () => Related, options: Options): {
496
+ hasOne<Columns extends ColumnsShapeBase, Related extends TableClass, Scope extends Query, Through extends string, Source extends string, Options extends HasOneOptions<Columns, Related, Scope, Through, Source>>(this: {
497
+ columns: Columns;
498
+ }, fn: () => Related, options: Options): {
487
499
  type: 'hasOne';
488
500
  fn: () => Related;
489
501
  options: Options;
490
502
  };
491
- hasMany<Self extends Table, Related extends TableClass, Scope extends Query, Through extends string, Source extends string, Options extends HasManyOptions<Self, Related, Scope, Through, Source>>(this: Self, fn: () => Related, options: Options): {
503
+ hasMany<Columns extends ColumnsShapeBase, Related extends TableClass, Scope extends Query, Through extends string, Source extends string, Options extends HasManyOptions<Columns, Related, Scope, Through, Source>>(this: {
504
+ columns: Columns;
505
+ }, fn: () => Related, options: Options): {
492
506
  type: 'hasMany';
493
507
  fn: () => Related;
494
508
  options: Options;
495
509
  };
496
- hasAndBelongsToMany<Self extends Table, Related extends TableClass, Scope extends Query, Options extends HasAndBelongsToManyOptions<Self, Related, Scope>>(this: Self, fn: () => Related, options: Options): {
510
+ hasAndBelongsToMany<Columns extends ColumnsShapeBase, Related extends TableClass, Scope extends Query, Options extends HasAndBelongsToManyOptions<Columns, Related, Scope>>(this: {
511
+ columns: Columns;
512
+ }, fn: () => Related, options: Options): {
497
513
  type: 'hasAndBelongsToMany';
498
514
  fn: () => Related;
499
515
  options: Options;
package/dist/index.js CHANGED
@@ -82,6 +82,9 @@ function createBaseTable({
82
82
  setComputed(computed) {
83
83
  return computed;
84
84
  }
85
+ setScopes(scopes) {
86
+ return scopes;
87
+ }
85
88
  belongsTo(fn, options) {
86
89
  return {
87
90
  type: "belongsTo",
@@ -1756,7 +1759,8 @@ const orchidORM = (_a, tables) => {
1756
1759
  tableInstances[key] = table;
1757
1760
  const options2 = __spreadProps(__spreadValues$1({}, commonOptions), {
1758
1761
  schema: table.schema,
1759
- language: table.language
1762
+ language: table.language,
1763
+ scopes: table.scopes
1760
1764
  });
1761
1765
  if (table.noPrimaryKey)
1762
1766
  options2.noPrimaryKey = "ignore";