pqb 0.67.7 → 0.68.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.
@@ -14,7 +14,6 @@ interface RelationConfigBase$1 extends IsQuery$1 {
14
14
  queryRelated(params: unknown): unknown;
15
15
  modifyRelatedQuery?(relatedQuery: IsQuery$1): (query: IsQuery$1) => void;
16
16
  omitForeignKeyInCreate: PropertyKey;
17
- dataForCreate: unknown;
18
17
  dataForUpdate: unknown;
19
18
  dataForUpdateOne: unknown;
20
19
  primaryKeys: string[];
@@ -24,7 +23,13 @@ interface RelationConfigDataForCreate {
24
23
  nested: RecordUnknown$1;
25
24
  }
26
25
  interface RelationsBase$1 {
27
- [K: string]: RelationConfigBase$1;
26
+ [relationName: string]: RelationConfigBase$1;
27
+ }
28
+ interface RelationsDataForCreateBase {
29
+ [relationName: string]: unknown;
30
+ }
31
+ interface RelationsDataForCreateOptionalBase {
32
+ [relationName: string]: unknown;
28
33
  }
29
34
  type RelationQueryMaybeSingle<T extends RelationConfigBase$1> = T['returnsOne'] extends true ? T['required'] extends true ? QueryManyTake$1<T['query']> : QueryManyTakeOptional$1<T['query']> : T['query'];
30
35
  interface SubQueryForSql extends ToSQLQuery {
@@ -34,6 +39,17 @@ interface HasBeforeAndBeforeSet {
34
39
  before?: QueryBeforeHook$1[];
35
40
  beforeSet?: QueryData$1['beforeSet'];
36
41
  }
42
+ interface SqlJoinExpression<T extends Column$1.Pick.QueryColumn> extends Expression$1<T>, ExpressionTypeMethod {}
43
+ declare class SqlJoinExpression<T extends Column$1.Pick.QueryColumn = Column$1.Pick.QueryColumn> extends Expression$1<T> {
44
+ items: readonly unknown[];
45
+ separator?: RawSqlBase$1 | undefined;
46
+ result: {
47
+ value: T;
48
+ };
49
+ q: ExpressionData$1;
50
+ constructor(items: readonly unknown[], separator?: RawSqlBase$1 | undefined);
51
+ makeSQL(ctx: ToSqlValues$1, quotedAs?: string): string;
52
+ }
37
53
  /**
38
54
  * Expression for a SQL identifier reference.
39
55
  * Used to safely quote identifiers in raw SQL queries.
@@ -2071,6 +2087,37 @@ declare class DynamicRawSQL$1<T extends Column$1.Pick.QueryColumn, ColumnTypes =
2071
2087
  }
2072
2088
  interface SqlFn$1 {
2073
2089
  <T, Args extends TemplateLiteralArgs$1 | [sql: string] | [values: RecordUnknown$1, sql?: string]>(this: T, ...args: Args): Args extends [RecordUnknown$1] ? (...sql: TemplateLiteralArgs$1) => RawSql$1<Column$1.Pick.QueryColumn, T> : RawSql$1<Column$1.Pick.QueryColumn, T>;
2090
+ /**
2091
+ * `sql.join` builds a SQL list from values and expressions.
2092
+ * Plain values are bound as query parameters, while SQL expressions render as SQL.
2093
+ *
2094
+ * Use it for SQL constructs such as `ARRAY[...]`, `IN (...)`, function arguments,
2095
+ * or tuple lists. The default separator is `, `. Provide a SQL expression as the
2096
+ * custom separator when a different separator is needed.
2097
+ *
2098
+ * ```ts
2099
+ * await db.user.whereSql`"id" IN (${sql.join([1, 2, 3])})`;
2100
+ * ```
2101
+ *
2102
+ * ```ts
2103
+ * await db.user.whereSql`
2104
+ * (${sql.join([sql.ref('name'), sql.ref('age')])}) IN (${sql.join(
2105
+ * users.map((user) => sql`(${user.name}, ${user.age})`),
2106
+ * )})
2107
+ * `;
2108
+ * ```
2109
+ *
2110
+ * ```ts
2111
+ * await db.user.select({
2112
+ * displayName: (q) =>
2113
+ * sql<string>`concat(${sql.join(
2114
+ * [q.column('firstName'), q.column('lastName')],
2115
+ * sql` || ' ' || `,
2116
+ * )})`,
2117
+ * });
2118
+ * ```
2119
+ */
2120
+ join<T = unknown>(items: readonly unknown[], separator?: RawSqlBase$1): SqlJoinExpression<Column$1.Pick.QueryColumnOfType<T>>;
2074
2121
  /**
2075
2122
  * `sql.ref` quotes a SQL identifier such as a table name, column name, or schema name.
2076
2123
  * Use it when you need to dynamically reference an identifier in raw SQL.
@@ -4992,6 +5039,8 @@ interface Base$1<Value> {
4992
5039
  __hasSelect: true;
4993
5040
  equals: Operator<Value | IsQuery$1 | Expression$1, BooleanQueryColumn>;
4994
5041
  not: Operator<Value | IsQuery$1 | Expression$1, BooleanQueryColumn>;
5042
+ isDistinctFrom: Operator<Value | IsQuery$1 | Expression$1, BooleanQueryColumn>;
5043
+ isNotDistinctFrom: Operator<Value | IsQuery$1 | Expression$1, BooleanQueryColumn>;
4995
5044
  in: Operator<Value[] | IsQuery$1 | Expression$1, BooleanQueryColumn>;
4996
5045
  notIn: Operator<Value[] | IsQuery$1 | Expression$1, BooleanQueryColumn>;
4997
5046
  }
@@ -5361,6 +5410,12 @@ interface PickQueryWindows {
5361
5410
  interface PickQueryRelations$1 {
5362
5411
  relations: RelationsBase$1;
5363
5412
  }
5413
+ interface PickQueryRelationsDataForCreate {
5414
+ relationsDataForCreate: RelationsDataForCreateBase;
5415
+ }
5416
+ interface PickQueryRelationsDataForCreateOptional {
5417
+ relationsDataForCreateOptional: RelationsDataForCreateOptionalBase;
5418
+ }
5364
5419
  interface PickQueryColumTypes {
5365
5420
  columnTypes: unknown;
5366
5421
  }
@@ -5969,13 +6024,14 @@ declare class QueryCreateFrom {
5969
6024
  */
5970
6025
  insertForEachFrom<T extends CreateSelf$1>(this: T, query: IsQuery$1): InsertManyFromResult<T>;
5971
6026
  }
5972
- interface CreateSelf$1 extends PickQueryHasSelect, PickQueryDefaults, PickQueryResult, PickQueryRelations$1, PickQueryWithData, PickQueryReturnType, PickQueryShape$1, PickQueryUniqueProperties, PickQueryInputType$1, Query.Pick.IsNotReadOnly {}
6027
+ interface CreateSelf$1 extends PickQueryHasSelect, PickQueryDefaults, PickQueryResult, PickQueryRelations$1, PickQueryRelationsDataForCreate, PickQueryRelationsDataForCreateOptional, PickQueryWithData, PickQueryReturnType, PickQueryShape$1, PickQueryUniqueProperties, PickQueryInputType$1, Query.Pick.IsNotReadOnly {}
5973
6028
  type CreateData$1<T extends CreateSelf$1> = EmptyObject$1 extends T['relations'] ? CreateDataWithDefaults<T, keyof T['__defaults']> : CreateRelationsData<T>;
5974
6029
  type CreateDataWithDefaults<T extends CreateSelf$1, Defaults extends PropertyKey> = { [K in keyof T['__inputType'] as K extends Defaults ? never : K]: K extends Defaults ? never : CreateColumn<T, K> } & { [K in Defaults]?: K extends keyof T['__inputType'] ? CreateColumn<T, K> : never };
5975
6030
  type CreateDataWithDefaultsForRelations<T extends CreateSelf$1, Defaults extends keyof T['__inputType'], OmitFKeys extends PropertyKey> = { [K in keyof T['__inputType'] as K extends Defaults | OmitFKeys ? never : K]: K extends Defaults | OmitFKeys ? never : CreateColumn<T, K> } & { [K in Defaults as K extends OmitFKeys ? never : K]?: CreateColumn<T, K> };
5976
6031
  type CreateColumn<T extends CreateSelf$1, K extends keyof T['__inputType']> = T['__inputType'][K] | ((q: T) => QueryOrExpression$1<T['__inputType'][K]>);
5977
- type CreateRelationsData<T extends CreateSelf$1> = CreateDataWithDefaultsForRelations<T, keyof T['__defaults'], T['relations'][keyof T['relations']]['omitForeignKeyInCreate']> & CreateRelationsDataOmittingFKeys<T, T['relations'][keyof T['relations']]['dataForCreate']>;
5978
- type CreateRelationsDataOmittingFKeys<T extends CreateSelf$1, Union> = (Union extends RelationConfigDataForCreate ? (u: Union['columns'] extends keyof T['__defaults'] ? Pick<CreateDataWithDefaults<T, keyof T['__defaults']>, Union['columns']> & Partial<Union['nested']> : (Pick<{ [P in keyof T['__inputType']]: CreateColumn<T, P> }, Union['columns'] & keyof T['__inputType']> & { [K in keyof Union['nested']]?: never }) | Union['nested']) => void : (u: Union) => void) extends ((u: infer Obj) => void) ? Obj : never;
6032
+ type CreateRelationsData<T extends CreateSelf$1> = CreateDataWithDefaultsForRelations<T, keyof T['__defaults'], T['relations'][keyof T['relations']]['omitForeignKeyInCreate']> & CreateRelationsDataOmittingFKeys<T, T['relationsDataForCreate']> & T['relationsDataForCreateOptional'];
6033
+ type CreateRelationsDataOmittingFKeys<T extends CreateSelf$1, Data> = EmptyObject$1 extends Data ? EmptyObject$1 : { [K in keyof Data]: CreateRelationDataOmittingFKeys<T, Data[K]> }[keyof Data] extends ((u: infer Obj) => void) ? Obj : never;
6034
+ type CreateRelationDataOmittingFKeys<T extends CreateSelf$1, Union> = (u: Union extends RelationConfigDataForCreate ? Union['columns'] extends keyof T['__defaults'] ? Pick<CreateDataWithDefaults<T, keyof T['__defaults']>, Union['columns']> & Partial<Union['nested']> : (Pick<{ [P in keyof T['__inputType']]: CreateColumn<T, P> }, Union['columns'] & keyof T['__inputType']> & { [K in keyof Union['nested']]?: never }) | Union['nested'] : Union) => void;
5979
6035
  type CreateResult<T extends CreateSelf$1, Data> = T extends {
5980
6036
  isCount: true;
5981
6037
  } ? T : T['returnType'] extends undefined | 'all' ? SetQueryReturnsOneResult<T, NarrowCreateResult<T, Data>> : T['returnType'] extends 'pluck' ? SetQueryReturnsColumnResult<T, NarrowCreateResult<T, Data>> : SetQueryResult<T, NarrowCreateResult<T, Data>>;
@@ -7196,7 +7252,7 @@ declare namespace Column$1 {
7196
7252
  unique: Name;
7197
7253
  };
7198
7254
  };
7199
- export type Nullable<T extends Column$1.Pick.ForNullable, InputSchema, OutputSchema, QuerySchema> = { [K in keyof T]: K extends '__type' ? T['__type'] | null : K extends '__inputType' ? T['__inputType'] | null : K extends 'inputSchema' ? InputSchema : K extends '__outputType' ? T['__outputType'] | (unknown extends T['__nullType'] ? null : T['__nullType']) : K extends 'outputSchema' ? OutputSchema : K extends '__queryType' ? T['__queryType'] | null : K extends 'querySchema' ? QuerySchema : K extends 'data' ? T['data'] & DataNullable : K extends 'operators' ? { [K in keyof T['operators']]: K extends 'equals' | 'not' ? Operator<T | null> : T['operators'][K] } : T[K] };
7255
+ export type Nullable<T extends Column$1.Pick.ForNullable, InputSchema, OutputSchema, QuerySchema> = { [K in keyof T]: K extends '__type' ? T['__type'] | null : K extends '__inputType' ? T['__inputType'] | null : K extends 'inputSchema' ? InputSchema : K extends '__outputType' ? T['__outputType'] | (unknown extends T['__nullType'] ? null : T['__nullType']) : K extends 'outputSchema' ? OutputSchema : K extends '__queryType' ? T['__queryType'] | null : K extends 'querySchema' ? QuerySchema : K extends 'data' ? T['data'] & DataNullable : K extends 'operators' ? { [K in keyof T['operators']]: K extends 'equals' | 'not' | 'isDistinctFrom' | 'isNotDistinctFrom' ? Operator<T | null> : T['operators'][K] } : T[K] };
7200
7256
  export type QueryColumnToNullable<C> = { [K in keyof C]: K extends '__outputType' | '__queryType' ? C[K] | null : C[K] };
7201
7257
  export type QueryColumnToOptional<C> = { [K in keyof C]: K extends '__outputType' ? C[K] | undefined : C[K] };
7202
7258
  interface DataNullable {
@@ -7206,6 +7262,8 @@ declare namespace Column$1 {
7206
7262
  export interface OperatorsNullable<T> {
7207
7263
  equals: Operator<T | null>;
7208
7264
  not: Operator<T | null>;
7265
+ isDistinctFrom: Operator<T | null>;
7266
+ isNotDistinctFrom: Operator<T | null>;
7209
7267
  }
7210
7268
  export type Encode<T, InputSchema, Input> = { [K in keyof T]: K extends '__inputType' ? Input : K extends 'inputSchema' ? InputSchema : T[K] };
7211
7269
  export type Parse<T extends Pick.ForParse, OutputSchema, Output> = { [K in keyof T]: K extends '__outputType' ? null extends T['__type'] ? (Output extends null ? never : Output) | (unknown extends T['__nullType'] ? null : T['__nullType']) : Output : K extends 'outputSchema' ? null extends T['__type'] ? OutputSchema | T['nullSchema'] : OutputSchema : T[K] };
@@ -9378,6 +9436,8 @@ interface Query extends IsQuery$1, PickQueryTable, PickQueryShape$1, PickQuerySe
9378
9436
  catch: QueryCatch;
9379
9437
  windows: EmptyObject$1;
9380
9438
  relations: RelationsBase$1;
9439
+ relationsDataForCreate: RelationsDataForCreateBase;
9440
+ relationsDataForCreateOptional: RelationsDataForCreateOptionalBase;
9381
9441
  relationQueries: IsQueries;
9382
9442
  error: new (message: string, length: number, name: QueryErrorName) => QueryError;
9383
9443
  __readOnly: true | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pqb",
3
- "version": "0.67.7",
3
+ "version": "0.68.1",
4
4
  "description": "Postgres query builder",
5
5
  "keywords": [
6
6
  "pg",