pqb 0.30.5 → 0.30.7
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 +112 -31
- package/dist/index.js +222 -66
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +223 -67
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as orchid_core from 'orchid-core';
|
|
2
|
-
import { QueryResultRow, AdapterConfigBase, AdapterBase, QueryInput, Sql, RecordUnknown, RecordKeyTrue, EmptyObject, QueryBaseCommon, QueryColumns, QueryMetaBase, QueryReturnType, QueryThen, Expression, QueryColumn, MaybeArray, SelectableBase, TemplateLiteralArgs, PickOutputTypeAndOperators, PickQueryResult, OperatorToSQL, ColumnsShapeBase, ColumnsParsers, RecordString, PickQueryTable, FnUnknownToUnknown, ExpressionChain, getValueKey, PickQueryShape, PickQueryTableMetaResult, EmptyTuple, PickQueryMeta, PickQueryMetaResultReturnType, QueryColumnToNullable, PickQueryMetaShape, PickQueryTableMetaResultShape, PickQueryMetaResultWindows, QueryColumnBooleanOrNull, ExpressionData, ValExpression, PickOutputType, SQLQueryArgs, ColumnSchemaConfig, DateColumnData, Code, TimeInterval, ColumnTypeSchemaArg, ColumnDataBase, ArrayMethodsData, RawSQLBase, RawSQLValues, ExpressionTypeMethod, DynamicSQLArg, StaticSQLArgs, ForeignKeyTable, ColumnNameOfTable, BaseNumberData, PickColumnBaseData, ColumnWithDefault, StringTypeData, PrimaryKeyColumn, ParseColumn, EncodeColumn, PickQueryMetaResult, QueryColumnsInit, DefaultSelectColumns, CoreQueryScopes, DbBase, QueryCatch, TransactionState, ColumnTypeBase, CoreBaseOperators, PickQueryUniqueProperties, IsQuery, PickQueryMetaShapeResultReturnType, MergeObjects, PickQueryResultUniqueColumns, QueryInternalBase, PickQueryReturnType, PickType, ColumnShapeOutput, PickQueryMetaReturnType, UniqueColumn, TimestampHelpers, Codes, ColumnDataCheckBase, PickQueryTableMetaShape } from 'orchid-core';
|
|
2
|
+
import { QueryResultRow, AdapterConfigBase, AdapterBase, QueryInput, Sql, RecordUnknown, RecordKeyTrue, EmptyObject, QueryBaseCommon, QueryColumns, QueryMetaBase, QueryReturnType, QueryThen, Expression, QueryColumn, MaybeArray, SelectableBase, TemplateLiteralArgs, PickOutputTypeAndOperators, PickQueryResult, OperatorToSQL, ColumnsShapeBase, ColumnsParsers, RecordString, PickQueryTable, FnUnknownToUnknown, ExpressionChain, getValueKey, PickQueryShape, PickQueryTableMetaResult, EmptyTuple, PickQueryMeta, PickQueryMetaResultReturnType, QueryColumnToNullable, PickQueryMetaShape, PickQueryTableMetaResultShape, PickQueryMetaResultWindows, QueryColumnBooleanOrNull, ExpressionData, ValExpression, PickOutputType, SQLQueryArgs, ColumnSchemaConfig, DateColumnData, Code, TimeInterval, ColumnTypeSchemaArg, ColumnDataBase, ArrayMethodsData, RawSQLBase, RawSQLValues, ExpressionTypeMethod, DynamicSQLArg, StaticSQLArgs, ForeignKeyTable, ColumnNameOfTable, BaseNumberData, PickColumnBaseData, ColumnWithDefault, StringTypeData, PrimaryKeyColumn, ParseColumn, EncodeColumn, PickQueryMetaResult, QueryColumnsInit, DefaultSelectColumns, CoreQueryScopes, DbBase, QueryCatch, TransactionState, ColumnTypeBase, CoreBaseOperators, PickQueryUniqueProperties, IsQuery, PickQueryMetaShapeResultReturnType, MergeObjects, PickQueryResultUniqueColumns, QueryInternalBase, PickQueryReturnType, PickType, ColumnShapeOutput, OperatorsNullable, PickQueryMetaReturnType, UniqueColumn, TimestampHelpers, Codes, ColumnDataCheckBase, PickQueryTableMetaShape } from 'orchid-core';
|
|
3
3
|
import { PoolConfig, Pool, PoolClient } from 'pg';
|
|
4
4
|
import { inspect } from 'node:util';
|
|
5
5
|
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
@@ -615,7 +615,7 @@ type JoinFirstArg<T extends PickQueryRelationsWithData> = PickQueryTableMetaResu
|
|
|
615
615
|
* Arguments of `join` methods (not `joinLateral`).
|
|
616
616
|
* See {@link join}
|
|
617
617
|
*/
|
|
618
|
-
type JoinArgs<T extends PickQueryMetaShapeRelationsWithData, Arg extends JoinFirstArg<T>> = [JoinCallback<T, Arg>] | (Arg extends PickQueryTableMetaResult ? JoinQueryArgs<T, Arg> : Arg extends keyof T['relations'] ? EmptyTuple : Arg extends keyof T['withData'] ? JoinWithArgs<T, Arg> : never);
|
|
618
|
+
type JoinArgs<T extends PickQueryMetaShapeRelationsWithData, Arg extends JoinFirstArg<T>> = [on?: JoinCallback<T, Arg>] | (Arg extends PickQueryTableMetaResult ? JoinQueryArgs<T, Arg> : Arg extends keyof T['relations'] ? EmptyTuple : Arg extends keyof T['withData'] ? JoinWithArgs<T, Arg> : never);
|
|
619
619
|
/**
|
|
620
620
|
* Column names of the joined table that can be used to join.
|
|
621
621
|
* Derived from 'result', not from 'shape',
|
|
@@ -1382,7 +1382,7 @@ declare const _queryJoinOnJsonPathEquals: <T extends PickQueryMeta>(q: T, args:
|
|
|
1382
1382
|
*/
|
|
1383
1383
|
type JoinQueryBuilder<T extends PickQueryMetaShape = PickQueryMetaShape, J extends PickQueryTableMetaResult = PickQueryTableMetaResult> = {
|
|
1384
1384
|
[K in keyof J]: K extends 'meta' ? {
|
|
1385
|
-
[K in keyof J['meta']]: K extends 'selectable' ? J['
|
|
1385
|
+
[K in keyof J['meta']]: K extends 'selectable' ? SelectableFromShape<J['result'], AliasOrTable<J>> & Omit<T['meta']['selectable'], keyof T['shape']> : J['meta'][K];
|
|
1386
1386
|
} : J[K];
|
|
1387
1387
|
} & OnMethods;
|
|
1388
1388
|
declare class OnMethods {
|
|
@@ -2155,6 +2155,15 @@ declare class Where {
|
|
|
2155
2155
|
* ```ts
|
|
2156
2156
|
* db.table.whereIn(['id', 'name'], sql`((1, 'one'), (2, 'two'))`);
|
|
2157
2157
|
* ```
|
|
2158
|
+
*
|
|
2159
|
+
* When empty set of values is given, `whereIn` will resolve into a {@link QueryMethods.none} query that has a special behavior.
|
|
2160
|
+
*
|
|
2161
|
+
* ```ts
|
|
2162
|
+
* // following queries resolves into `none`:
|
|
2163
|
+
* db.table.where('id', [])
|
|
2164
|
+
* db.table.where(['id', 'name'], [])
|
|
2165
|
+
* db.table.where({ id: [] })
|
|
2166
|
+
* ```
|
|
2158
2167
|
*/
|
|
2159
2168
|
whereIn<T extends PickQueryMetaRelations, Column extends WhereInColumn<T>>(this: T, ...args: [column: Column, values: WhereInValues<T, Column>] | [arg: WhereInArg<T>]): WhereResult<T>;
|
|
2160
2169
|
/**
|
|
@@ -3789,19 +3798,16 @@ interface CreateSelf extends QueryBase {
|
|
|
3789
3798
|
}
|
|
3790
3799
|
type CreateData<T extends CreateSelf, BelongsToData = CreateBelongsToData<T>> = RelationsBase extends T['relations'] ? CreateDataWithDefaults<T, keyof T['meta']['defaults']> : CreateRelationsData<T, BelongsToData>;
|
|
3791
3800
|
type CreateDataWithDefaults<T extends CreateSelf, Defaults extends PropertyKey> = {
|
|
3792
|
-
[K in keyof T['inputType'] as K extends Defaults ? never : K]: K extends Defaults ? never : CreateColumn<T
|
|
3801
|
+
[K in keyof T['inputType'] as K extends Defaults ? never : K]: K extends Defaults ? never : CreateColumn<T, K>;
|
|
3793
3802
|
} & {
|
|
3794
|
-
[K in Defaults]?: K extends keyof T['inputType'] ? CreateColumn<T
|
|
3803
|
+
[K in Defaults]?: K extends keyof T['inputType'] ? CreateColumn<T, K> : never;
|
|
3795
3804
|
};
|
|
3796
3805
|
type CreateDataWithDefaultsForRelations<T extends CreateSelf, Defaults extends keyof T['inputType'], OmitFKeys extends PropertyKey> = {
|
|
3797
|
-
[K in keyof T['inputType'] as K extends Defaults | OmitFKeys ? never : K]: K extends Defaults | OmitFKeys ? never : CreateColumn<T
|
|
3806
|
+
[K in keyof T['inputType'] as K extends Defaults | OmitFKeys ? never : K]: K extends Defaults | OmitFKeys ? never : CreateColumn<T, K>;
|
|
3798
3807
|
} & {
|
|
3799
|
-
[K in Defaults as K extends OmitFKeys ? never : K]?: CreateColumn<T
|
|
3800
|
-
};
|
|
3801
|
-
type CreateColumn<InputType, Key extends keyof InputType> = Expression | InputType[Key] | {
|
|
3802
|
-
__isQuery: true;
|
|
3803
|
-
then: QueryThen<InputType[Key]>;
|
|
3808
|
+
[K in Defaults as K extends OmitFKeys ? never : K]?: CreateColumn<T, K>;
|
|
3804
3809
|
};
|
|
3810
|
+
type CreateColumn<T extends CreateSelf, K extends keyof T['inputType']> = T['inputType'][K] | QueryOrExpression<T['inputType'][K]> | ((q: T) => QueryOrExpression<T['inputType'][K]>);
|
|
3805
3811
|
type CreateRelationsData<T extends CreateSelf, BelongsToData> = CreateDataWithDefaultsForRelations<T, keyof T['meta']['defaults'], T['relations'][keyof T['relations']]['relationConfig']['omitForeignKeyInCreate']> & BelongsToData & T['relations'][keyof T['relations']]['relationConfig']['optionalDataForCreate'];
|
|
3806
3812
|
type CreateBelongsToData<T extends CreateSelf> = CreateRelationsDataOmittingFKeys<T, T['relations'][keyof T['relations']]['relationConfig']['dataForCreate']>;
|
|
3807
3813
|
type CreateRelationsDataOmittingFKeys<T extends CreateSelf, Union> = (Union extends RelationConfigDataForCreate ? (u: keyof Union['columns'] extends keyof T['meta']['defaults'] ? Omit<Union['columns'], keyof T['meta']['defaults']> & {
|
|
@@ -3909,7 +3915,7 @@ declare class Create {
|
|
|
3909
3915
|
*
|
|
3910
3916
|
* await db.table.create({
|
|
3911
3917
|
* // raw SQL
|
|
3912
|
-
* column1: sql`'John' || ' ' || 'Doe'`,
|
|
3918
|
+
* column1: (q) => q.sql`'John' || ' ' || 'Doe'`,
|
|
3913
3919
|
*
|
|
3914
3920
|
* // query that returns a single value
|
|
3915
3921
|
* // returning multiple values will result in Postgres error
|
|
@@ -4124,6 +4130,7 @@ declare class Create {
|
|
|
4124
4130
|
* db.table.create(data).onConflictDoNothing();
|
|
4125
4131
|
*
|
|
4126
4132
|
* // single column:
|
|
4133
|
+
* // (this requires a composite primary key or unique index, see below)
|
|
4127
4134
|
* db.table.create(data).onConfict('email').merge();
|
|
4128
4135
|
*
|
|
4129
4136
|
* // array of columns:
|
|
@@ -4139,6 +4146,34 @@ declare class Create {
|
|
|
4139
4146
|
* .merge();
|
|
4140
4147
|
* ```
|
|
4141
4148
|
*
|
|
4149
|
+
* :::info
|
|
4150
|
+
* A primary key or a unique index for a **single** column can be fined on a column:
|
|
4151
|
+
*
|
|
4152
|
+
* ```ts
|
|
4153
|
+
* export class MyTable extends BaseTable {
|
|
4154
|
+
* columns = this.setColumns((t) => ({
|
|
4155
|
+
* pkey: t.uuid().primaryKey(),
|
|
4156
|
+
* unique: t.string().unique(),
|
|
4157
|
+
* }));
|
|
4158
|
+
* }
|
|
4159
|
+
* ```
|
|
4160
|
+
*
|
|
4161
|
+
* But for composite primary keys or indexes (having multiple columns), define it in a separate function:
|
|
4162
|
+
*
|
|
4163
|
+
* ```ts
|
|
4164
|
+
* export class MyTable extends BaseTable {
|
|
4165
|
+
* columns = this.setColumns(
|
|
4166
|
+
* (t) => ({
|
|
4167
|
+
* one: t.integer(),
|
|
4168
|
+
* two: t.string(),
|
|
4169
|
+
* three: t.boolean(),
|
|
4170
|
+
* }),
|
|
4171
|
+
* (t) => [t.primaryKey(['one', 'two']), t.unique(['two', 'three'])],
|
|
4172
|
+
* );
|
|
4173
|
+
* }
|
|
4174
|
+
* ```
|
|
4175
|
+
* :::
|
|
4176
|
+
*
|
|
4142
4177
|
* You can use the `sql` function exported from your `BaseTable` file in onConflict.
|
|
4143
4178
|
* It can be useful to specify a condition when you have a partial index:
|
|
4144
4179
|
*
|
|
@@ -4963,10 +4998,10 @@ type SelectAsSelectable<Arg> = {
|
|
|
4963
4998
|
} : never;
|
|
4964
4999
|
}[keyof Arg];
|
|
4965
5000
|
type SelectAsValueResult<T extends SelectSelf, Arg> = Arg extends keyof T['meta']['selectable'] ? T['meta']['selectable'][Arg]['column'] : Arg extends Expression ? Arg['result']['value'] : Arg extends (q: never) => QueryBase ? SelectSubQueryResult<ReturnType<Arg>> : Arg extends (q: never) => Expression ? ReturnType<Arg>['result']['value'] : Arg extends (q: never) => QueryBase | Expression ? SelectSubQueryResult<Exclude<ReturnType<Arg>, Expression>> | Exclude<ReturnType<Arg>, QueryBase>['result']['value'] : never;
|
|
4966
|
-
type SelectSubQueryResult<Arg extends SelectSelf> = QueryReturnsAll<Arg['returnType']> extends true ? ColumnsShapeToObjectArray<Arg['result']> : Arg['returnType'] extends 'valueOrThrow' ? Arg['result']['value'] : Arg['returnType'] extends 'pluck' ? ColumnsShapeToPluck<Arg['result']> : Arg['returnType'] extends 'one' ? ColumnsShapeToNullableObject<Arg['result']> : ColumnsShapeToObject<Arg['result']>;
|
|
5001
|
+
type SelectSubQueryResult<Arg extends SelectSelf> = QueryReturnsAll<Arg['returnType']> extends true ? ColumnsShapeToObjectArray<Arg['result']> : Arg['returnType'] extends 'value' | 'valueOrThrow' ? Arg['result']['value'] : Arg['returnType'] extends 'pluck' ? ColumnsShapeToPluck<Arg['result']> : Arg['returnType'] extends 'one' ? ColumnsShapeToNullableObject<Arg['result']> : ColumnsShapeToObject<Arg['result']>;
|
|
4967
5002
|
declare const addParserForRawExpression: (q: PickQueryQ, key: string | getValueKey, raw: Expression) => void;
|
|
4968
5003
|
declare const addParserForSelectItem: <T extends PickQueryMeta>(q: T, as: string | getValueKey | undefined, key: string, arg: SelectableOrExpression<T> | Query) => string | Expression | Query;
|
|
4969
|
-
declare const processSelectArg: <T extends SelectSelf>(q: T, as: string | undefined, arg: SelectArg<T>, columnAs?: string | getValueKey) => SelectItem;
|
|
5004
|
+
declare const processSelectArg: <T extends SelectSelf>(q: T, as: string | undefined, arg: SelectArg<T>, columnAs?: string | getValueKey) => SelectItem | undefined;
|
|
4970
5005
|
declare const setParserForSelectedString: (q: PickQueryQ, arg: string, as: string | getValueKey | undefined, columnAs?: string | getValueKey) => string;
|
|
4971
5006
|
declare const getShapeFromSelect: (q: QueryBase, isSubQuery?: boolean) => QueryColumns;
|
|
4972
5007
|
declare function _querySelect<T extends SelectSelf, Columns extends SelectArg<T>[]>(q: T, columns: Columns): SelectResult<T, Columns>;
|
|
@@ -5199,26 +5234,24 @@ declare class Union {
|
|
|
5199
5234
|
}
|
|
5200
5235
|
|
|
5201
5236
|
type UpdateSelf = {
|
|
5202
|
-
[K in '
|
|
5237
|
+
[K in 'inputType' | 'relations' | UpdateColumnArgKeys]: Query[K];
|
|
5203
5238
|
};
|
|
5204
5239
|
type UpdateData<T extends UpdateSelf> = {
|
|
5205
5240
|
[K in keyof T['inputType']]?: UpdateColumn<T, K>;
|
|
5206
5241
|
} & {
|
|
5207
5242
|
[K in keyof T['relations']]?: UpdateRelationData<T, T['relations'][K]['relationConfig']>;
|
|
5208
5243
|
};
|
|
5209
|
-
type UpdateColumnArgKeys = keyof JsonModifiers | 'meta' | 'shape' | 'result' | 'returnType';
|
|
5210
|
-
|
|
5211
|
-
|
|
5212
|
-
|
|
5213
|
-
}
|
|
5214
|
-
interface ResultRelationQueryBase extends RelationQueryBase {
|
|
5215
|
-
meta: ResultRelationQueryBaseMeta;
|
|
5244
|
+
type UpdateColumnArgKeys = keyof JsonModifiers | keyof ExpressionMethods | 'sql' | 'meta' | 'shape' | 'result' | 'returnType' | 'columnTypes';
|
|
5245
|
+
interface UpdateQueryOrExpression<T> extends QueryOrExpression<T> {
|
|
5246
|
+
meta: {
|
|
5247
|
+
kind: 'select';
|
|
5248
|
+
};
|
|
5216
5249
|
}
|
|
5217
|
-
type UpdateColumn<T extends UpdateSelf, Key extends keyof T['inputType']> = T['inputType'][Key] |
|
|
5250
|
+
type UpdateColumn<T extends UpdateSelf, Key extends keyof T['inputType']> = T['inputType'][Key] | QueryOrExpression<T['inputType'][Key]> | {
|
|
5218
5251
|
[K in keyof Query]: K extends 'then' ? QueryThen<T['inputType'][Key]> : Query[K];
|
|
5219
5252
|
} | ((q: {
|
|
5220
5253
|
[K in keyof T['relations'] | UpdateColumnArgKeys]: K extends keyof T['relations'] ? T['relations'][K] : K extends UpdateColumnArgKeys ? T[K] : never;
|
|
5221
|
-
}) =>
|
|
5254
|
+
}) => JsonItem | UpdateQueryOrExpression<T['inputType'][Key]>);
|
|
5222
5255
|
type UpdateRelationData<T extends UpdateSelf, Rel extends RelationConfigBase> = QueryReturnsAll<T['returnType']> extends true ? Rel['dataForUpdate'] : Rel['one'] extends true ? Rel['dataForUpdate'] | Rel['dataForUpdateOne'] : Rel['dataForUpdate'] & Rel['dataForUpdateOne'];
|
|
5223
5256
|
type UpdateArg<T extends UpdateSelf> = T['meta']['hasWhere'] extends true ? UpdateData<T> : never;
|
|
5224
5257
|
type UpdateRawArgs<T extends UpdateSelf> = T['meta']['hasWhere'] extends true ? SQLQueryArgs : never;
|
|
@@ -5292,7 +5325,7 @@ declare class Update {
|
|
|
5292
5325
|
* column1: 123,
|
|
5293
5326
|
*
|
|
5294
5327
|
* // use raw SQL to update the column
|
|
5295
|
-
* column2: sql`2 + 2`,
|
|
5328
|
+
* column2: (q) => q.sql`2 + 2`,
|
|
5296
5329
|
*
|
|
5297
5330
|
* // use query that returns a single value
|
|
5298
5331
|
* // returning multiple values will result in Postgres error
|
|
@@ -5401,7 +5434,7 @@ declare class Update {
|
|
|
5401
5434
|
*/
|
|
5402
5435
|
update<T extends UpdateSelf>(this: T, arg: UpdateArg<T>): UpdateResult<T>;
|
|
5403
5436
|
/**
|
|
5404
|
-
* `
|
|
5437
|
+
* `updateSql` is for updating records with raw expression.
|
|
5405
5438
|
*
|
|
5406
5439
|
* The behavior is the same as a regular `update` method has:
|
|
5407
5440
|
* `find` or `where` must precede calling this method,
|
|
@@ -5412,14 +5445,14 @@ declare class Update {
|
|
|
5412
5445
|
* const value = 'new name';
|
|
5413
5446
|
*
|
|
5414
5447
|
* // update with SQL template string
|
|
5415
|
-
* const updatedCount = await db.table.find(1).
|
|
5448
|
+
* const updatedCount = await db.table.find(1).updateSql`name = ${value}`;
|
|
5416
5449
|
*
|
|
5417
5450
|
* // or update with `sql` function:
|
|
5418
|
-
* await db.table.find(1).
|
|
5451
|
+
* await db.table.find(1).updateSql(sql`name = ${value}`);
|
|
5419
5452
|
* ```
|
|
5420
5453
|
* @param args - raw SQL via a template string or by using a `sql` method
|
|
5421
5454
|
*/
|
|
5422
|
-
|
|
5455
|
+
updateSql<T extends UpdateSelf>(this: T, ...args: UpdateRawArgs<T>): UpdateResult<T>;
|
|
5423
5456
|
/**
|
|
5424
5457
|
* To make sure that at least one row was updated use `updateOrThrow`:
|
|
5425
5458
|
*
|
|
@@ -6620,6 +6653,52 @@ declare class QueryMethods<ColumnTypes> {
|
|
|
6620
6653
|
* await db.table.all().update(data); // -> 0
|
|
6621
6654
|
* await db.table.all().delete(); // -> 0
|
|
6622
6655
|
* ```
|
|
6656
|
+
*
|
|
6657
|
+
* When it's being used in sub-selects, it will return empty arrays, `undefined`'s, or `0` for count,
|
|
6658
|
+
* or it will throw if the sub-query require a result:
|
|
6659
|
+
*
|
|
6660
|
+
* ```ts
|
|
6661
|
+
* await db.user.select({
|
|
6662
|
+
* // returns empty array
|
|
6663
|
+
* pets: (q) => q.pets.none(),
|
|
6664
|
+
* // returns `undefined`
|
|
6665
|
+
* firstPet: (q) => q.pets.none().takeOptional(),
|
|
6666
|
+
* // throws NotFound error
|
|
6667
|
+
* requriedFirstPet: (q) => q.pets.none().take(),
|
|
6668
|
+
* // returns `undefined`
|
|
6669
|
+
* firstPetName: (q) => q.pets.none().getOptional('name'),
|
|
6670
|
+
* // throws NotFound error
|
|
6671
|
+
* requiredFirstPetName: (q) => q.pets.none().get('name'),
|
|
6672
|
+
* // returns empty array
|
|
6673
|
+
* petsNames: (q) => q.pets.none().pluck('name'),
|
|
6674
|
+
* // returns 0
|
|
6675
|
+
* petsCount: (q) => q.pets.none().count(),
|
|
6676
|
+
* });
|
|
6677
|
+
* ```
|
|
6678
|
+
*
|
|
6679
|
+
* When the `none` query is being used for joins that require match, the host query will return an empty result:
|
|
6680
|
+
*
|
|
6681
|
+
* ```ts
|
|
6682
|
+
* // all the following queries will resolve into empty arrays
|
|
6683
|
+
*
|
|
6684
|
+
* await db.user.select({
|
|
6685
|
+
* pets: (q) => q.pets.join().none(),
|
|
6686
|
+
* });
|
|
6687
|
+
*
|
|
6688
|
+
* await db.user.join((q) => q.pets.none());
|
|
6689
|
+
*
|
|
6690
|
+
* await db.user.join('pets', (q) => q.none());
|
|
6691
|
+
* ```
|
|
6692
|
+
*
|
|
6693
|
+
* When it's being used in `leftJoin` or `fullJoin`, it implicitly adds `ON false` into the join's SQL.
|
|
6694
|
+
*
|
|
6695
|
+
* ```ts
|
|
6696
|
+
* // this query can return user records
|
|
6697
|
+
* await db.user.leftJoin('pets', (q) => q.none());
|
|
6698
|
+
*
|
|
6699
|
+
* // this query won't return user records, because of the added where condition
|
|
6700
|
+
* await db.user.leftJoin('pets', (q) => q.none()).where({ 'pets.name': 'Kitty' });
|
|
6701
|
+
* ```
|
|
6623
6702
|
*/
|
|
6624
6703
|
none<T>(this: T): T;
|
|
6625
6704
|
/**
|
|
@@ -6967,7 +7046,9 @@ type SetQueryReturnsPluckColumnKindResult<T extends PickQueryMetaResult, Kind ex
|
|
|
6967
7046
|
} : K extends 'returnType' ? 'pluck' : K extends 'result' ? Result : K extends 'then' ? QueryThen<T['result']['value']['outputType'][]> : T[K];
|
|
6968
7047
|
} & QueryMetaHasSelect;
|
|
6969
7048
|
type SetQueryReturnsValueOrThrow<T extends PickQueryMeta, Arg extends GetStringArg<T>> = SetQueryReturnsColumnOrThrow<T, T['meta']['selectable'][Arg]['column']> & T['meta']['selectable'][Arg]['column']['operators'];
|
|
6970
|
-
type SetQueryReturnsValueOptional<T extends PickQueryMeta, Arg extends GetStringArg<T>> = SetQueryReturnsColumnOptional<T,
|
|
7049
|
+
type SetQueryReturnsValueOptional<T extends PickQueryMeta, Arg extends GetStringArg<T>> = SetQueryReturnsColumnOptional<T, {
|
|
7050
|
+
[K in keyof T['meta']['selectable'][Arg]['column']]: K extends 'outputType' ? T['meta']['selectable'][Arg]['column'][K] | undefined : T['meta']['selectable'][Arg]['column'][K];
|
|
7051
|
+
}> & Omit<T['meta']['selectable'][Arg]['column']['operators'], 'equals' | 'not'> & OperatorsNullable<T['meta']['selectable'][Arg]['column']>;
|
|
6971
7052
|
type SetQueryReturnsColumnOrThrow<T, Column extends PickOutputType> = {
|
|
6972
7053
|
[K in keyof T]: K extends 'result' ? {
|
|
6973
7054
|
value: Column;
|
|
@@ -7444,7 +7525,7 @@ interface ColumnsShapeToObject<Shape extends QueryColumns> {
|
|
|
7444
7525
|
interface ColumnsShapeToNullableObject<Shape extends QueryColumns> {
|
|
7445
7526
|
dataType: 'object';
|
|
7446
7527
|
type: ObjectType<Shape>;
|
|
7447
|
-
outputType: ObjectOutput<Shape> |
|
|
7528
|
+
outputType: ObjectOutput<Shape> | undefined;
|
|
7448
7529
|
queryType: ObjectQuery<Shape> | null;
|
|
7449
7530
|
operators: OperatorsAny;
|
|
7450
7531
|
}
|