pqb 0.10.19 → 0.10.22

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 CHANGED
@@ -1,6 +1,7 @@
1
1
  import * as orchid_core from 'orchid-core';
2
2
  import { EmptyObject, RawExpression, ColumnTypeBase, MaybeArray, QueryResultRow, AdapterBase, QueryInput, ColumnsShapeBase, StringKey, ColumnOutput, NullableColumn, QueryInternal, QueryMetaBase, EmptyTuple, ColumnTypesBase, DbBase, ThenResult, ColumnShapeOutput, DefaultSelectColumns, SetOptional, Spread, CoalesceString, QueryBaseCommon, QueryCommon, ColumnDataBase, BaseOperators, PrimaryKeyColumn, HiddenColumn, ValidationContext, MessageParam, BaseNumberData, Code, numberTypeMethods, BaseStringData, DateColumnData, dateTypeMethods, JSONTypeAny, record, ArrayMethodsData, arrayMethods, name } from 'orchid-core';
3
3
  import { PoolConfig, Pool, PoolClient } from 'pg';
4
+ import { inspect } from 'util';
4
5
 
5
6
  declare type BaseRelation = {
6
7
  type: string;
@@ -261,14 +262,18 @@ declare type QueryArraysResult<R extends any[] = any[]> = {
261
262
  name: string;
262
263
  }[];
263
264
  };
264
- declare type AdapterOptions = Omit<PoolConfig, 'types' | 'connectionString'> & {
265
- types?: TypeParsers;
265
+ declare type AdapterConfig = Omit<PoolConfig, 'types' | 'connectionString'> & {
266
+ schema?: string;
266
267
  databaseURL?: string;
267
268
  };
269
+ declare type AdapterOptions = AdapterConfig & {
270
+ types?: TypeParsers;
271
+ };
268
272
  declare class Adapter implements AdapterBase {
269
273
  types: TypeParsers;
270
274
  pool: Pool;
271
275
  config: PoolConfig;
276
+ schema?: string;
272
277
  constructor({ types, ...config }: AdapterOptions);
273
278
  query<T extends QueryResultRow = any>(query: QueryInput, types?: TypeParsers): Promise<QueryResult<T>>;
274
279
  arrays<R extends any[] = any[]>(query: QueryInput, types?: TypeParsers): Promise<QueryArraysResult<R>>;
@@ -729,14 +734,23 @@ declare class OnQueryBuilder<S extends QueryBase = QueryBase, J extends QueryBas
729
734
  _onJsonPathEquals<T extends this>(this: T, ...args: OnJsonPathEqualsArgs<T>): T;
730
735
  }
731
736
 
732
- declare class PormError extends Error {
737
+ declare abstract class OrchidOrmError extends Error {
738
+ abstract query: Query;
739
+ }
740
+ declare class NotFoundError extends OrchidOrmError {
741
+ query: Query;
742
+ constructor(query: Query, message?: string);
743
+ }
744
+ declare class OrchidOrmInternalError extends Error {
745
+ query: Query;
746
+ constructor(query: Query, message?: string);
733
747
  }
734
748
  declare type QueryErrorName = 'parseComplete' | 'bindComplete' | 'closeComplete' | 'noData' | 'portalSuspended' | 'replicationStart' | 'emptyQuery' | 'copyDone' | 'copyData' | 'rowDescription' | 'parameterDescription' | 'parameterStatus' | 'backendKeyData' | 'notification' | 'readyForQuery' | 'commandComplete' | 'dataRow' | 'copyInResponse' | 'copyOutResponse' | 'authenticationOk' | 'authenticationMD5Password' | 'authenticationCleartextPassword' | 'authenticationSASL' | 'authenticationSASLContinue' | 'authenticationSASLFinal' | 'error' | 'notice';
735
- declare class QueryError<T extends {
749
+ declare abstract class QueryError<T extends {
736
750
  shape: ColumnsShape;
737
751
  } = {
738
752
  shape: ColumnsShape;
739
- }> extends Error {
753
+ }> extends OrchidOrmInternalError {
740
754
  message: string;
741
755
  name: QueryErrorName;
742
756
  stack: string | undefined;
@@ -762,15 +776,12 @@ declare class QueryError<T extends {
762
776
  };
763
777
  get columns(): T["shape"] extends infer T_1 ? { [K in keyof T_1]?: true | undefined; } : never;
764
778
  }
765
- declare class NotFoundError extends PormError {
766
- constructor(message?: string);
767
- }
768
- declare class MoreThanOneRowError extends PormError {
769
- }
770
- declare class OrchidInternalError extends Error {
779
+ declare class MoreThanOneRowError extends OrchidOrmInternalError {
780
+ constructor(query: Query, message?: string);
771
781
  }
772
- declare class UnhandledTypeError extends OrchidInternalError {
773
- constructor(value: never);
782
+ declare class UnhandledTypeError extends OrchidOrmInternalError {
783
+ query: Query;
784
+ constructor(query: Query, value: never);
774
785
  }
775
786
 
776
787
  declare type NoPrimaryKeyOption = 'error' | 'warning' | 'ignore';
@@ -819,6 +830,7 @@ declare class Db<Table extends string | undefined = undefined, Shape extends Col
819
830
  whereQueryBuilder: typeof WhereQueryBuilder;
820
831
  onQueryBuilder: typeof OnQueryBuilder;
821
832
  constructor(adapter: Adapter, queryBuilder: Db, table: Table, shape: Shape, columnTypes: CT, options: DbTableOptions);
833
+ [inspect.custom](): string;
822
834
  }
823
835
  declare type DbResult<CT extends ColumnTypesBase> = Db<string, Record<string, never>, Query['relations'], ColumnTypesBase extends CT ? DefaultColumnTypes : CT> & {
824
836
  <Table extends string, Shape extends ColumnsShape = ColumnsShape>(table: Table, shape?: ((t: ColumnTypesBase extends CT ? DefaultColumnTypes : CT) => Shape) | Shape, options?: DbTableOptions): Db<Table, Shape>;
@@ -3596,4 +3608,4 @@ declare const setQueryObjectValue: <T extends {
3596
3608
  query: QueryData;
3597
3609
  }>(q: T, object: string, key: string, value: unknown) => T;
3598
3610
 
3599
- export { Adapter, AdapterOptions, AddQueryJoinedTable, AddQuerySelect, AddQueryWith, AfterCallback, Aggregate, Aggregate1ArgumentTypes, AggregateArg, AggregateItem, AggregateItemArg, AggregateItemOptions, AggregateOptions, AliasOrTable, ArrayColumn, ArrayData, ArrayOfColumnsObjects, BaseRelation, BeforeCallback, BelongsToRelation, BigIntColumn, BigSerialColumn, BitColumn, BitVaryingColumn, BooleanColumn, BooleanExpression, BoxColumn, ByteaColumn, CharColumn, CidrColumn, CircleColumn, CitextColumn, Clear, ClearStatement, ColumnData, ColumnFromDbParams, ColumnInfo, ColumnInfoMethods, ColumnInfoQueryData, ColumnNameOfTable, ColumnOperators, ColumnParser, ColumnType, ColumnTypes, ColumnsObject, ColumnsParsers, ColumnsShape, CommonQueryData, CopyOptions, CopyQueryData, Create, CreateCtx, CreateData, CreateMethodsNames, CustomTypeColumn, DateBaseColumn, DateColumn, DateTimeBaseClass, DateTimeWithTimeZoneBaseClass, Db, DbOptions, DbResult, DbTableOptions, DecimalBaseColumn, DecimalColumn, DefaultColumnTypes, Delete, DeleteMethodsNames, DeleteQueryData, DomainColumn, DoublePrecisionColumn, DropMode, EnumColumn, Expression, ExpressionOfType, ExpressionOutput, For, ForeignKey, ForeignKeyAction, ForeignKeyMatch, ForeignKeyOptions, ForeignKeyTable, ForeignKeyTableWithColumns, From, FromArgs, FromResult, GetArg, HasAndBelongsToManyRelation, HasManyRelation, HasOneRelation, Having, HavingArg, HavingItem, IndexColumnOptions, IndexOptions, InetColumn, InsertQueryData, IntegerBaseColumn, IntegerColumn, IntervalColumn, JSONColumn, JSONTextColumn, JSONTypes, Join, JoinArgs, JoinCallback, JoinFirstArg, JoinItem, JoinResult, JoinedTablesBase, Json, JsonItem, LimitedTextBaseColumn, LineColumn, LsegColumn, MacAddr8Column, MacAddrColumn, MergeQuery, MergeQueryMethods, MoneyColumn, MoreThanOneRowError, NoPrimaryKeyOption, NotFoundError, NumberAsStringBaseColumn, NumberBaseColumn, NumberColumn, NumberColumnData, NumberExpression, OnConflictItem, OnConflictMergeUpdate, OnConflictQueryBuilder, OnQueryBuilder, Operators, OrchidInternalError, OrderArg, OrderItem, PathColumn, PluckResultColumnType, PointColumn, PolygonColumn, PormError, Query, QueryArraysResult, QueryBase, QueryCallbacks, QueryData, QueryError, QueryErrorName, QueryGet, QueryLog, QueryLogObject, QueryLogOptions, QueryLogger, QueryMethods, QueryResult, QueryReturnType, QueryReturnsAll, QueryThen, QueryUpsertOrCreate, QueryWithTable, RawMethods, RealColumn, Relation, RelationQuery, RelationQueryBase, RelationQueryData, RelationsBase, Select, SelectAgg, SelectArg, SelectFunctionItem, SelectItem, SelectQueryData, Selectable, SelectableBase, SelectableFromShape, SerialColumn, SerialColumnData, SetQueryJoinedTables, SetQueryReturns, SetQueryReturnsAll, SetQueryReturnsColumnInfo, SetQueryReturnsOne, SetQueryReturnsOneOptional, SetQueryReturnsPluck, SetQueryReturnsRowCount, SetQueryReturnsRows, SetQueryReturnsValue, SetQueryReturnsValueOptional, SetQueryReturnsVoid, SetQueryTableAlias, SetQueryWindows, SetQueryWith, SingleColumnIndexOptions, SmallIntColumn, SmallSerialColumn, SortDir, Sql, StringColumn, StringExpression, TableData, TextBaseColumn, TextColumn, TextColumnData, Then, TimeColumn, TimeInterval, TimeWithTimeZoneColumn, TimestampColumn, TimestampWithTimeZoneColumn, ToSqlCtx, ToSqlOptions, Transaction, TransactionAdapter, TruncateQueryData, TsQueryColumn, TsVectorColumn, TypeParsers, UUIDColumn, UnhandledTypeError, Union, UnionArg, UnionItem, UnionKind, UnknownColumn, Update, UpdateCtx, UpdateData, UpdateQueryData, UpdateQueryDataItem, UpdateQueryDataObject, UpdatedAtDataInjector, UpsertData, UpsertResult, UpsertThis, VarCharColumn, VirtualColumn, 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, addWhere, addWhereIn, addWhereNot, aggregate1FunctionNames, anyShape, checkIfASimpleQuery, cloneQueryArrays, columnCheckToCode, columnCode, columnForeignKeysToCode, columnIndexesToCode, columnTypes, utils as columnUtils, columnsByType, columnsShapeToCode, createDb, defaultsKey, foreignKeyArgsToCode, foreignKeyArgumentToCode, foreignKeyToCode, getClonedQueryData, getColumnTypes, getQueryAs, getRaw, getShapeFromSelect, getTableData, getValueKey, handleResult, indexToCode, instantiateColumn, isQueryReturnsAll, isRequiredRelationKey, jsonTypes, logColors, logParamToLogObject, makeRegexToFindInSql, makeSql, newTableData, parseRecord, parseResult, primaryKeyToCode, processSelectArg, pushQueryArray, pushQueryOn, pushQueryOrOn, pushQueryValue, queryMethodByReturnType, queryTypeWithLimitOne, quote, quoteString, relationQueryKey, resetTableData, setQueryObjectValue, toSql, toSqlCacheKey };
3611
+ export { Adapter, AdapterConfig, AdapterOptions, AddQueryJoinedTable, AddQuerySelect, AddQueryWith, AfterCallback, Aggregate, Aggregate1ArgumentTypes, AggregateArg, AggregateItem, AggregateItemArg, AggregateItemOptions, AggregateOptions, AliasOrTable, ArrayColumn, ArrayData, ArrayOfColumnsObjects, BaseRelation, BeforeCallback, BelongsToRelation, BigIntColumn, BigSerialColumn, BitColumn, BitVaryingColumn, BooleanColumn, BooleanExpression, BoxColumn, ByteaColumn, CharColumn, CidrColumn, CircleColumn, CitextColumn, Clear, ClearStatement, ColumnData, ColumnFromDbParams, ColumnInfo, ColumnInfoMethods, ColumnInfoQueryData, ColumnNameOfTable, ColumnOperators, ColumnParser, ColumnType, ColumnTypes, ColumnsObject, ColumnsParsers, ColumnsShape, CommonQueryData, CopyOptions, CopyQueryData, Create, CreateCtx, CreateData, CreateMethodsNames, CustomTypeColumn, DateBaseColumn, DateColumn, DateTimeBaseClass, DateTimeWithTimeZoneBaseClass, Db, DbOptions, DbResult, DbTableOptions, DecimalBaseColumn, DecimalColumn, DefaultColumnTypes, Delete, DeleteMethodsNames, DeleteQueryData, DomainColumn, DoublePrecisionColumn, DropMode, EnumColumn, Expression, ExpressionOfType, ExpressionOutput, For, ForeignKey, ForeignKeyAction, ForeignKeyMatch, ForeignKeyOptions, ForeignKeyTable, ForeignKeyTableWithColumns, From, FromArgs, FromResult, GetArg, HasAndBelongsToManyRelation, HasManyRelation, HasOneRelation, Having, HavingArg, HavingItem, IndexColumnOptions, IndexOptions, InetColumn, InsertQueryData, IntegerBaseColumn, IntegerColumn, IntervalColumn, JSONColumn, JSONTextColumn, JSONTypes, Join, JoinArgs, JoinCallback, JoinFirstArg, JoinItem, JoinResult, JoinedTablesBase, Json, JsonItem, LimitedTextBaseColumn, LineColumn, LsegColumn, MacAddr8Column, MacAddrColumn, MergeQuery, MergeQueryMethods, MoneyColumn, MoreThanOneRowError, NoPrimaryKeyOption, NotFoundError, NumberAsStringBaseColumn, NumberBaseColumn, NumberColumn, NumberColumnData, NumberExpression, OnConflictItem, OnConflictMergeUpdate, OnConflictQueryBuilder, OnQueryBuilder, Operators, OrchidOrmError, OrchidOrmInternalError, OrderArg, OrderItem, PathColumn, PluckResultColumnType, PointColumn, PolygonColumn, Query, QueryArraysResult, QueryBase, QueryCallbacks, QueryData, QueryError, QueryErrorName, QueryGet, QueryLog, QueryLogObject, QueryLogOptions, QueryLogger, QueryMethods, QueryResult, QueryReturnType, QueryReturnsAll, QueryThen, QueryUpsertOrCreate, QueryWithTable, RawMethods, RealColumn, Relation, RelationQuery, RelationQueryBase, RelationQueryData, RelationsBase, Select, SelectAgg, SelectArg, SelectFunctionItem, SelectItem, SelectQueryData, Selectable, SelectableBase, SelectableFromShape, SerialColumn, SerialColumnData, SetQueryJoinedTables, SetQueryReturns, SetQueryReturnsAll, SetQueryReturnsColumnInfo, SetQueryReturnsOne, SetQueryReturnsOneOptional, SetQueryReturnsPluck, SetQueryReturnsRowCount, SetQueryReturnsRows, SetQueryReturnsValue, SetQueryReturnsValueOptional, SetQueryReturnsVoid, SetQueryTableAlias, SetQueryWindows, SetQueryWith, SingleColumnIndexOptions, SmallIntColumn, SmallSerialColumn, SortDir, Sql, StringColumn, StringExpression, TableData, TextBaseColumn, TextColumn, TextColumnData, Then, TimeColumn, TimeInterval, TimeWithTimeZoneColumn, TimestampColumn, TimestampWithTimeZoneColumn, ToSqlCtx, ToSqlOptions, Transaction, TransactionAdapter, TruncateQueryData, TsQueryColumn, TsVectorColumn, TypeParsers, UUIDColumn, UnhandledTypeError, Union, UnionArg, UnionItem, UnionKind, UnknownColumn, Update, UpdateCtx, UpdateData, UpdateQueryData, UpdateQueryDataItem, UpdateQueryDataObject, UpdatedAtDataInjector, UpsertData, UpsertResult, UpsertThis, VarCharColumn, VirtualColumn, 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, addWhere, addWhereIn, addWhereNot, aggregate1FunctionNames, anyShape, checkIfASimpleQuery, cloneQueryArrays, columnCheckToCode, columnCode, columnForeignKeysToCode, columnIndexesToCode, columnTypes, utils as columnUtils, columnsByType, columnsShapeToCode, createDb, defaultsKey, foreignKeyArgsToCode, foreignKeyArgumentToCode, foreignKeyToCode, getClonedQueryData, getColumnTypes, getQueryAs, getRaw, getShapeFromSelect, getTableData, getValueKey, handleResult, indexToCode, instantiateColumn, isQueryReturnsAll, isRequiredRelationKey, jsonTypes, logColors, logParamToLogObject, makeRegexToFindInSql, makeSql, newTableData, parseRecord, parseResult, primaryKeyToCode, processSelectArg, pushQueryArray, pushQueryOn, pushQueryOrOn, pushQueryValue, queryMethodByReturnType, queryTypeWithLimitOne, quote, quoteString, relationQueryKey, resetTableData, setQueryObjectValue, toSql, toSqlCacheKey };
package/dist/index.js CHANGED
@@ -4,6 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var orchidCore = require('orchid-core');
6
6
  var pg = require('pg');
7
+ var util = require('util');
7
8
 
8
9
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
9
10
 
@@ -2066,9 +2067,21 @@ const aggregateToSql = (ctx, table, item, quotedAs) => {
2066
2067
  return sql.join("");
2067
2068
  };
2068
2069
 
2069
- class PormError extends Error {
2070
+ class OrchidOrmError extends Error {
2070
2071
  }
2071
- class QueryError extends Error {
2072
+ class NotFoundError extends OrchidOrmError {
2073
+ constructor(query, message = "Record is not found") {
2074
+ super(message);
2075
+ this.query = query;
2076
+ }
2077
+ }
2078
+ class OrchidOrmInternalError extends Error {
2079
+ constructor(query, message) {
2080
+ super(message);
2081
+ this.query = query;
2082
+ }
2083
+ }
2084
+ class QueryError extends OrchidOrmInternalError {
2072
2085
  get isUnique() {
2073
2086
  return this.code === "23505";
2074
2087
  }
@@ -2089,18 +2102,15 @@ class QueryError extends Error {
2089
2102
  return this.columnsCache = columns;
2090
2103
  }
2091
2104
  }
2092
- class NotFoundError extends PormError {
2093
- constructor(message = "Record is not found") {
2094
- super(message);
2105
+ class MoreThanOneRowError extends OrchidOrmInternalError {
2106
+ constructor(query, message) {
2107
+ super(query, message);
2095
2108
  }
2096
2109
  }
2097
- class MoreThanOneRowError extends PormError {
2098
- }
2099
- class OrchidInternalError extends Error {
2100
- }
2101
- class UnhandledTypeError extends OrchidInternalError {
2102
- constructor(value) {
2103
- super(`Unhandled type: ${JSON.stringify(value)} received`);
2110
+ class UnhandledTypeError extends OrchidOrmInternalError {
2111
+ constructor(query, value) {
2112
+ super(query, `Unhandled type: ${JSON.stringify(value)} received`);
2113
+ this.query = query;
2104
2114
  }
2105
2115
  }
2106
2116
 
@@ -2226,7 +2236,10 @@ const pushSubQuerySql = (query, as, values, list) => {
2226
2236
  const { select } = query.query;
2227
2237
  const first = select == null ? void 0 : select[0];
2228
2238
  if (!select || !first) {
2229
- throw new OrchidInternalError(`Nothing was selected for pluck`);
2239
+ throw new OrchidOrmInternalError(
2240
+ query,
2241
+ `Nothing was selected for pluck`
2242
+ );
2230
2243
  }
2231
2244
  const cloned = query.clone();
2232
2245
  cloned.query.select = [{ selectAs: { c: first } }];
@@ -2241,7 +2254,7 @@ const pushSubQuerySql = (query, as, values, list) => {
2241
2254
  case "void":
2242
2255
  break;
2243
2256
  default:
2244
- throw new UnhandledTypeError(returnType);
2257
+ throw new UnhandledTypeError(query, returnType);
2245
2258
  }
2246
2259
  let subQuerySql = `(${makeSql(query, { values }).text})`;
2247
2260
  const { coalesceValue } = query.query;
@@ -3370,36 +3383,45 @@ class Adapter {
3370
3383
  constructor(_a) {
3371
3384
  var _b = _a, { types: types2 = defaultTypeParsers } = _b, config = __objRest$1(_b, ["types"]);
3372
3385
  this.types = types2;
3386
+ let schema = config.schema;
3373
3387
  if (config.databaseURL) {
3374
- config.connectionString = config.databaseURL;
3375
3388
  const url = new URL(config.databaseURL);
3376
- if (url.searchParams.get("ssl") === "true") {
3389
+ const ssl = url.searchParams.get("ssl");
3390
+ if (ssl === "false") {
3391
+ url.searchParams.delete("ssl");
3392
+ } else if (!config.ssl && ssl === "true") {
3377
3393
  config.ssl = true;
3378
3394
  }
3379
- url.searchParams.delete("ssl");
3395
+ if (!schema) {
3396
+ schema = url.searchParams.get("schema") || void 0;
3397
+ }
3380
3398
  config.databaseURL = url.toString();
3399
+ config.connectionString = config.databaseURL;
3381
3400
  }
3401
+ if (schema)
3402
+ this.schema = schema === "public" ? void 0 : schema;
3382
3403
  this.config = config;
3383
3404
  this.pool = new pg__default["default"].Pool(config);
3384
3405
  }
3385
- async query(query, types2) {
3386
- return performQuery(this.pool, query, types2);
3406
+ query(query, types2) {
3407
+ return performQuery(this.pool, query, types2, this.schema);
3387
3408
  }
3388
- async arrays(query, types2) {
3389
- return performQueryArrays(this.pool, query, types2);
3409
+ arrays(query, types2) {
3410
+ return performQuery(this.pool, query, types2, this.schema, "array");
3390
3411
  }
3391
3412
  async transaction(cb) {
3392
3413
  const client = await this.pool.connect();
3393
3414
  try {
3394
- await performQuery(client, { text: "BEGIN" }, this.types);
3415
+ await setSearchPath(client, this.schema);
3416
+ await performQueryOnClient(client, { text: "BEGIN" }, this.types);
3395
3417
  let result;
3396
3418
  try {
3397
3419
  result = await cb(new TransactionAdapter(this, client, this.types));
3398
3420
  } catch (err) {
3399
- await performQuery(client, { text: "ROLLBACK" }, this.types);
3421
+ await performQueryOnClient(client, { text: "ROLLBACK" }, this.types);
3400
3422
  throw err;
3401
3423
  }
3402
- await performQuery(client, { text: "COMMIT" }, this.types);
3424
+ await performQueryOnClient(client, { text: "COMMIT" }, this.types);
3403
3425
  return result;
3404
3426
  } finally {
3405
3427
  client.release();
@@ -3416,28 +3438,34 @@ const defaultTypesConfig = {
3416
3438
  return defaultTypeParsers[id] || returnArg;
3417
3439
  }
3418
3440
  };
3419
- const performQuery = (pool, query, types2) => {
3420
- return pool.query({
3421
- text: typeof query === "string" ? query : query.text,
3422
- values: typeof query === "string" ? void 0 : query.values,
3423
- types: types2 ? {
3424
- getTypeParser(id) {
3425
- return types2[id] || returnArg;
3426
- }
3427
- } : defaultTypesConfig
3428
- });
3441
+ const setSearchPath = (client, schema) => {
3442
+ if (client.connection.schema !== schema) {
3443
+ client.connection.schema = schema;
3444
+ return client.query(`SET search_path = ${schema || "public"}`);
3445
+ }
3446
+ return;
3447
+ };
3448
+ const performQuery = async (pool, query, types2, schema, rowMode) => {
3449
+ const client = await pool.connect();
3450
+ try {
3451
+ await setSearchPath(client, schema);
3452
+ return await performQueryOnClient(client, query, types2, rowMode);
3453
+ } finally {
3454
+ client.release();
3455
+ }
3429
3456
  };
3430
- const performQueryArrays = (pool, query, types2) => {
3431
- return pool.query({
3457
+ const performQueryOnClient = (client, query, types2, rowMode) => {
3458
+ const params = {
3432
3459
  text: typeof query === "string" ? query : query.text,
3433
3460
  values: typeof query === "string" ? void 0 : query.values,
3434
- rowMode: "array",
3461
+ rowMode,
3435
3462
  types: types2 ? {
3436
3463
  getTypeParser(id) {
3437
3464
  return types2[id] || returnArg;
3438
3465
  }
3439
3466
  } : defaultTypesConfig
3440
- });
3467
+ };
3468
+ return client.query(params);
3441
3469
  };
3442
3470
  class TransactionAdapter {
3443
3471
  constructor(adapter, client, types2) {
@@ -3448,10 +3476,10 @@ class TransactionAdapter {
3448
3476
  this.config = adapter.config;
3449
3477
  }
3450
3478
  async query(query, types2) {
3451
- return await performQuery(this.client, query, types2);
3479
+ return await performQueryOnClient(this.client, query, types2);
3452
3480
  }
3453
3481
  async arrays(query, types2) {
3454
- return await performQueryArrays(this.client, query, types2);
3482
+ return await performQueryOnClient(this.client, query, types2, "array");
3455
3483
  }
3456
3484
  async transaction(cb) {
3457
3485
  return await cb(this);
@@ -3633,7 +3661,7 @@ const parseResult = (q, returnType = "all", result, isSubQuery) => {
3633
3661
  switch (returnType) {
3634
3662
  case "all": {
3635
3663
  if (q.query.throwOnNotFound && result.rows.length === 0)
3636
- throw new NotFoundError();
3664
+ throw new NotFoundError(q);
3637
3665
  const { parsers } = q.query;
3638
3666
  return parsers ? result.rows.map((row) => parseRecord(parsers, row)) : result.rows;
3639
3667
  }
@@ -3647,7 +3675,7 @@ const parseResult = (q, returnType = "all", result, isSubQuery) => {
3647
3675
  case "oneOrThrow": {
3648
3676
  const row = result.rows[0];
3649
3677
  if (!row)
3650
- throw new NotFoundError();
3678
+ throw new NotFoundError(q);
3651
3679
  const { parsers } = q.query;
3652
3680
  return parsers ? parseRecord(parsers, row) : row;
3653
3681
  }
@@ -3678,12 +3706,12 @@ const parseResult = (q, returnType = "all", result, isSubQuery) => {
3678
3706
  case "valueOrThrow": {
3679
3707
  const value = (_b = result.rows[0]) == null ? void 0 : _b[0];
3680
3708
  if (value === void 0)
3681
- throw new NotFoundError();
3709
+ throw new NotFoundError(q);
3682
3710
  return parseValue(value, q);
3683
3711
  }
3684
3712
  case "rowCount": {
3685
3713
  if (q.query.throwOnNotFound && result.rowCount === 0) {
3686
- throw new NotFoundError();
3714
+ throw new NotFoundError(q);
3687
3715
  }
3688
3716
  return result.rowCount;
3689
3717
  }
@@ -3767,7 +3795,7 @@ const addParserForSelectItem = (q, as, key, arg) => {
3767
3795
  if (parsers) {
3768
3796
  addParserToQuery(q.query, key, (item) => {
3769
3797
  const t = rel.query.returnType || "all";
3770
- subQueryResult.rows = t === "all" || t === "rows" || t === "pluck" ? item : [item];
3798
+ subQueryResult.rows = t === "value" || t === "valueOrThrow" ? [[item]] : t === "one" || t === "oneOrThrow" ? [item] : item;
3771
3799
  return parseResult(rel, t, subQueryResult, true);
3772
3800
  });
3773
3801
  }
@@ -4665,7 +4693,7 @@ const insert = (self, {
4665
4693
  const { handleResult } = q.query;
4666
4694
  q.query.handleResult = async (q2, r, i) => {
4667
4695
  if (r.rowCount === 0) {
4668
- throw new NotFoundError();
4696
+ throw new NotFoundError(q2);
4669
4697
  }
4670
4698
  return await handleResult(q2, r, i);
4671
4699
  };
@@ -5731,6 +5759,7 @@ class QueryUpsertOrCreate {
5731
5759
  return q.create(data);
5732
5760
  } else if (queryResult.rowCount > 1) {
5733
5761
  throw new MoreThanOneRowError(
5762
+ q,
5734
5763
  `Only one row was expected to find, found ${queryResult.rowCount} rows.`
5735
5764
  );
5736
5765
  }
@@ -6094,9 +6123,16 @@ class Db {
6094
6123
  } : toSql;
6095
6124
  this.relations = {};
6096
6125
  modifyQuery == null ? void 0 : modifyQuery.forEach((cb) => cb(this));
6126
+ const self = this;
6097
6127
  this.error = class extends QueryError {
6128
+ constructor(message) {
6129
+ super(self, message);
6130
+ }
6098
6131
  };
6099
6132
  }
6133
+ [util.inspect.custom]() {
6134
+ return `QueryObject<${this.table}>`;
6135
+ }
6100
6136
  }
6101
6137
  orchidCore.applyMixins(Db, [QueryMethods]);
6102
6138
  Db.prototype.constructor = Db;
@@ -6211,12 +6247,12 @@ exports.NumberBaseColumn = NumberBaseColumn;
6211
6247
  exports.OnConflictQueryBuilder = OnConflictQueryBuilder;
6212
6248
  exports.OnQueryBuilder = OnQueryBuilder;
6213
6249
  exports.Operators = Operators;
6214
- exports.OrchidInternalError = OrchidInternalError;
6250
+ exports.OrchidOrmError = OrchidOrmError;
6251
+ exports.OrchidOrmInternalError = OrchidOrmInternalError;
6215
6252
  exports.PathColumn = PathColumn;
6216
6253
  exports.PluckResultColumnType = PluckResultColumnType;
6217
6254
  exports.PointColumn = PointColumn;
6218
6255
  exports.PolygonColumn = PolygonColumn;
6219
- exports.PormError = PormError;
6220
6256
  exports.QueryCallbacks = QueryCallbacks;
6221
6257
  exports.QueryError = QueryError;
6222
6258
  exports.QueryGet = QueryGet;