pqb 0.0.7 → 0.0.9
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 +22 -17
- package/dist/index.esm.js +74 -23
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +77 -22
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/columnSchema/columnsSchema.ts +4 -0
- package/src/errors.ts +12 -2
- package/src/queryMethods/select.ts +3 -0
- package/src/queryMethods/where.test.ts +14 -2
- package/src/queryMethods/where.ts +3 -0
- package/src/relations.ts +1 -1
- package/src/sql/aggregate.ts +1 -4
- package/src/sql/having.ts +2 -8
- package/src/sql/insert.ts +2 -8
- package/src/sql/join.ts +19 -15
- package/src/sql/select.ts +36 -15
- package/src/sql/types.ts +6 -2
- package/src/sql/where.ts +9 -15
package/dist/index.d.ts
CHANGED
|
@@ -431,7 +431,7 @@ declare type BaseRelation = {
|
|
|
431
431
|
key: string;
|
|
432
432
|
model: QueryWithTable;
|
|
433
433
|
query: QueryWithTable;
|
|
434
|
-
joinQuery: Query;
|
|
434
|
+
joinQuery(fromQuery: Query, toQuery: Query): Query;
|
|
435
435
|
nestedCreateQuery: Query;
|
|
436
436
|
nestedInsert?: BelongsToNestedInsert | HasOneNestedInsert | HasManyNestedInsert;
|
|
437
437
|
nestedUpdate?: BelongsToNestedUpdate | HasOneNestedUpdate | HasManyNestedUpdate;
|
|
@@ -774,20 +774,16 @@ declare type WhereJsonPathEqualsItem = [
|
|
|
774
774
|
rightPath: string
|
|
775
775
|
];
|
|
776
776
|
declare type WhereOnItem = {
|
|
777
|
-
joinFrom:
|
|
778
|
-
|
|
779
|
-
query: {
|
|
780
|
-
as?: string;
|
|
781
|
-
};
|
|
782
|
-
} | string;
|
|
783
|
-
joinTo: {
|
|
784
|
-
table?: string;
|
|
785
|
-
query: {
|
|
786
|
-
as?: string;
|
|
787
|
-
};
|
|
788
|
-
} | string;
|
|
777
|
+
joinFrom: WhereOnJoinItem;
|
|
778
|
+
joinTo: WhereOnJoinItem;
|
|
789
779
|
on: [leftFullColumn: string, rightFullColumn: string] | [leftFullColumn: string, op: string, rightFullColumn: string];
|
|
790
780
|
};
|
|
781
|
+
declare type WhereOnJoinItem = {
|
|
782
|
+
table?: string;
|
|
783
|
+
query: {
|
|
784
|
+
as?: string;
|
|
785
|
+
};
|
|
786
|
+
} | string;
|
|
791
787
|
declare type AggregateItemOptions = {
|
|
792
788
|
as?: string;
|
|
793
789
|
distinct?: boolean;
|
|
@@ -1041,7 +1037,7 @@ declare class QueryGet {
|
|
|
1041
1037
|
declare type SelectArg<T extends QueryBase> = keyof T['selectable'] | (T['relations'] extends Record<string, Relation> ? keyof T['relations'] : never) | RelationQueryBase | SelectAsArg<T>;
|
|
1042
1038
|
declare type SelectAsArg<T extends QueryBase> = Record<string, keyof T['selectable'] | Query | RawExpression>;
|
|
1043
1039
|
declare type SelectResult<T extends Query, Args extends SelectArg<T>[], SelectAsArgs = SimpleSpread<FilterTuple<Args, SelectAsArg<QueryBase>>>> = AddQuerySelect<T, {
|
|
1044
|
-
[Arg in Args[number] as Arg extends keyof T['selectable'] ? T['selectable'][Arg]['as'] : Arg extends keyof T['relations'] ? Arg : Arg extends RelationQueryBase ? Arg['tableAlias'] extends string ? Arg['tableAlias'] : never : never]: Arg extends keyof T['selectable'] ? T['selectable'][Arg]['column'] : Arg extends RelationQueryBase ? Arg['returnType'] extends 'all' ? ArrayOfColumnsObjects<Arg['result']> : Arg['returnType'] extends 'valueOrThrow' ? Arg['result']['value'] : Arg[isRequiredRelationKey] extends true ? ColumnsObject<Arg['result']> : NullableColumn<ColumnsObject<Arg['result']>> : T['relations'] extends Record<string, Relation> ? Arg extends keyof T['relations'] ? T['relations'][Arg]['returns'] extends 'many' ? ArrayOfColumnsObjects<T['relations'][Arg]['model']['result']> : T['relations'][Arg]['options']['required'] extends true ? ColumnsObject<T['relations'][Arg]['model']['result']> : NullableColumn<ColumnsObject<T['relations'][Arg]['model']['result']>> : never : never;
|
|
1040
|
+
[Arg in Args[number] as Arg extends keyof T['selectable'] ? T['selectable'][Arg]['as'] : Arg extends keyof T['relations'] ? Arg : Arg extends RelationQueryBase ? Arg['tableAlias'] extends string ? Arg['tableAlias'] : never : never]: Arg extends keyof T['selectable'] ? T['selectable'][Arg]['column'] : Arg extends RelationQueryBase ? Arg['returnType'] extends 'all' ? ArrayOfColumnsObjects<Arg['result']> : Arg['returnType'] extends 'valueOrThrow' ? Arg['result']['value'] : Arg['returnType'] extends 'pluck' ? PluckResultColumnType<Arg['result']['pluck']> : Arg[isRequiredRelationKey] extends true ? ColumnsObject<Arg['result']> : NullableColumn<ColumnsObject<Arg['result']>> : T['relations'] extends Record<string, Relation> ? Arg extends keyof T['relations'] ? T['relations'][Arg]['returns'] extends 'many' ? ArrayOfColumnsObjects<T['relations'][Arg]['model']['result']> : T['relations'][Arg]['options']['required'] extends true ? ColumnsObject<T['relations'][Arg]['model']['result']> : NullableColumn<ColumnsObject<T['relations'][Arg]['model']['result']>> : never : never;
|
|
1045
1041
|
} & {
|
|
1046
1042
|
[K in keyof SelectAsArgs]: SelectAsArgs[K] extends keyof T['selectable'] ? T['selectable'][SelectAsArgs[K]]['column'] : SelectAsArgs[K] extends RawExpression ? SelectAsArgs[K]['__column'] : SelectAsArgs[K] extends Query ? SelectAsArgs[K]['returnType'] extends 'all' ? ArrayOfColumnsObjects<SelectAsArgs[K]['result']> : ColumnsObject<SelectAsArgs[K]['result']> : never;
|
|
1047
1043
|
}>;
|
|
@@ -2172,6 +2168,8 @@ declare class ArrayOfColumnsObjects<Shape extends ColumnsShape> extends ColumnTy
|
|
|
2172
2168
|
};
|
|
2173
2169
|
constructor(shape: Shape);
|
|
2174
2170
|
}
|
|
2171
|
+
declare abstract class PluckResultColumnType<C extends ColumnType> extends ColumnType<C['type'][], typeof Operators.any> {
|
|
2172
|
+
}
|
|
2175
2173
|
declare type UnionKeyofToOvlds<S, U> = UnionToIntersection<U extends keyof S ? (f: U) => void : never>;
|
|
2176
2174
|
declare type PopKeyofColumnShapeUnion<S extends ColumnsShape, U extends keyof S> = UnionKeyofToOvlds<S, U> extends (a: infer A extends keyof S) => void ? A : never;
|
|
2177
2175
|
declare type IsUnion<T> = [T] extends [UnionToIntersection<T>] ? false : true;
|
|
@@ -4278,10 +4276,17 @@ declare const setQueryObjectValue: <T extends {
|
|
|
4278
4276
|
query: QueryData;
|
|
4279
4277
|
}>(q: T, object: string, key: string, value: unknown) => T;
|
|
4280
4278
|
|
|
4281
|
-
declare class
|
|
4279
|
+
declare class PormError extends Error {
|
|
4280
|
+
}
|
|
4281
|
+
declare class NotFoundError extends PormError {
|
|
4282
4282
|
constructor(message?: string);
|
|
4283
4283
|
}
|
|
4284
|
-
declare class MoreThanOneRowError extends
|
|
4284
|
+
declare class MoreThanOneRowError extends PormError {
|
|
4285
|
+
}
|
|
4286
|
+
declare class PormInternalError extends Error {
|
|
4287
|
+
}
|
|
4288
|
+
declare class UnhandledTypeError extends PormInternalError {
|
|
4289
|
+
constructor(value: never);
|
|
4285
4290
|
}
|
|
4286
4291
|
|
|
4287
|
-
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, 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, GetTypeOrRaw, GetTypesOrRaw, HasAndBelongsToManyRelation, HasManyNestedInsert, HasManyNestedUpdate, HasManyRelation, HasOneNestedInsert, HasOneNestedUpdate, HasOneRelation, Having, HavingArg, HavingItem, IndexColumnOptions, IndexOptions, InetColumn, Insert, InsertData, 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, MoneyColumn, MoreThanOneRowError, NestedInsertItem, NestedInsertManyItems, NestedInsertOneItem, NestedUpdateItem, NestedUpdateManyItems, NestedUpdateOneItem, NotFoundError, NullableColumn, NumberAsStringBaseColumn, NumberBaseColumn, NumberColumn, NumberColumnData, NumberExpression, OnConflictItem, OnConflictMergeUpdate, OnConflictQueryBuilder, OnQueryBuilder, Operator, Operators, OptionalKeys, OrderArg, OrderItem, OutputTypeOfTuple, OutputTypeOfTupleWithRest, OwnTypeProps, PathColumn, PointColumn, PolygonColumn, Primitive, PropertyKeyUnionToArray, Query, QueryArraysResult, QueryBase, QueryCallbacks, QueryData, QueryGet, QueryInput, QueryLog, QueryLogObject, QueryLogOptions, QueryLogger, QueryMethods, QueryResult, QueryResultRow, QueryReturnType, QuerySelectAll, 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, SmallIntColumn, SmallSerialColumn, SortDir, Spread, Sql, StringColumn, StringExpression, StringKey, TableData, TableSchema, TextBaseColumn, TextColumn, TextColumnData, Then, ThenResult, TimeColumn, TimeInterval, TimeWithTimeZoneColumn, TimestampColumn, TimestampWithTimeZoneColumn, Transaction, TransactionAdapter, TruncateQueryData, TsQueryColumn, TsVectorColumn, TypeParsers, UUIDColumn, Union, UnionArg, UnionItem, UnionToArray, UnionToIntersection, UnionToOvlds, UnknownKeysParam, Update, UpdateData, UpdateQueryData, UpsertData, UpsertResult, UpsertThis, ValidationContext, VarCharColumn, Where, WhereArg, WhereInArg, WhereInColumn, WhereInItem, WhereInValues, WhereItem, WhereJsonPathEqualsItem, WhereOnItem, 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, columnTypes, utils as columnUtils, constructType, createDb, createOperator, defaultsKey, discriminatedUnion, emptyObject, enumType, flatten, getClonedQueryData, getColumnTypes, getQueryAs, getQueryParsers, getRaw, getTableData, getValidEnumValues, getValueKey, handleResult, identity, instanceOf, intersection, isRaw, isRequiredRelationKey, joinTruthy, jsonTypes, lazy, literal, logColors, logParamToLogObject, map, nativeEnum, newTableData, noop, notNullable, notNullish, nullable, nullish, object, optional, parseRecord, parseResult, processSelectArg, pushQueryArray, pushQueryOn, pushQueryOrOn, pushQueryValue, queryKeysOfNotSimpleQuery, queryMethodByReturnType, quote, raw, record, relationQueryKey, removeFromQuery, required, resetTableData, scalarTypes, set, setQueryObjectValue, toArray, toSql, tuple, union };
|
|
4292
|
+
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, 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, GetTypeOrRaw, GetTypesOrRaw, HasAndBelongsToManyRelation, HasManyNestedInsert, HasManyNestedUpdate, HasManyRelation, HasOneNestedInsert, HasOneNestedUpdate, HasOneRelation, Having, HavingArg, HavingItem, IndexColumnOptions, IndexOptions, InetColumn, Insert, InsertData, 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, MoneyColumn, MoreThanOneRowError, NestedInsertItem, NestedInsertManyItems, NestedInsertOneItem, NestedUpdateItem, NestedUpdateManyItems, NestedUpdateOneItem, NotFoundError, NullableColumn, NumberAsStringBaseColumn, NumberBaseColumn, NumberColumn, NumberColumnData, NumberExpression, OnConflictItem, OnConflictMergeUpdate, OnConflictQueryBuilder, OnQueryBuilder, Operator, Operators, OptionalKeys, OrderArg, OrderItem, OutputTypeOfTuple, OutputTypeOfTupleWithRest, OwnTypeProps, PathColumn, PluckResultColumnType, PointColumn, PolygonColumn, PormError, PormInternalError, Primitive, PropertyKeyUnionToArray, Query, QueryArraysResult, QueryBase, QueryCallbacks, QueryData, QueryGet, QueryInput, QueryLog, QueryLogObject, QueryLogOptions, QueryLogger, QueryMethods, QueryResult, QueryResultRow, QueryReturnType, QuerySelectAll, 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, SmallIntColumn, SmallSerialColumn, SortDir, Spread, Sql, StringColumn, StringExpression, StringKey, TableData, TableSchema, TextBaseColumn, TextColumn, TextColumnData, Then, ThenResult, TimeColumn, TimeInterval, TimeWithTimeZoneColumn, TimestampColumn, TimestampWithTimeZoneColumn, Transaction, TransactionAdapter, TruncateQueryData, TsQueryColumn, TsVectorColumn, TypeParsers, UUIDColumn, UnhandledTypeError, Union, UnionArg, UnionItem, UnionToArray, UnionToIntersection, UnionToOvlds, UnknownKeysParam, Update, UpdateData, UpdateQueryData, 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, columnTypes, utils as columnUtils, constructType, createDb, createOperator, defaultsKey, discriminatedUnion, emptyObject, enumType, flatten, getClonedQueryData, getColumnTypes, getQueryAs, getQueryParsers, getRaw, getTableData, getValidEnumValues, getValueKey, handleResult, identity, instanceOf, intersection, isRaw, isRequiredRelationKey, joinTruthy, jsonTypes, lazy, literal, logColors, logParamToLogObject, map, nativeEnum, newTableData, noop, notNullable, notNullish, nullable, nullish, object, optional, parseRecord, parseResult, processSelectArg, pushQueryArray, pushQueryOn, pushQueryOrOn, pushQueryValue, queryKeysOfNotSimpleQuery, queryMethodByReturnType, quote, raw, record, relationQueryKey, removeFromQuery, required, resetTableData, scalarTypes, set, setQueryObjectValue, toArray, toSql, tuple, union };
|
package/dist/index.esm.js
CHANGED
|
@@ -1929,6 +1929,8 @@ class ArrayOfColumnsObjects extends ColumnType {
|
|
|
1929
1929
|
this.operators = Operators.any;
|
|
1930
1930
|
}
|
|
1931
1931
|
}
|
|
1932
|
+
class PluckResultColumnType extends ColumnType {
|
|
1933
|
+
}
|
|
1932
1934
|
class TableSchema {
|
|
1933
1935
|
constructor(shape) {
|
|
1934
1936
|
this.shape = shape;
|
|
@@ -2001,21 +2003,28 @@ const processJoinItem = (model, query, values, args, quotedAs) => {
|
|
|
2001
2003
|
const [first] = args;
|
|
2002
2004
|
if (typeof first === "string") {
|
|
2003
2005
|
if (first in model.relations) {
|
|
2004
|
-
const {
|
|
2005
|
-
|
|
2006
|
-
|
|
2007
|
-
|
|
2006
|
+
const {
|
|
2007
|
+
key,
|
|
2008
|
+
query: toQuery,
|
|
2009
|
+
joinQuery: joinQuery2
|
|
2010
|
+
} = model.relations[first];
|
|
2011
|
+
const joinedQuery = joinQuery2(model, toQuery);
|
|
2012
|
+
const joinedQueryData = joinedQuery.query;
|
|
2013
|
+
const table = typeof joinedQueryData.from === "string" ? joinedQueryData.from : joinedQuery.table;
|
|
2014
|
+
let target3 = quoteSchemaAndTable(joinedQueryData.schema, table);
|
|
2015
|
+
const as = joinedQueryData.as || key;
|
|
2008
2016
|
if (as !== table) {
|
|
2009
2017
|
target3 += ` AS ${q(as)}`;
|
|
2010
2018
|
}
|
|
2011
2019
|
const queryData = {
|
|
2020
|
+
as: joinedQuery.query.as,
|
|
2012
2021
|
and: [],
|
|
2013
2022
|
or: []
|
|
2014
2023
|
};
|
|
2015
|
-
if (
|
|
2016
|
-
queryData.and.push(...
|
|
2017
|
-
if (
|
|
2018
|
-
queryData.or.push(...
|
|
2024
|
+
if (joinedQueryData.and)
|
|
2025
|
+
queryData.and.push(...joinedQueryData.and);
|
|
2026
|
+
if (joinedQueryData.or)
|
|
2027
|
+
queryData.or.push(...joinedQueryData.or);
|
|
2019
2028
|
const arg = (_a = args[1]) == null ? void 0 : _a.call(
|
|
2020
2029
|
args,
|
|
2021
2030
|
new model.onQueryBuilder({ table: model.table, query }, args[0])
|
|
@@ -2028,7 +2037,7 @@ const processJoinItem = (model, query, values, args, quotedAs) => {
|
|
|
2028
2037
|
}
|
|
2029
2038
|
const joinAs2 = q(as);
|
|
2030
2039
|
const onConditions = whereToSql(
|
|
2031
|
-
|
|
2040
|
+
joinedQuery,
|
|
2032
2041
|
queryData,
|
|
2033
2042
|
values,
|
|
2034
2043
|
quotedAs,
|
|
@@ -2324,9 +2333,9 @@ const whereHandlers = {
|
|
|
2324
2333
|
const item = value;
|
|
2325
2334
|
const leftColumn = quoteFullColumn(
|
|
2326
2335
|
item.on[0],
|
|
2327
|
-
|
|
2336
|
+
getJoinItemSource(item.joinTo)
|
|
2328
2337
|
);
|
|
2329
|
-
const joinTo =
|
|
2338
|
+
const joinTo = getJoinItemSource(item.joinFrom);
|
|
2330
2339
|
const [op, rightColumn] = item.on.length === 2 ? ["=", quoteFullColumn(item.on[1], joinTo)] : [item.on[1], quoteFullColumn(item.on[2], joinTo)];
|
|
2331
2340
|
ands.push(`${prefix}${leftColumn} ${op} ${rightColumn}`);
|
|
2332
2341
|
}
|
|
@@ -2352,6 +2361,9 @@ const whereHandlers = {
|
|
|
2352
2361
|
});
|
|
2353
2362
|
}
|
|
2354
2363
|
};
|
|
2364
|
+
const getJoinItemSource = (joinItem) => {
|
|
2365
|
+
return typeof joinItem === "string" ? q(joinItem) : q(getQueryAs(joinItem));
|
|
2366
|
+
};
|
|
2355
2367
|
const pushIn = (ands, prefix, quotedAs, values, arg) => {
|
|
2356
2368
|
let value;
|
|
2357
2369
|
if (Array.isArray(arg.values)) {
|
|
@@ -2434,6 +2446,23 @@ const aggregateToSql = (model, values, item, quotedAs) => {
|
|
|
2434
2446
|
const relationQueryKey = Symbol("relationQuery");
|
|
2435
2447
|
const isRequiredRelationKey = Symbol("isRequiredRelation");
|
|
2436
2448
|
|
|
2449
|
+
class PormError extends Error {
|
|
2450
|
+
}
|
|
2451
|
+
class NotFoundError extends PormError {
|
|
2452
|
+
constructor(message = "Record is not found") {
|
|
2453
|
+
super(message);
|
|
2454
|
+
}
|
|
2455
|
+
}
|
|
2456
|
+
class MoreThanOneRowError extends PormError {
|
|
2457
|
+
}
|
|
2458
|
+
class PormInternalError extends Error {
|
|
2459
|
+
}
|
|
2460
|
+
class UnhandledTypeError extends PormInternalError {
|
|
2461
|
+
constructor(value) {
|
|
2462
|
+
super(`Unhandled type: ${JSON.stringify(value)} received`);
|
|
2463
|
+
}
|
|
2464
|
+
}
|
|
2465
|
+
|
|
2437
2466
|
const jsonColumnOrMethodToSql = (column, values, quotedAs) => {
|
|
2438
2467
|
return typeof column === "string" ? quoteFullColumn(column, quotedAs) : jsonToSql(column, values, quotedAs);
|
|
2439
2468
|
};
|
|
@@ -2478,7 +2507,7 @@ const selectToSql = (model, query, values, quotedAs) => {
|
|
|
2478
2507
|
if (query.select) {
|
|
2479
2508
|
const list = [];
|
|
2480
2509
|
query.select.forEach((item) => {
|
|
2481
|
-
var _a2, _b;
|
|
2510
|
+
var _a2, _b, _c;
|
|
2482
2511
|
if (typeof item === "string") {
|
|
2483
2512
|
list.push(
|
|
2484
2513
|
item === "*" ? ((_a2 = query.join) == null ? void 0 : _a2.length) ? `${quotedAs}.*` : "*" : quoteFullColumn(item, quotedAs)
|
|
@@ -2488,8 +2517,35 @@ const selectToSql = (model, query, values, quotedAs) => {
|
|
|
2488
2517
|
const as = q(getQueryAs(relationQuery));
|
|
2489
2518
|
relationQuery._as(relationQuery.query[relationQueryKey]);
|
|
2490
2519
|
const { returnType } = relationQuery.query;
|
|
2491
|
-
|
|
2492
|
-
|
|
2520
|
+
switch (returnType) {
|
|
2521
|
+
case "all":
|
|
2522
|
+
case "one":
|
|
2523
|
+
case "oneOrThrow":
|
|
2524
|
+
relationQuery = relationQuery._json();
|
|
2525
|
+
break;
|
|
2526
|
+
case "pluck": {
|
|
2527
|
+
const first = (_c = relationQuery.query.select) == null ? void 0 : _c[0];
|
|
2528
|
+
if (!first)
|
|
2529
|
+
throw new PormInternalError(`Nothing was selected for pluck`);
|
|
2530
|
+
const selection = selectToSql(
|
|
2531
|
+
relationQuery.__model,
|
|
2532
|
+
relationQuery.query,
|
|
2533
|
+
values,
|
|
2534
|
+
q(getQueryAs(relationQuery))
|
|
2535
|
+
);
|
|
2536
|
+
relationQuery.query.select = [
|
|
2537
|
+
raw(`COALESCE(json_agg(${selection}), '[]')`)
|
|
2538
|
+
];
|
|
2539
|
+
break;
|
|
2540
|
+
}
|
|
2541
|
+
case "rows":
|
|
2542
|
+
case "value":
|
|
2543
|
+
case "valueOrThrow":
|
|
2544
|
+
case "rowCount":
|
|
2545
|
+
case "void":
|
|
2546
|
+
break;
|
|
2547
|
+
default:
|
|
2548
|
+
throw new UnhandledTypeError(returnType);
|
|
2493
2549
|
}
|
|
2494
2550
|
list.push(`(${relationQuery.toSql(values).text}) AS ${as}`);
|
|
2495
2551
|
} else {
|
|
@@ -3096,14 +3152,6 @@ const setQueryObjectValue = (q, object, key, value) => {
|
|
|
3096
3152
|
return q;
|
|
3097
3153
|
};
|
|
3098
3154
|
|
|
3099
|
-
class NotFoundError extends Error {
|
|
3100
|
-
constructor(message = "Record is not found") {
|
|
3101
|
-
super(message);
|
|
3102
|
-
}
|
|
3103
|
-
}
|
|
3104
|
-
class MoreThanOneRowError extends Error {
|
|
3105
|
-
}
|
|
3106
|
-
|
|
3107
3155
|
const addParserForRawExpression = (q, key, raw) => {
|
|
3108
3156
|
var _a;
|
|
3109
3157
|
const parser = (_a = raw.__column) == null ? void 0 : _a.parseFn;
|
|
@@ -3932,6 +3980,9 @@ class WhereQueryBuilder extends Where {
|
|
|
3932
3980
|
this.relations = {};
|
|
3933
3981
|
this.withData = {};
|
|
3934
3982
|
this.__model = this;
|
|
3983
|
+
if (tableAlias) {
|
|
3984
|
+
this.query.as = tableAlias;
|
|
3985
|
+
}
|
|
3935
3986
|
}
|
|
3936
3987
|
clone() {
|
|
3937
3988
|
const cloned = Object.create(this.__model);
|
|
@@ -5446,5 +5497,5 @@ const createDb = (_a) => {
|
|
|
5446
5497
|
|
|
5447
5498
|
const defaultsKey = Symbol("defaults");
|
|
5448
5499
|
|
|
5449
|
-
export { Adapter, Aggregate, ArrayColumn, ArrayOfColumnsObjects, BigIntColumn, BigSerialColumn, BitColumn, BitVaryingColumn, BooleanColumn, BoxColumn, ByteaColumn, CharColumn, CidrColumn, CircleColumn, Clear, ColumnInfoMethods, ColumnType, ColumnsObject, DateBaseColumn, DateColumn, DateTimeBaseClass, DateTimeWithTimeZoneBaseClass, Db, DecimalBaseColumn, DecimalColumn, Delete, DoublePrecisionColumn, EMPTY_OBJECT, EnumColumn, For, From, Having, InetColumn, Insert, IntegerBaseColumn, IntegerColumn, IntervalColumn, JSONColumn, JSONTextColumn, Join, Json, LimitedTextBaseColumn, LineColumn, LsegColumn, MacAddr8Column, MacAddrColumn, MoneyColumn, MoreThanOneRowError, NotFoundError, NumberAsStringBaseColumn, NumberBaseColumn, OnConflictQueryBuilder, OnQueryBuilder, Operators, PathColumn, PointColumn, PolygonColumn, QueryCallbacks, QueryGet, QueryLog, QueryMethods, QueryUpsert, RealColumn, Select, SerialColumn, SmallIntColumn, SmallSerialColumn, TableSchema, TextBaseColumn, TextColumn, Then, TimeColumn, TimeWithTimeZoneColumn, TimestampColumn, TimestampWithTimeZoneColumn, Transaction, TransactionAdapter, TsQueryColumn, TsVectorColumn, UUIDColumn, Union, Update, VarCharColumn, Where, WhereQueryBuilder, With, XMLColumn, addOr, addOrNot, addParserForRawExpression, addParserForSelectItem, addParserToQuery, addQueryOn, addQueryOrOn, addWhere, addWhereIn, addWhereNot, aggregate1FunctionNames, applyMixins, array, arrayToEnum, columnTypes, utils as columnUtils, constructType, createDb, createOperator, defaultsKey, discriminatedUnion, emptyObject, enumType, getClonedQueryData, getColumnTypes, getQueryAs, getQueryParsers, getRaw, getTableData, getValidEnumValues, getValueKey, handleResult, instanceOf, intersection, isRaw, isRequiredRelationKey, joinTruthy, jsonTypes, lazy, literal, logColors, logParamToLogObject, map, nativeEnum, newTableData, noop, notNullable, notNullish, nullable, nullish, object, optional, parseRecord, parseResult, processSelectArg, pushQueryArray, pushQueryOn, pushQueryOrOn, pushQueryValue, queryKeysOfNotSimpleQuery, queryMethodByReturnType, quote, raw, record, relationQueryKey, removeFromQuery, required, resetTableData, scalarTypes, set, setQueryObjectValue, toArray, toSql, tuple, union };
|
|
5500
|
+
export { Adapter, Aggregate, ArrayColumn, ArrayOfColumnsObjects, BigIntColumn, BigSerialColumn, BitColumn, BitVaryingColumn, BooleanColumn, BoxColumn, ByteaColumn, CharColumn, CidrColumn, CircleColumn, Clear, ColumnInfoMethods, ColumnType, ColumnsObject, DateBaseColumn, DateColumn, DateTimeBaseClass, DateTimeWithTimeZoneBaseClass, Db, DecimalBaseColumn, DecimalColumn, Delete, DoublePrecisionColumn, EMPTY_OBJECT, EnumColumn, For, From, Having, InetColumn, Insert, IntegerBaseColumn, IntegerColumn, IntervalColumn, JSONColumn, JSONTextColumn, Join, Json, LimitedTextBaseColumn, LineColumn, LsegColumn, MacAddr8Column, MacAddrColumn, MoneyColumn, MoreThanOneRowError, NotFoundError, NumberAsStringBaseColumn, NumberBaseColumn, OnConflictQueryBuilder, OnQueryBuilder, Operators, PathColumn, PluckResultColumnType, PointColumn, PolygonColumn, PormError, PormInternalError, QueryCallbacks, QueryGet, QueryLog, QueryMethods, QueryUpsert, RealColumn, Select, SerialColumn, SmallIntColumn, SmallSerialColumn, TableSchema, TextBaseColumn, TextColumn, Then, TimeColumn, TimeWithTimeZoneColumn, TimestampColumn, TimestampWithTimeZoneColumn, Transaction, TransactionAdapter, TsQueryColumn, TsVectorColumn, UUIDColumn, UnhandledTypeError, Union, Update, VarCharColumn, Where, WhereQueryBuilder, With, XMLColumn, addOr, addOrNot, addParserForRawExpression, addParserForSelectItem, addParserToQuery, addQueryOn, addQueryOrOn, addWhere, addWhereIn, addWhereNot, aggregate1FunctionNames, applyMixins, array, arrayToEnum, columnTypes, utils as columnUtils, constructType, createDb, createOperator, defaultsKey, discriminatedUnion, emptyObject, enumType, getClonedQueryData, getColumnTypes, getQueryAs, getQueryParsers, getRaw, getTableData, getValidEnumValues, getValueKey, handleResult, instanceOf, intersection, isRaw, isRequiredRelationKey, joinTruthy, jsonTypes, lazy, literal, logColors, logParamToLogObject, map, nativeEnum, newTableData, noop, notNullable, notNullish, nullable, nullish, object, optional, parseRecord, parseResult, processSelectArg, pushQueryArray, pushQueryOn, pushQueryOrOn, pushQueryValue, queryKeysOfNotSimpleQuery, queryMethodByReturnType, quote, raw, record, relationQueryKey, removeFromQuery, required, resetTableData, scalarTypes, set, setQueryObjectValue, toArray, toSql, tuple, union };
|
|
5450
5501
|
//# sourceMappingURL=index.esm.js.map
|