pqb 0.67.7 → 0.68.0

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.
@@ -5361,6 +5408,12 @@ interface PickQueryWindows {
5361
5408
  interface PickQueryRelations$1 {
5362
5409
  relations: RelationsBase$1;
5363
5410
  }
5411
+ interface PickQueryRelationsDataForCreate {
5412
+ relationsDataForCreate: RelationsDataForCreateBase;
5413
+ }
5414
+ interface PickQueryRelationsDataForCreateOptional {
5415
+ relationsDataForCreateOptional: RelationsDataForCreateOptionalBase;
5416
+ }
5364
5417
  interface PickQueryColumTypes {
5365
5418
  columnTypes: unknown;
5366
5419
  }
@@ -5969,13 +6022,14 @@ declare class QueryCreateFrom {
5969
6022
  */
5970
6023
  insertForEachFrom<T extends CreateSelf$1>(this: T, query: IsQuery$1): InsertManyFromResult<T>;
5971
6024
  }
5972
- interface CreateSelf$1 extends PickQueryHasSelect, PickQueryDefaults, PickQueryResult, PickQueryRelations$1, PickQueryWithData, PickQueryReturnType, PickQueryShape$1, PickQueryUniqueProperties, PickQueryInputType$1, Query.Pick.IsNotReadOnly {}
6025
+ interface CreateSelf$1 extends PickQueryHasSelect, PickQueryDefaults, PickQueryResult, PickQueryRelations$1, PickQueryRelationsDataForCreate, PickQueryRelationsDataForCreateOptional, PickQueryWithData, PickQueryReturnType, PickQueryShape$1, PickQueryUniqueProperties, PickQueryInputType$1, Query.Pick.IsNotReadOnly {}
5973
6026
  type CreateData$1<T extends CreateSelf$1> = EmptyObject$1 extends T['relations'] ? CreateDataWithDefaults<T, keyof T['__defaults']> : CreateRelationsData<T>;
5974
6027
  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
6028
  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
6029
  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;
6030
+ type CreateRelationsData<T extends CreateSelf$1> = CreateDataWithDefaultsForRelations<T, keyof T['__defaults'], T['relations'][keyof T['relations']]['omitForeignKeyInCreate']> & CreateRelationsDataOmittingFKeys<T, T['relationsDataForCreate']> & T['relationsDataForCreateOptional'];
6031
+ 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;
6032
+ 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
6033
  type CreateResult<T extends CreateSelf$1, Data> = T extends {
5980
6034
  isCount: true;
5981
6035
  } ? 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>>;
@@ -9378,6 +9432,8 @@ interface Query extends IsQuery$1, PickQueryTable, PickQueryShape$1, PickQuerySe
9378
9432
  catch: QueryCatch;
9379
9433
  windows: EmptyObject$1;
9380
9434
  relations: RelationsBase$1;
9435
+ relationsDataForCreate: RelationsDataForCreateBase;
9436
+ relationsDataForCreateOptional: RelationsDataForCreateOptionalBase;
9381
9437
  relationQueries: IsQueries;
9382
9438
  error: new (message: string, length: number, name: QueryErrorName) => QueryError;
9383
9439
  __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.0",
4
4
  "description": "Postgres query builder",
5
5
  "keywords": [
6
6
  "pg",