pqb 0.4.1 → 0.4.2
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 +7 -3
- package/dist/index.esm.js +26 -31
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +26 -31
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/queryMethods/create.test.ts +3 -1
- package/src/queryMethods/create.ts +41 -36
- package/src/relations.ts +18 -7
package/dist/index.d.ts
CHANGED
|
@@ -142,10 +142,13 @@ declare type RelationQueryBase = Query & {
|
|
|
142
142
|
[relationQueryKey]: string;
|
|
143
143
|
[isRequiredRelationKey]: boolean;
|
|
144
144
|
};
|
|
145
|
-
declare type
|
|
145
|
+
declare type PrepareRelationQuery<T extends Query, RelationName extends PropertyKey, Required extends boolean> = Omit<T, 'tableAlias'> & {
|
|
146
146
|
tableAlias: RelationName extends string ? RelationName : never;
|
|
147
147
|
[isRequiredRelationKey]: Required;
|
|
148
148
|
[relationQueryKey]: string;
|
|
149
|
+
};
|
|
150
|
+
declare type RelationQuery<Name extends PropertyKey = string, Params extends Record<string, unknown> = never, Populate extends string = never, T extends Query = Query, Required extends boolean = boolean, ChainedCreate extends boolean = false, Q extends RelationQueryBase = ChainedCreate extends true ? PrepareRelationQuery<T, Name, Required> : PrepareRelationQuery<T, Name, Required> & {
|
|
151
|
+
[K in CreateMethodsNames]: never;
|
|
149
152
|
}> = ((params: Params) => Q & {
|
|
150
153
|
[defaultsKey]: Record<Populate, true>;
|
|
151
154
|
}) & Q;
|
|
@@ -1086,6 +1089,7 @@ declare type CreateRawData = {
|
|
|
1086
1089
|
values: RawExpression;
|
|
1087
1090
|
};
|
|
1088
1091
|
declare type OnConflictArg<T extends Query> = keyof T['shape'] | (keyof T['shape'])[] | RawExpression;
|
|
1092
|
+
declare type CreateMethodsNames = 'create' | '_create' | 'createMany' | '_createMany' | 'createRaw' | '_createRaw' | 'createFrom' | '_createFrom';
|
|
1089
1093
|
declare class Create {
|
|
1090
1094
|
create<T extends Query>(this: T, data: CreateData<T>): CreateResult<T>;
|
|
1091
1095
|
_create<T extends Query>(this: T, data: CreateData<T>): CreateResult<T>;
|
|
@@ -1098,7 +1102,7 @@ declare class Create {
|
|
|
1098
1102
|
}>(this: T, query: Q, data: Omit<CreateData<T>, keyof Q['result']>): SetQueryReturnsOne<T>;
|
|
1099
1103
|
_createFrom<T extends Query, Q extends Query & {
|
|
1100
1104
|
returnType: 'one' | 'oneOrThrow';
|
|
1101
|
-
}>(this: T, query: Q, data: Omit<CreateData<T>, keyof Q['result']>):
|
|
1105
|
+
}>(this: T, query: Q, data: Omit<CreateData<T>, keyof Q['result']>): CreateResult<T>;
|
|
1102
1106
|
defaults<T extends Query, Data extends Partial<CreateData<T>>>(this: T, data: Data): T & {
|
|
1103
1107
|
[defaultsKey]: Record<keyof Data, true>;
|
|
1104
1108
|
};
|
|
@@ -4314,4 +4318,4 @@ declare const setQueryObjectValue: <T extends {
|
|
|
4314
4318
|
query: QueryData;
|
|
4315
4319
|
}>(q: T, object: string, key: string, value: unknown) => T;
|
|
4316
4320
|
|
|
4317
|
-
export { Adapter, AdapterOptions, AddQueryJoinedTable, AddQuerySelect, AddQueryWith, AfterCallback, Aggregate, Aggregate1ArgumentTypes, AggregateArg, AggregateItem, AggregateItemArg, AggregateItemOptions, AggregateOptions, AliasOrTable, AnyColumnType, AnyColumnTypeCreator, ArrayCardinality, ArrayColumn, ArrayData, ArrayOfColumnsObjects, AssertArray, BaseNumberData, BaseRelation, BaseStringData, BeforeCallback, BelongsToNestedInsert, BelongsToNestedUpdate, BelongsToRelation, BigIntColumn, BigSerialColumn, BitColumn, BitVaryingColumn, BooleanColumn, BooleanExpression, BoxColumn, ByteaColumn, CharColumn, CidrColumn, CircleColumn, Clear, ClearStatement, CoalesceString, ColumnData, ColumnInfo, ColumnInfoMethods, ColumnInfoQueryData, ColumnInput, ColumnNameOfModel, ColumnOperators, ColumnOutput, ColumnParser, ColumnShapeInput, ColumnShapeOutput, ColumnType, ColumnTypes, ColumnTypesBase, ColumnsObject, ColumnsParsers, ColumnsShape, CommonQueryData, Create, CreateData, DateBaseColumn, DateColumn, DateColumnData, DateTimeBaseClass, DateTimeColumnData, DateTimeWithTimeZoneBaseClass, Db, DbOptions, DbTableOptions, DecimalBaseColumn, DecimalColumn, DecimalColumnData, DeepPartial, DefaultSelectColumns, Delete, DeleteQueryData, DoublePrecisionColumn, DropMode, EMPTY_OBJECT, EmptyObject, EnumColumn, EnumLike, Except, Expression, ExpressionOfType, ExpressionOutput, FilterTuple, For, ForeignKey, ForeignKeyModel, ForeignKeyModelWithColumns, ForeignKeyOptions, From, GetArg, HasAndBelongsToManyRelation, HasManyNestedInsert, HasManyNestedUpdate, HasManyRelation, HasOneNestedInsert, HasOneNestedUpdate, HasOneRelation, Having, HavingArg, HavingItem, IndexColumnOptions, IndexOptions, InetColumn, InsertQueryData, IntegerBaseColumn, IntegerColumn, IntervalColumn, IsEqual, JSONAny, JSONArray, JSONBigInt, JSONBoolean, JSONColumn, JSONDate, JSONDiscriminatedObject, JSONDiscriminatedUnion, JSONEnum, JSONInstanceOf, JSONIntersection, JSONLazy, JSONLiteral, JSONMap, JSONNaN, JSONNativeEnum, JSONNever, JSONNotNullable, JSONNotNullish, JSONNull, JSONNullable, JSONNullish, JSONNumber, JSONObject, JSONObjectShape, JSONOptional, JSONRecord, JSONRecordKeyType, JSONRequired, JSONSet, JSONString, JSONTextColumn, JSONTuple, JSONTupleItems, JSONType, JSONTypeAny, JSONTypeData, JSONTypes, JSONUndefined, JSONUnion, JSONUnknown, JSONVoid, Join, JoinArgs, JoinCallback, JoinCallbackArg, JoinItem, JoinedTablesBase, Json, JsonItem, LimitedTextBaseColumn, LineColumn, LsegColumn, MacAddr8Column, MacAddrColumn, MaybeArray, Merge, MergeQuery, MergeQueryMethods, MoneyColumn, MoreThanOneRowError, NestedInsertItem, NestedInsertManyItems, NestedInsertOneItem, NestedUpdateItem, NestedUpdateManyItems, NestedUpdateOneItem, NotFoundError, NullableColumn, NumberAsStringBaseColumn, NumberBaseColumn, NumberColumn, NumberColumnData, NumberExpression, OnConflictItem, OnConflictMergeUpdate, OnConflictQueryBuilder, OnQueryBuilder, Operator, Operators, OrderArg, OrderItem, OutputTypeOfTuple, OutputTypeOfTupleWithRest, OwnTypeProps, PathColumn, PluckResultColumnType, PointColumn, PolygonColumn, PormError, PormInternalError, Primitive, Query, QueryArraysResult, QueryBase, QueryCallbacks, QueryData, QueryError, QueryErrorName, QueryGet, QueryInput, QueryLog, QueryLogObject, QueryLogOptions, QueryLogger, QueryMethods, QueryResult, QueryResultRow, QueryReturnType, QueryReturnsAll, QuerySelectAll, QueryThen, QueryUpsert, QueryWithTable, RawExpression, RealColumn, Relation, RelationQuery, RelationQueryBase, RelationsBase, Select, SelectAgg, SelectArg, SelectFunctionItem, SelectItem, SelectQueryData, Selectable, SelectableBase, SerialColumn, SetOptional, SetQueryJoinedTables, SetQueryReturns, SetQueryReturnsAll, SetQueryReturnsColumnInfo, SetQueryReturnsOne, SetQueryReturnsOneOptional, SetQueryReturnsPluck, SetQueryReturnsRowCount, SetQueryReturnsRows, SetQueryReturnsValue, SetQueryReturnsValueOptional, SetQueryReturnsVoid, SetQueryTableAlias, SetQueryWindows, SetQueryWith, SimpleSpread, SingleColumnIndexOptions, SinglePrimaryKey, SmallIntColumn, SmallSerialColumn, SomeIsTrue, SortDir, Spread, Sql, StringColumn, StringExpression, StringKey, TableData, TextBaseColumn, TextColumn, TextColumnData, Then, ThenResult, TimeColumn, TimeInterval, TimeWithTimeZoneColumn, TimestampColumn, TimestampWithTimeZoneColumn, ToSqlCtx, ToSqlOptions, Transaction, TransactionAdapter, TruncateQueryData, TsQueryColumn, TsVectorColumn, TypeParsers, UUIDColumn, UnhandledTypeError, Union, UnionArg, UnionItem, UnknownKeysParam, Update, UpdateData, UpdateQueryData, UpdateQueryDataItem, UpdateQueryDataObject, UpdatedAtDataInjector, UpsertData, UpsertResult, UpsertThis, ValidationContext, VarCharColumn, Where, WhereArg, WhereInArg, WhereInColumn, WhereInItem, WhereInValues, WhereItem, WhereJsonPathEqualsItem, WhereOnItem, WhereOnJoinItem, WhereQueryBuilder, WhereResult, WindowArg, WindowArgDeclaration, WindowDeclaration, WindowFunctionOptions, WindowItem, With, WithDataBase, WithDataItem, WithItem, WithOptions, XMLColumn, addOr, addOrNot, addParserForRawExpression, addParserForSelectItem, addParserToQuery, addQueryOn, addQueryOrOn, addQuestionMarks, addWhere, addWhereIn, addWhereNot, aggregate1FunctionNames, applyMixins, array, arrayToEnum, baseObjectOutputType, checkIfASimpleQuery, columnTypes, utils as columnUtils, constructType, createDb, createOperator, defaultsKey, discriminatedUnion, emptyObject, enumType, flatten, getClonedQueryData, getColumnTypes, getQueryAs, getQueryParsers, getRaw, getRawSql, getTableData, getValidEnumValues, getValueKey, handleResult, identity, instanceOf, intersection, isRaw, isRequiredRelationKey, joinTruthy, jsonTypes, lazy, literal, logColors, logParamToLogObject, makeRegexToFindInSql, map, nativeEnum, newTableData, noop, notNullable, notNullish, nullable, nullish, object, optional, parseRecord, parseResult, processSelectArg, pushOrNewArray, pushOrNewArrayToObject, pushQueryArray, pushQueryOn, pushQueryOrOn, pushQueryValue, queryMethodByReturnType, queryTypeWithLimitOne, quote, raw, record, relationQueryKey, required, resetTableData, scalarTypes, set, setQueryObjectValue, toArray, toSql, toSqlCacheKey, tuple, union };
|
|
4321
|
+
export { Adapter, AdapterOptions, AddQueryJoinedTable, AddQuerySelect, AddQueryWith, AfterCallback, Aggregate, Aggregate1ArgumentTypes, AggregateArg, AggregateItem, AggregateItemArg, AggregateItemOptions, AggregateOptions, AliasOrTable, AnyColumnType, AnyColumnTypeCreator, ArrayCardinality, ArrayColumn, ArrayData, ArrayOfColumnsObjects, AssertArray, BaseNumberData, BaseRelation, BaseStringData, BeforeCallback, BelongsToNestedInsert, BelongsToNestedUpdate, BelongsToRelation, BigIntColumn, BigSerialColumn, BitColumn, BitVaryingColumn, BooleanColumn, BooleanExpression, BoxColumn, ByteaColumn, CharColumn, CidrColumn, CircleColumn, Clear, ClearStatement, CoalesceString, ColumnData, ColumnInfo, ColumnInfoMethods, ColumnInfoQueryData, ColumnInput, ColumnNameOfModel, ColumnOperators, ColumnOutput, ColumnParser, ColumnShapeInput, ColumnShapeOutput, ColumnType, ColumnTypes, ColumnTypesBase, ColumnsObject, ColumnsParsers, ColumnsShape, CommonQueryData, Create, CreateData, CreateMethodsNames, DateBaseColumn, DateColumn, DateColumnData, DateTimeBaseClass, DateTimeColumnData, DateTimeWithTimeZoneBaseClass, Db, DbOptions, DbTableOptions, DecimalBaseColumn, DecimalColumn, DecimalColumnData, DeepPartial, DefaultSelectColumns, Delete, DeleteQueryData, DoublePrecisionColumn, DropMode, EMPTY_OBJECT, EmptyObject, EnumColumn, EnumLike, Except, Expression, ExpressionOfType, ExpressionOutput, FilterTuple, For, ForeignKey, ForeignKeyModel, ForeignKeyModelWithColumns, ForeignKeyOptions, From, GetArg, HasAndBelongsToManyRelation, HasManyNestedInsert, HasManyNestedUpdate, HasManyRelation, HasOneNestedInsert, HasOneNestedUpdate, HasOneRelation, Having, HavingArg, HavingItem, IndexColumnOptions, IndexOptions, InetColumn, InsertQueryData, IntegerBaseColumn, IntegerColumn, IntervalColumn, IsEqual, JSONAny, JSONArray, JSONBigInt, JSONBoolean, JSONColumn, JSONDate, JSONDiscriminatedObject, JSONDiscriminatedUnion, JSONEnum, JSONInstanceOf, JSONIntersection, JSONLazy, JSONLiteral, JSONMap, JSONNaN, JSONNativeEnum, JSONNever, JSONNotNullable, JSONNotNullish, JSONNull, JSONNullable, JSONNullish, JSONNumber, JSONObject, JSONObjectShape, JSONOptional, JSONRecord, JSONRecordKeyType, JSONRequired, JSONSet, JSONString, JSONTextColumn, JSONTuple, JSONTupleItems, JSONType, JSONTypeAny, JSONTypeData, JSONTypes, JSONUndefined, JSONUnion, JSONUnknown, JSONVoid, Join, JoinArgs, JoinCallback, JoinCallbackArg, JoinItem, JoinedTablesBase, Json, JsonItem, LimitedTextBaseColumn, LineColumn, LsegColumn, MacAddr8Column, MacAddrColumn, MaybeArray, Merge, MergeQuery, MergeQueryMethods, MoneyColumn, MoreThanOneRowError, NestedInsertItem, NestedInsertManyItems, NestedInsertOneItem, NestedUpdateItem, NestedUpdateManyItems, NestedUpdateOneItem, NotFoundError, NullableColumn, NumberAsStringBaseColumn, NumberBaseColumn, NumberColumn, NumberColumnData, NumberExpression, OnConflictItem, OnConflictMergeUpdate, OnConflictQueryBuilder, OnQueryBuilder, Operator, Operators, OrderArg, OrderItem, OutputTypeOfTuple, OutputTypeOfTupleWithRest, OwnTypeProps, PathColumn, PluckResultColumnType, PointColumn, PolygonColumn, PormError, PormInternalError, Primitive, Query, QueryArraysResult, QueryBase, QueryCallbacks, QueryData, QueryError, QueryErrorName, QueryGet, QueryInput, QueryLog, QueryLogObject, QueryLogOptions, QueryLogger, QueryMethods, QueryResult, QueryResultRow, QueryReturnType, QueryReturnsAll, QuerySelectAll, QueryThen, QueryUpsert, QueryWithTable, RawExpression, RealColumn, Relation, RelationQuery, RelationQueryBase, RelationsBase, Select, SelectAgg, SelectArg, SelectFunctionItem, SelectItem, SelectQueryData, Selectable, SelectableBase, SerialColumn, SetOptional, SetQueryJoinedTables, SetQueryReturns, SetQueryReturnsAll, SetQueryReturnsColumnInfo, SetQueryReturnsOne, SetQueryReturnsOneOptional, SetQueryReturnsPluck, SetQueryReturnsRowCount, SetQueryReturnsRows, SetQueryReturnsValue, SetQueryReturnsValueOptional, SetQueryReturnsVoid, SetQueryTableAlias, SetQueryWindows, SetQueryWith, SimpleSpread, SingleColumnIndexOptions, SinglePrimaryKey, SmallIntColumn, SmallSerialColumn, SomeIsTrue, SortDir, Spread, Sql, StringColumn, StringExpression, StringKey, TableData, TextBaseColumn, TextColumn, TextColumnData, Then, ThenResult, TimeColumn, TimeInterval, TimeWithTimeZoneColumn, TimestampColumn, TimestampWithTimeZoneColumn, ToSqlCtx, ToSqlOptions, Transaction, TransactionAdapter, TruncateQueryData, TsQueryColumn, TsVectorColumn, TypeParsers, UUIDColumn, UnhandledTypeError, Union, UnionArg, UnionItem, UnknownKeysParam, Update, UpdateData, UpdateQueryData, UpdateQueryDataItem, UpdateQueryDataObject, UpdatedAtDataInjector, UpsertData, UpsertResult, UpsertThis, ValidationContext, VarCharColumn, Where, WhereArg, WhereInArg, WhereInColumn, WhereInItem, WhereInValues, WhereItem, WhereJsonPathEqualsItem, WhereOnItem, WhereOnJoinItem, WhereQueryBuilder, WhereResult, WindowArg, WindowArgDeclaration, WindowDeclaration, WindowFunctionOptions, WindowItem, With, WithDataBase, WithDataItem, WithItem, WithOptions, XMLColumn, addOr, addOrNot, addParserForRawExpression, addParserForSelectItem, addParserToQuery, addQueryOn, addQueryOrOn, addQuestionMarks, addWhere, addWhereIn, addWhereNot, aggregate1FunctionNames, applyMixins, array, arrayToEnum, baseObjectOutputType, checkIfASimpleQuery, columnTypes, utils as columnUtils, constructType, createDb, createOperator, defaultsKey, discriminatedUnion, emptyObject, enumType, flatten, getClonedQueryData, getColumnTypes, getQueryAs, getQueryParsers, getRaw, getRawSql, getTableData, getValidEnumValues, getValueKey, handleResult, identity, instanceOf, intersection, isRaw, isRequiredRelationKey, joinTruthy, jsonTypes, lazy, literal, logColors, logParamToLogObject, makeRegexToFindInSql, map, nativeEnum, newTableData, noop, notNullable, notNullish, nullable, nullish, object, optional, parseRecord, parseResult, processSelectArg, pushOrNewArray, pushOrNewArrayToObject, pushQueryArray, pushQueryOn, pushQueryOrOn, pushQueryValue, queryMethodByReturnType, queryTypeWithLimitOne, quote, raw, record, relationQueryKey, required, resetTableData, scalarTypes, set, setQueryObjectValue, toArray, toSql, toSqlCacheKey, tuple, union };
|
package/dist/index.esm.js
CHANGED
|
@@ -4255,7 +4255,7 @@ const handleManyData = (q, data, ctx) => {
|
|
|
4255
4255
|
const insert = (self, {
|
|
4256
4256
|
columns,
|
|
4257
4257
|
values
|
|
4258
|
-
}, returnType, ctx
|
|
4258
|
+
}, returnType, ctx) => {
|
|
4259
4259
|
const q = self;
|
|
4260
4260
|
const returning = q.query.select;
|
|
4261
4261
|
delete q.query.and;
|
|
@@ -4263,7 +4263,6 @@ const insert = (self, {
|
|
|
4263
4263
|
q.query.type = "insert";
|
|
4264
4264
|
q.query.columns = columns;
|
|
4265
4265
|
q.query.values = values;
|
|
4266
|
-
q.query.fromQuery = fromQuery;
|
|
4267
4266
|
if (!ctx) {
|
|
4268
4267
|
q.query.returnType = returnType;
|
|
4269
4268
|
return q;
|
|
@@ -4344,11 +4343,33 @@ class Create {
|
|
|
4344
4343
|
return this.clone()._create(data);
|
|
4345
4344
|
}
|
|
4346
4345
|
_create(data) {
|
|
4346
|
+
var _a;
|
|
4347
4347
|
handleSelect(this);
|
|
4348
4348
|
const ctx = createCtx(this);
|
|
4349
|
+
const obj = handleOneData(this, data, ctx);
|
|
4350
|
+
let { columns } = obj;
|
|
4351
|
+
const { fromQuery } = this.query;
|
|
4352
|
+
if (fromQuery) {
|
|
4353
|
+
if (!queryTypeWithLimitOne[fromQuery.query.returnType]) {
|
|
4354
|
+
throw new Error(
|
|
4355
|
+
"Cannot create based on a query which returns multiple records"
|
|
4356
|
+
);
|
|
4357
|
+
}
|
|
4358
|
+
const queryColumns = [];
|
|
4359
|
+
(_a = fromQuery.query.select) == null ? void 0 : _a.forEach((item) => {
|
|
4360
|
+
if (typeof item === "string") {
|
|
4361
|
+
const index = item.indexOf(".");
|
|
4362
|
+
queryColumns.push(index === -1 ? item : item.slice(index + 1));
|
|
4363
|
+
} else if ("selectAs" in item) {
|
|
4364
|
+
queryColumns.push(...Object.keys(item.selectAs));
|
|
4365
|
+
}
|
|
4366
|
+
});
|
|
4367
|
+
queryColumns.push(...columns);
|
|
4368
|
+
columns = queryColumns;
|
|
4369
|
+
}
|
|
4349
4370
|
return insert(
|
|
4350
4371
|
this,
|
|
4351
|
-
|
|
4372
|
+
{ columns, values: obj.values },
|
|
4352
4373
|
getSingleReturnType(this),
|
|
4353
4374
|
ctx
|
|
4354
4375
|
);
|
|
@@ -4377,34 +4398,8 @@ class Create {
|
|
|
4377
4398
|
return this.clone()._createFrom(query, data);
|
|
4378
4399
|
}
|
|
4379
4400
|
_createFrom(query, data) {
|
|
4380
|
-
|
|
4381
|
-
|
|
4382
|
-
throw new Error(
|
|
4383
|
-
"createFrom accepts only a query which returns one record"
|
|
4384
|
-
);
|
|
4385
|
-
}
|
|
4386
|
-
if (!this.query.select) {
|
|
4387
|
-
this.query.select = ["*"];
|
|
4388
|
-
}
|
|
4389
|
-
const ctx = createCtx(this);
|
|
4390
|
-
const queryColumns = [];
|
|
4391
|
-
(_a = query.query.select) == null ? void 0 : _a.forEach((item) => {
|
|
4392
|
-
if (typeof item === "string") {
|
|
4393
|
-
const index = item.indexOf(".");
|
|
4394
|
-
queryColumns.push(index === -1 ? item : item.slice(index + 1));
|
|
4395
|
-
} else if ("selectAs" in item) {
|
|
4396
|
-
queryColumns.push(...Object.keys(item.selectAs));
|
|
4397
|
-
}
|
|
4398
|
-
});
|
|
4399
|
-
const { columns, values } = handleOneData(this, data, ctx);
|
|
4400
|
-
queryColumns.push(...columns);
|
|
4401
|
-
return insert(
|
|
4402
|
-
this,
|
|
4403
|
-
{ columns: queryColumns, values },
|
|
4404
|
-
"one",
|
|
4405
|
-
ctx,
|
|
4406
|
-
query
|
|
4407
|
-
);
|
|
4401
|
+
this.query.fromQuery = query;
|
|
4402
|
+
return this._create(data);
|
|
4408
4403
|
}
|
|
4409
4404
|
defaults(data) {
|
|
4410
4405
|
return this.clone()._defaults(data);
|