pqb 0.65.2 → 0.65.3

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.
@@ -1,2 +1,2 @@
1
- import { Adapter, AdapterClass, AdapterConfigBase, AdapterParams, AfterCommitStandaloneHook, AfterHook, ArrayColumn, ArrayColumnValue, ArrayData, AsyncState, BaseNumberData, BigIntColumn, BigSerialColumn, BitColumn, BitVaryingColumn, BooleanColumn, BoxColumn, ByteaColumn, CidrColumn, CircleColumn, CitextColumn, Code, Codes, Column, ColumnFromDbParams, ColumnSchemaConfig, ColumnSchemaGetterColumns, ColumnSchemaGetterTableClass, ColumnToCodeCtx, ColumnTypeSchemaArg, ColumnsByType, ColumnsShape, ComputedColumnsFromOptions, ComputedOptionsConfig, ComputedOptionsFactory, CreateCtx, CreateData, CreateManyMethodsNames, CreateMethodsNames, CreateSelf, CustomTypeColumn, DateColumn, DateColumnData, DbDomainArg, DbExtension, DbOptions, DbResult, DbSharedOptions, DbSqlMethod, DbStructureDomainsMap, DbTableOptionScopes, DbTableOptions, DecimalColumn, DecimalColumnData, DefaultColumnTypes, DefaultPrivileges, DefaultSchemaConfig, DeleteMethodsNames, DomainColumn, DoublePrecisionColumn, DriverAdapter, DynamicRawSQL, EmptyObject, EmptyTuple, EnumColumn, Expression, FromArg, FromResult, GeneratorIgnore, HookSelectValue, InetColumn, IntegerColumn, IntervalColumn, IsQuery, IsolationLevel, JSONColumn, JSONTextColumn, JoinQueryMethod, JoinedShapes, LineColumn, LsegColumn, MacAddr8Column, MacAddrColumn, MapTableScopesOption, MaybeArray, MaybePromise, MergeQuery, MoneyColumn, NoPrimaryKeyOption, NonUniqDataItem, NumberColumnData, Operators, OperatorsArray, OperatorsJson, OperatorsOrdinalText, Ord, PathColumn, PickQueryInputType, PickQueryInternal, PickQueryQ, PickQueryRelations, PickQuerySelectableRelations, PickQueryShape, PointColumn, PolygonColumn, PostgisGeographyPointColumn, QueryAfterHook, QueryArraysResult, QueryBeforeActionHook, QueryBeforeHook, QueryData, QueryHasWhere, QueryHookUtils, QueryHooks, QueryInternal, QueryLogObject, QueryLogOptions, QueryLogger, QueryManyTake, QueryManyTakeOptional, QueryOrExpression, QueryResult, QueryResultRow, QueryReturnType, QuerySchema, QueryScopes, RawSql, RawSqlBase, RealColumn, RecordKeyTrue, RecordOptionalString, RecordString, RecordStringOrNumber, RecordUnknown, RelationConfigBase, RelationJoinQuery, RelationsBase, SearchWeight, SelectableFromShape, SerialColumn, SerialColumnData, ShallowSimplify, ShapeColumnPrimaryKeys, ShapeUniqueColumns, SingleSql, SingleSqlItem, SmallIntColumn, SmallSerialColumn, Sql, SqlFn, SqlSessionState, StorageOptions, StringColumn, StringData, TableData, TableDataFn, TableDataInput, TableDataItem, TableDataItemsUniqueColumnTuples, TableDataItemsUniqueColumns, TableDataItemsUniqueConstraints, TableDataMethods, TemplateLiteralArgs, TextColumn, TimeColumn, TimestampColumn, TimestampTZColumn, Timestamps, TransactionAdapterClass, TransactionArgs, TransactionOptions, TsQueryColumn, TsVectorColumn, UUIDColumn, UniqueConstraints, UniqueTableDataItem, UnknownColumn, UpdateData, UpsertData, UpsertThis, VarCharColumn, VirtualColumn, WhereArg, XMLColumn, _appendQuery, _clone, _createDbSqlMethod, _hookSelectColumns, _initQueryBuilder, _orCreate, _prependWith, _queryCreate, _queryCreateMany, _queryCreateManyFrom, _queryDefaults, _queryDelete, _queryFindBy, _queryFindByOptional, _queryHookAfterCreate, _queryHookAfterUpdate, _queryInsert, _queryInsertMany, _queryJoinOn, _queryRows, _querySelect, _queryTake, _queryTakeOptional, _queryUpdate, _queryUpdateOrThrow, _queryUpsert, _queryWhere, _queryWhereExists, _queryWhereIn, addCode, addTopCte, addTopCteSql, applyMixins, assignDbDataToColumn, backtickQuote, cloneQueryBaseUnscoped, codeToString, colors, columnsShapeToCode, constraintInnerToCode, consumeColumnName, deepCompare, defaultSchemaConfig, emptyArray, emptyObject, escapeForMigration, escapeString, excludeInnerToCode, exhaustive, getCallerFilePath, getClonedQueryData, getColumnBaseType, getColumnTypes, getFreeAlias, getFreeSetAlias, getImportPath, getPrimaryKeys, getQueryAs, getQuerySchema, getShapeFromSelect, getSqlText, getStackTrace, getSupportedDefaultPrivileges, indexInnerToCode, isExpression, isQueryReturnsAll, isRawSQL, logColors, logParamToLogObject, makeColumnNullable, makeColumnTypes, makeColumnsByType, makeConnectRetryConfig, noop, objectHasValues, omit, parseTableData, parseTableDataInput, pathToLog, pick, pluralize, prepareSubQueryForSql, primaryKeyInnerToCode, pushQueryOnForOuter, pushQueryValueImmutable, pushTableDataCode, quoteObjectKey, quoteTableWithSchema, raw, rawSqlToCode, referencesArgsToCode, returnArg, setColumnData, setColumnEncode, setColumnParse, setColumnParseNull, setCurrentColumnName, setDataValue, setDefaultLanguage, setFreeAlias, setQueryObjectValueImmutable, singleQuote, snakeCaseKey, tableDataMethods, toArray, toCamelCase, toPascalCase, toSnakeCase, wrapAdapterFnWithConnectRetry } from "./index.d.ts";
2
- export { type Adapter, AdapterClass, type AdapterConfigBase, type AdapterParams, type AfterCommitStandaloneHook, type AfterHook, ArrayColumn, type ArrayColumnValue, type ArrayData, type AsyncState, type BaseNumberData, BigIntColumn, BigSerialColumn, BitColumn, BitVaryingColumn, BooleanColumn, BoxColumn, ByteaColumn, CidrColumn, CircleColumn, CitextColumn, type Code, type Codes, Column, type ColumnFromDbParams, type ColumnSchemaConfig, type ColumnSchemaGetterColumns, type ColumnSchemaGetterTableClass, type ColumnToCodeCtx, type ColumnTypeSchemaArg, type ColumnsByType, type ColumnsShape, type ComputedColumnsFromOptions, type ComputedOptionsConfig, type ComputedOptionsFactory, type CreateCtx, type CreateData, type CreateManyMethodsNames, type CreateMethodsNames, type CreateSelf, CustomTypeColumn, DateColumn, type DateColumnData, type DbDomainArg, type DbExtension, type DbOptions, type DbResult, type DbSharedOptions, type DbSqlMethod, type DbStructureDomainsMap, type DbTableOptionScopes, type DbTableOptions, DecimalColumn, type DecimalColumnData, type DefaultColumnTypes, type DefaultPrivileges, type DefaultSchemaConfig, type DeleteMethodsNames, DomainColumn, DoublePrecisionColumn, type DriverAdapter, DynamicRawSQL, type EmptyObject, type EmptyTuple, EnumColumn, Expression, type FromArg, type FromResult, type GeneratorIgnore, type HookSelectValue, InetColumn, IntegerColumn, IntervalColumn, type IsQuery, type IsolationLevel, JSONColumn, JSONTextColumn, type JoinQueryMethod, type JoinedShapes, LineColumn, LsegColumn, MacAddr8Column, MacAddrColumn, type MapTableScopesOption, type MaybeArray, type MaybePromise, type MergeQuery, MoneyColumn, type NoPrimaryKeyOption, type NonUniqDataItem, type NumberColumnData, Operators, type OperatorsArray, type OperatorsJson, type OperatorsOrdinalText, type Ord, PathColumn, type PickQueryInputType, type PickQueryInternal, type PickQueryQ, type PickQueryRelations, type PickQuerySelectableRelations, type PickQueryShape, PointColumn, PolygonColumn, PostgisGeographyPointColumn, type QueryAfterHook, type QueryArraysResult, type QueryBeforeActionHook, type QueryBeforeHook, type QueryData, type QueryHasWhere, QueryHookUtils, QueryHooks, type QueryInternal, type QueryLogObject, type QueryLogOptions, type QueryLogger, type QueryManyTake, type QueryManyTakeOptional, type QueryOrExpression, type QueryResult, type QueryResultRow, type QueryReturnType, type QuerySchema, type QueryScopes, RawSql, type RawSqlBase, RealColumn, type RecordKeyTrue, type RecordOptionalString, type RecordString, type RecordStringOrNumber, type RecordUnknown, type RelationConfigBase, type RelationJoinQuery, type RelationsBase, type SearchWeight, type SelectableFromShape, SerialColumn, type SerialColumnData, type ShallowSimplify, type ShapeColumnPrimaryKeys, type ShapeUniqueColumns, type SingleSql, type SingleSqlItem, SmallIntColumn, SmallSerialColumn, type Sql, type SqlFn, type SqlSessionState, type StorageOptions, StringColumn, type StringData, type TableData, type TableDataFn, type TableDataInput, type TableDataItem, type TableDataItemsUniqueColumnTuples, type TableDataItemsUniqueColumns, type TableDataItemsUniqueConstraints, type TableDataMethods, type TemplateLiteralArgs, TextColumn, TimeColumn, TimestampColumn, TimestampTZColumn, type Timestamps, TransactionAdapterClass, type TransactionArgs, type TransactionOptions, TsQueryColumn, TsVectorColumn, UUIDColumn, type UniqueConstraints, type UniqueTableDataItem, UnknownColumn, type UpdateData, type UpsertData, type UpsertThis, VarCharColumn, VirtualColumn, type WhereArg, XMLColumn, _appendQuery, _clone, _createDbSqlMethod, _hookSelectColumns, _initQueryBuilder, _orCreate, _prependWith, _queryCreate, _queryCreateMany, _queryCreateManyFrom, _queryDefaults, _queryDelete, _queryFindBy, _queryFindByOptional, _queryHookAfterCreate, _queryHookAfterUpdate, _queryInsert, _queryInsertMany, _queryJoinOn, _queryRows, _querySelect, _queryTake, _queryTakeOptional, _queryUpdate, _queryUpdateOrThrow, _queryUpsert, _queryWhere, _queryWhereExists, _queryWhereIn, addCode, addTopCte, addTopCteSql, applyMixins, assignDbDataToColumn, backtickQuote, cloneQueryBaseUnscoped, codeToString, colors, columnsShapeToCode, constraintInnerToCode, consumeColumnName, deepCompare, defaultSchemaConfig, emptyArray, emptyObject, escapeForMigration, escapeString, excludeInnerToCode, exhaustive, getCallerFilePath, getClonedQueryData, getColumnBaseType, getColumnTypes, getFreeAlias, getFreeSetAlias, getImportPath, getPrimaryKeys, getQueryAs, getQuerySchema, getShapeFromSelect, getSqlText, getStackTrace, getSupportedDefaultPrivileges, indexInnerToCode, isExpression, isQueryReturnsAll, isRawSQL, logColors, logParamToLogObject, makeColumnNullable, makeColumnTypes, makeColumnsByType, makeConnectRetryConfig, noop, objectHasValues, omit, parseTableData, parseTableDataInput, pathToLog, pick, pluralize, prepareSubQueryForSql, primaryKeyInnerToCode, pushQueryOnForOuter, pushQueryValueImmutable, pushTableDataCode, quoteObjectKey, quoteTableWithSchema, raw, rawSqlToCode, referencesArgsToCode, returnArg, setColumnData, setColumnEncode, setColumnParse, setColumnParseNull, setCurrentColumnName, setDataValue, setDefaultLanguage, setFreeAlias, setQueryObjectValueImmutable, singleQuote, snakeCaseKey, tableDataMethods, toArray, toCamelCase, toPascalCase, toSnakeCase, wrapAdapterFnWithConnectRetry };
1
+ import { Adapter, AdapterClass, AdapterConfigBase, AdapterParams, AfterCommitStandaloneHook, AfterHook, ArrayColumn, ArrayColumnValue, ArrayData, AsyncState, BaseNumberData, BigIntColumn, BigSerialColumn, BitColumn, BitVaryingColumn, BooleanColumn, BoxColumn, ByteaColumn, CidrColumn, CircleColumn, CitextColumn, Code, Codes, Column, ColumnFromDbParams, ColumnSchemaConfig, ColumnSchemaGetterColumns, ColumnSchemaGetterTableClass, ColumnToCodeCtx, ColumnTypeSchemaArg, ColumnsByType, ColumnsShape, ComputedColumnsFromOptions, ComputedOptionsConfig, ComputedOptionsFactory, CreateCtx, CreateData, CreateManyMethodsNames, CreateMethodsNames, CreateSelf, CustomTypeColumn, DateColumn, DateColumnData, DbDomainArg, DbExtension, DbOptions, DbResult, DbSharedOptions, DbSqlMethod, DbStructureDomainsMap, DbTableOptionScopes, DbTableOptions, DecimalColumn, DecimalColumnData, DefaultColumnTypes, DefaultPrivileges, DefaultSchemaConfig, DeleteMethodsNames, DomainColumn, DoublePrecisionColumn, DriverAdapter, DynamicRawSQL, EmptyObject, EmptyTuple, EnumColumn, Expression, FromArg, FromResult, GeneratorIgnore, HookSelectValue, InetColumn, IntegerColumn, IntervalColumn, IsQuery, IsolationLevel, JSONColumn, JSONTextColumn, JoinQueryMethod, JoinedShapes, LineColumn, LsegColumn, MacAddr8Column, MacAddrColumn, MapTableScopesOption, MaybeArray, MaybePromise, MergeQuery, MoneyColumn, NoPrimaryKeyOption, NonUniqDataItem, NumberColumnData, Operators, OperatorsArray, OperatorsJson, OperatorsOrdinalText, Ord, PathColumn, PickQueryInputType, PickQueryInternal, PickQueryQ, PickQueryRelations, PickQuerySelectableRelations, PickQueryShape, PointColumn, PolygonColumn, PostgisGeographyPointColumn, QueryAfterHook, QueryArraysResult, QueryBeforeActionHook, QueryBeforeHook, QueryData, QueryHasWhere, QueryHookUtils, QueryHooks, QueryInternal, QueryLogObject, QueryLogOptions, QueryLogger, QueryManyTake, QueryManyTakeOptional, QueryOrExpression, QueryResult, QueryResultRow, QueryReturnType, QuerySchema, QueryScopes, RawSql, RawSqlBase, RealColumn, RecordKeyTrue, RecordOptionalString, RecordString, RecordStringOrNumber, RecordUnknown, RelationConfigBase, RelationJoinQuery, RelationsBase, SearchWeight, SelectableFromShape, SerialColumn, SerialColumnData, ShallowSimplify, ShapeColumnPrimaryKeys, ShapeUniqueColumns, SingleSql, SingleSqlItem, SmallIntColumn, SmallSerialColumn, Sql, SqlFn, SqlSessionState, StorageOptions, StringColumn, StringData, TableData, TableDataFn, TableDataInput, TableDataItem, TableDataItemsUniqueColumnTuples, TableDataItemsUniqueColumns, TableDataItemsUniqueConstraints, TableDataMethods, TemplateLiteralArgs, TextColumn, TimeColumn, TimestampColumn, TimestampTZColumn, Timestamps, TransactionAdapterClass, TransactionOptions, TsQueryColumn, TsVectorColumn, UUIDColumn, UniqueConstraints, UniqueTableDataItem, UnknownColumn, UpdateData, UpsertData, UpsertThis, VarCharColumn, VirtualColumn, WhereArg, XMLColumn, _appendQuery, _clone, _createDbSqlMethod, _hookSelectColumns, _initQueryBuilder, _orCreate, _prependWith, _queryCreate, _queryCreateMany, _queryCreateManyFrom, _queryDefaults, _queryDelete, _queryFindBy, _queryFindByOptional, _queryHookAfterCreate, _queryHookAfterUpdate, _queryInsert, _queryInsertMany, _queryJoinOn, _queryRows, _querySelect, _queryTake, _queryTakeOptional, _queryUpdate, _queryUpdateOrThrow, _queryUpsert, _queryWhere, _queryWhereExists, _queryWhereIn, addCode, addTopCte, addTopCteSql, applyMixins, assignDbDataToColumn, backtickQuote, cloneQueryBaseUnscoped, codeToString, colors, columnsShapeToCode, constraintInnerToCode, consumeColumnName, deepCompare, defaultSchemaConfig, emptyArray, emptyObject, escapeForMigration, escapeString, excludeInnerToCode, exhaustive, getCallerFilePath, getClonedQueryData, getColumnBaseType, getColumnTypes, getFreeAlias, getFreeSetAlias, getImportPath, getPrimaryKeys, getQueryAs, getQuerySchema, getShapeFromSelect, getSqlText, getStackTrace, getSupportedDefaultPrivileges, indexInnerToCode, isExpression, isQueryReturnsAll, isRawSQL, logColors, logParamToLogObject, makeColumnNullable, makeColumnTypes, makeColumnsByType, makeConnectRetryConfig, noop, objectHasValues, omit, parseTableData, parseTableDataInput, pathToLog, pick, pluralize, prepareSubQueryForSql, primaryKeyInnerToCode, pushQueryOnForOuter, pushQueryValueImmutable, pushTableDataCode, quoteObjectKey, quoteTableWithSchema, raw, rawSqlToCode, referencesArgsToCode, returnArg, setColumnData, setColumnEncode, setColumnParse, setColumnParseNull, setCurrentColumnName, setDataValue, setDefaultLanguage, setFreeAlias, setQueryObjectValueImmutable, singleQuote, snakeCaseKey, tableDataMethods, toArray, toCamelCase, toPascalCase, toSnakeCase, wrapAdapterFnWithConnectRetry } from "./index.d.ts";
2
+ export { type Adapter, AdapterClass, type AdapterConfigBase, type AdapterParams, type AfterCommitStandaloneHook, type AfterHook, ArrayColumn, type ArrayColumnValue, type ArrayData, type AsyncState, type BaseNumberData, BigIntColumn, BigSerialColumn, BitColumn, BitVaryingColumn, BooleanColumn, BoxColumn, ByteaColumn, CidrColumn, CircleColumn, CitextColumn, type Code, type Codes, Column, type ColumnFromDbParams, type ColumnSchemaConfig, type ColumnSchemaGetterColumns, type ColumnSchemaGetterTableClass, type ColumnToCodeCtx, type ColumnTypeSchemaArg, type ColumnsByType, type ColumnsShape, type ComputedColumnsFromOptions, type ComputedOptionsConfig, type ComputedOptionsFactory, type CreateCtx, type CreateData, type CreateManyMethodsNames, type CreateMethodsNames, type CreateSelf, CustomTypeColumn, DateColumn, type DateColumnData, type DbDomainArg, type DbExtension, type DbOptions, type DbResult, type DbSharedOptions, type DbSqlMethod, type DbStructureDomainsMap, type DbTableOptionScopes, type DbTableOptions, DecimalColumn, type DecimalColumnData, type DefaultColumnTypes, type DefaultPrivileges, type DefaultSchemaConfig, type DeleteMethodsNames, DomainColumn, DoublePrecisionColumn, type DriverAdapter, DynamicRawSQL, type EmptyObject, type EmptyTuple, EnumColumn, Expression, type FromArg, type FromResult, type GeneratorIgnore, type HookSelectValue, InetColumn, IntegerColumn, IntervalColumn, type IsQuery, type IsolationLevel, JSONColumn, JSONTextColumn, type JoinQueryMethod, type JoinedShapes, LineColumn, LsegColumn, MacAddr8Column, MacAddrColumn, type MapTableScopesOption, type MaybeArray, type MaybePromise, type MergeQuery, MoneyColumn, type NoPrimaryKeyOption, type NonUniqDataItem, type NumberColumnData, Operators, type OperatorsArray, type OperatorsJson, type OperatorsOrdinalText, type Ord, PathColumn, type PickQueryInputType, type PickQueryInternal, type PickQueryQ, type PickQueryRelations, type PickQuerySelectableRelations, type PickQueryShape, PointColumn, PolygonColumn, PostgisGeographyPointColumn, type QueryAfterHook, type QueryArraysResult, type QueryBeforeActionHook, type QueryBeforeHook, type QueryData, type QueryHasWhere, QueryHookUtils, QueryHooks, type QueryInternal, type QueryLogObject, type QueryLogOptions, type QueryLogger, type QueryManyTake, type QueryManyTakeOptional, type QueryOrExpression, type QueryResult, type QueryResultRow, type QueryReturnType, type QuerySchema, type QueryScopes, RawSql, type RawSqlBase, RealColumn, type RecordKeyTrue, type RecordOptionalString, type RecordString, type RecordStringOrNumber, type RecordUnknown, type RelationConfigBase, type RelationJoinQuery, type RelationsBase, type SearchWeight, type SelectableFromShape, SerialColumn, type SerialColumnData, type ShallowSimplify, type ShapeColumnPrimaryKeys, type ShapeUniqueColumns, type SingleSql, type SingleSqlItem, SmallIntColumn, SmallSerialColumn, type Sql, type SqlFn, type SqlSessionState, type StorageOptions, StringColumn, type StringData, type TableData, type TableDataFn, type TableDataInput, type TableDataItem, type TableDataItemsUniqueColumnTuples, type TableDataItemsUniqueColumns, type TableDataItemsUniqueConstraints, type TableDataMethods, type TemplateLiteralArgs, TextColumn, TimeColumn, TimestampColumn, TimestampTZColumn, type Timestamps, TransactionAdapterClass, type TransactionOptions, TsQueryColumn, TsVectorColumn, UUIDColumn, type UniqueConstraints, type UniqueTableDataItem, UnknownColumn, type UpdateData, type UpsertData, type UpsertThis, VarCharColumn, VirtualColumn, type WhereArg, XMLColumn, _appendQuery, _clone, _createDbSqlMethod, _hookSelectColumns, _initQueryBuilder, _orCreate, _prependWith, _queryCreate, _queryCreateMany, _queryCreateManyFrom, _queryDefaults, _queryDelete, _queryFindBy, _queryFindByOptional, _queryHookAfterCreate, _queryHookAfterUpdate, _queryInsert, _queryInsertMany, _queryJoinOn, _queryRows, _querySelect, _queryTake, _queryTakeOptional, _queryUpdate, _queryUpdateOrThrow, _queryUpsert, _queryWhere, _queryWhereExists, _queryWhereIn, addCode, addTopCte, addTopCteSql, applyMixins, assignDbDataToColumn, backtickQuote, cloneQueryBaseUnscoped, codeToString, colors, columnsShapeToCode, constraintInnerToCode, consumeColumnName, deepCompare, defaultSchemaConfig, emptyArray, emptyObject, escapeForMigration, escapeString, excludeInnerToCode, exhaustive, getCallerFilePath, getClonedQueryData, getColumnBaseType, getColumnTypes, getFreeAlias, getFreeSetAlias, getImportPath, getPrimaryKeys, getQueryAs, getQuerySchema, getShapeFromSelect, getSqlText, getStackTrace, getSupportedDefaultPrivileges, indexInnerToCode, isExpression, isQueryReturnsAll, isRawSQL, logColors, logParamToLogObject, makeColumnNullable, makeColumnTypes, makeColumnsByType, makeConnectRetryConfig, noop, objectHasValues, omit, parseTableData, parseTableDataInput, pathToLog, pick, pluralize, prepareSubQueryForSql, primaryKeyInnerToCode, pushQueryOnForOuter, pushQueryValueImmutable, pushTableDataCode, quoteObjectKey, quoteTableWithSchema, raw, rawSqlToCode, referencesArgsToCode, returnArg, setColumnData, setColumnEncode, setColumnParse, setColumnParseNull, setCurrentColumnName, setDataValue, setDefaultLanguage, setFreeAlias, setQueryObjectValueImmutable, singleQuote, snakeCaseKey, tableDataMethods, toArray, toCamelCase, toPascalCase, toSnakeCase, wrapAdapterFnWithConnectRetry };
@@ -48,6 +48,31 @@ for (const key in types.builtins) {
48
48
  ].forEach((id) => {
49
49
  delete defaultTypeParsers[id];
50
50
  });
51
+ const queryClient = (client, text, values, startingSavepoint, releasingSavepoint, arraysMode) => {
52
+ const params = {
53
+ text,
54
+ values,
55
+ rowMode: arraysMode ? "array" : void 0,
56
+ types: defaultTypesConfig
57
+ };
58
+ const { __lock } = client;
59
+ if (__lock) {
60
+ let resolve;
61
+ client.__lock = new Promise((res) => {
62
+ resolve = () => {
63
+ res();
64
+ };
65
+ });
66
+ return __lock.then(() => {
67
+ const promise = startingSavepoint || releasingSavepoint ? performQueryOnClientWithSavepoint(client, params, startingSavepoint, releasingSavepoint) : client.query(params);
68
+ promise.then(resolve, resolve);
69
+ return promise;
70
+ });
71
+ }
72
+ const promise = startingSavepoint || releasingSavepoint ? performQueryOnClientWithSavepoint(client, params, startingSavepoint, releasingSavepoint) : client.query(params);
73
+ client.__lock = promise.catch(pqb_internal.noop);
74
+ return promise;
75
+ };
51
76
  const NodePostgresAdapter = {
52
77
  manualPool: true,
53
78
  errorClass: pg.DatabaseError,
@@ -74,37 +99,13 @@ const NodePostgresAdapter = {
74
99
  },
75
100
  configure(config) {
76
101
  if (config.databaseURL) config.connectionString = config.databaseURL;
77
- if (config.locals?.search_path) config = {
102
+ if (config.setConfig?.search_path) config = {
78
103
  ...config,
79
- options: `${config.options ? `${config.options} ` : ""}-c search_path="${config.locals.search_path}"`
104
+ options: `${config.options ? `${config.options} ` : ""}-c search_path="${config.setConfig.search_path}"`
80
105
  };
81
106
  return new pg.default.Pool(config);
82
107
  },
83
- queryClient(client, text, values, startingSavepoint, releasingSavepoint, arraysMode) {
84
- const params = {
85
- text,
86
- values,
87
- rowMode: arraysMode ? "array" : void 0,
88
- types: defaultTypesConfig
89
- };
90
- const { __lock } = client;
91
- if (__lock) {
92
- let resolve;
93
- client.__lock = new Promise((res) => {
94
- resolve = () => {
95
- res();
96
- };
97
- });
98
- return __lock.then(() => {
99
- const promise = startingSavepoint || releasingSavepoint ? performQueryOnClientWithSavepoint(client, params, startingSavepoint, releasingSavepoint) : client.query(params);
100
- promise.then(resolve, resolve);
101
- return promise;
102
- });
103
- }
104
- const promise = startingSavepoint || releasingSavepoint ? performQueryOnClientWithSavepoint(client, params, startingSavepoint, releasingSavepoint) : client.query(params);
105
- client.__lock = promise.catch(pqb_internal.noop);
106
- return promise;
107
- },
108
+ queryClient,
108
109
  borrow(pool) {
109
110
  return pool.connect();
110
111
  },
@@ -114,15 +115,15 @@ const NodePostgresAdapter = {
114
115
  async begin(pool, cb, options) {
115
116
  const client = await pool.connect();
116
117
  try {
117
- await this.queryClient(client, options ? "BEGIN " + options : "BEGIN");
118
+ await queryClient(client, options ? "BEGIN " + options : "BEGIN");
118
119
  let result;
119
120
  try {
120
121
  result = await cb(client);
121
122
  } catch (err) {
122
- await this.queryClient(client, "ROLLBACK");
123
+ await queryClient(client, "ROLLBACK");
123
124
  throw err;
124
125
  }
125
- await this.queryClient(client, "COMMIT");
126
+ await queryClient(client, "COMMIT");
126
127
  return result;
127
128
  } finally {
128
129
  client.release();
@@ -1 +1 @@
1
- {"version":3,"file":"node-postgres.js","names":["AdapterClass","DatabaseError","noop","returnArg"],"sources":["../src/adapters/node-postgres.ts"],"sourcesContent":["import pg, { DatabaseError, Pool, PoolClient, PoolConfig } from 'pg';\nimport {\n AdapterConfigBase,\n ColumnSchemaConfig,\n noop,\n QueryResult,\n QueryResultRow,\n RecordUnknown,\n returnArg,\n DefaultColumnTypes,\n DefaultSchemaConfig,\n DbOptions,\n DbResult,\n QuerySchema,\n AdapterClass,\n DriverAdapter,\n} from 'pqb/internal';\nimport { createDbWithAdapter } from 'pqb';\n\nexport const createDb = <\n SchemaConfig extends ColumnSchemaConfig = DefaultSchemaConfig,\n ColumnTypes = DefaultColumnTypes<SchemaConfig>,\n>({\n log,\n ...options\n}: DbOptions<SchemaConfig, ColumnTypes> &\n Omit<NodePostgresAdapterOptions, 'log'>): DbResult<ColumnTypes> => {\n return createDbWithAdapter({\n ...options,\n log,\n adapter: new AdapterClass({\n driverAdapter: NodePostgresAdapter,\n config: options,\n }),\n });\n};\n\nconst { types } = pg;\n\nexport interface TypeParsers {\n [K: number]: (input: string) => unknown;\n}\n\nconst defaultTypeParsers: TypeParsers = {};\n\nfor (const key in types.builtins) {\n const id = types.builtins[key as keyof typeof types.builtins];\n defaultTypeParsers[id] = types.getTypeParser(id);\n}\n\n[\n types.builtins.DATE,\n types.builtins.TIMESTAMP,\n types.builtins.TIMESTAMPTZ,\n types.builtins.CIRCLE,\n types.builtins.BYTEA,\n].forEach((id) => {\n delete defaultTypeParsers[id];\n});\n\nexport interface AdapterConfig\n extends\n Omit<AdapterConfigBase, 'searchPath' | 'ssl'>,\n Omit<PoolConfig, 'types' | 'connectionString'> {\n databaseURL?: string;\n}\n\nexport interface NodePostgresAdapterOptions extends Omit<AdapterConfig, 'log'> {\n schema?: QuerySchema;\n}\n\nexport const NodePostgresAdapter: DriverAdapter = {\n manualPool: true,\n\n errorClass: DatabaseError,\n errorFields: {\n message: 'message',\n length: 'length',\n name: 'name',\n severity: 'severity',\n code: 'code',\n detail: 'detail',\n hint: 'hint',\n position: 'position',\n internalPosition: 'internalPosition',\n internalQuery: 'internalQuery',\n where: 'where',\n schema: 'schema',\n table: 'table',\n column: 'column',\n dataType: 'dataType',\n constraint: 'constraint',\n file: 'file',\n line: 'line',\n routine: 'routine',\n },\n\n configure(config: NodePostgresAdapterOptions): pg.Pool {\n if (config.databaseURL) {\n (config as PoolConfig).connectionString = config.databaseURL;\n }\n\n if (config.locals?.search_path) {\n config = {\n ...config,\n options: `${config.options ? `${config.options} ` : ''}-c search_path=\"${config.locals.search_path}\"`,\n };\n }\n\n return new pg.Pool(config);\n },\n\n queryClient<T extends QueryResultRow = QueryResultRow>(\n client: PoolClient,\n text: string,\n values?: unknown[],\n // only has effect in a transaction\n startingSavepoint?: string,\n releasingSavepoint?: string,\n // SQL session state (role and setConfig) from async storage\n arraysMode?: boolean,\n ): Promise<QueryResult<T>> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const params: any = {\n text,\n values,\n rowMode: arraysMode ? 'array' : undefined,\n types: defaultTypesConfig,\n };\n\n // When using save points (it's in transaction), need to perform a single query at a time.\n // stating 1 then 2 then releasing 1 would fail.\n // Start 1, release 1, start 2, release 2, and so on.\n const { __lock } = client as unknown as { __lock?: Promise<unknown> };\n if (__lock) {\n let resolve: () => void | undefined;\n (client as unknown as RecordUnknown).__lock = new Promise<void>((res) => {\n resolve = () => {\n res();\n };\n });\n\n return __lock.then(() => {\n const promise =\n startingSavepoint || releasingSavepoint\n ? performQueryOnClientWithSavepoint(\n client,\n params,\n startingSavepoint,\n releasingSavepoint,\n )\n : client.query(params);\n promise.then(resolve, resolve);\n return promise;\n });\n }\n\n const promise =\n startingSavepoint || releasingSavepoint\n ? performQueryOnClientWithSavepoint(\n client,\n params,\n startingSavepoint,\n releasingSavepoint,\n )\n : client.query(params);\n\n (client as unknown as { __lock?: Promise<unknown> }).__lock =\n promise.catch(noop);\n\n return promise;\n },\n\n borrow(pool: Pool): Promise<PoolClient> {\n return pool.connect();\n },\n\n release(client: PoolClient): void {\n client.release();\n },\n\n async begin<DriverClient, Result>(\n pool: Pool,\n cb: (adapter: DriverClient) => Promise<Result>,\n options?: string,\n ): Promise<Result> {\n const client = await pool.connect();\n\n try {\n await this.queryClient(client, options ? 'BEGIN ' + options : 'BEGIN');\n\n let result;\n try {\n result = await cb(client as DriverClient);\n } catch (err) {\n await this.queryClient(client, 'ROLLBACK');\n throw err;\n }\n await this.queryClient(client, 'COMMIT');\n return result as Result;\n } finally {\n client.release();\n }\n },\n\n close(pool: Pool): Promise<void> {\n return pool.end();\n },\n};\n\nconst defaultTypesConfig = {\n getTypeParser(id: number) {\n return defaultTypeParsers[id] || returnArg;\n },\n};\n\nconst performQueryOnClientWithSavepoint = (\n client: PoolClient,\n params: unknown,\n startingSavepoint?: string,\n releasingSavepoint?: string,\n) => {\n let promise = startingSavepoint\n ? client\n .query(`SAVEPOINT \"${startingSavepoint}\"`)\n .then(() => client.query(params as never))\n : client.query(params as never);\n\n if (releasingSavepoint) {\n promise = promise.then(\n async (res) => {\n await client.query(`RELEASE SAVEPOINT \"${releasingSavepoint}\"`);\n return res;\n },\n async (err) => {\n await client.query(`ROLLBACK TO SAVEPOINT \"${releasingSavepoint}\"`);\n throw err;\n },\n );\n }\n\n return promise;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"node-postgres.js","names":["AdapterClass","noop","DatabaseError","returnArg"],"sources":["../src/adapters/node-postgres.ts"],"sourcesContent":["import pg, { DatabaseError, Pool, PoolClient, PoolConfig } from 'pg';\nimport {\n AdapterConfigBase,\n ColumnSchemaConfig,\n noop,\n QueryResult,\n QueryResultRow,\n RecordUnknown,\n returnArg,\n DefaultColumnTypes,\n DefaultSchemaConfig,\n DbOptions,\n DbResult,\n QuerySchema,\n AdapterClass,\n DriverAdapter,\n} from 'pqb/internal';\nimport { createDbWithAdapter } from 'pqb';\n\nexport const createDb = <\n SchemaConfig extends ColumnSchemaConfig = DefaultSchemaConfig,\n ColumnTypes = DefaultColumnTypes<SchemaConfig>,\n>({\n log,\n ...options\n}: DbOptions<SchemaConfig, ColumnTypes> &\n Omit<NodePostgresAdapterOptions, 'log'>): DbResult<ColumnTypes> => {\n return createDbWithAdapter({\n ...options,\n log,\n adapter: new AdapterClass({\n driverAdapter: NodePostgresAdapter,\n config: options,\n }),\n });\n};\n\nconst { types } = pg;\n\nexport interface TypeParsers {\n [K: number]: (input: string) => unknown;\n}\n\nconst defaultTypeParsers: TypeParsers = {};\n\nfor (const key in types.builtins) {\n const id = types.builtins[key as keyof typeof types.builtins];\n defaultTypeParsers[id] = types.getTypeParser(id);\n}\n\n[\n types.builtins.DATE,\n types.builtins.TIMESTAMP,\n types.builtins.TIMESTAMPTZ,\n types.builtins.CIRCLE,\n types.builtins.BYTEA,\n].forEach((id) => {\n delete defaultTypeParsers[id];\n});\n\nexport interface AdapterConfig\n extends\n Omit<AdapterConfigBase, 'searchPath' | 'ssl'>,\n Omit<PoolConfig, 'types' | 'connectionString'> {\n databaseURL?: string;\n}\n\nexport interface NodePostgresAdapterOptions extends Omit<AdapterConfig, 'log'> {\n schema?: QuerySchema;\n}\n\nconst queryClient = <T extends QueryResultRow = QueryResultRow>(\n client: PoolClient,\n text: string,\n values?: unknown[],\n // only has effect in a transaction\n startingSavepoint?: string,\n releasingSavepoint?: string,\n // SQL session state (role and setConfig) from async storage\n arraysMode?: boolean,\n): Promise<QueryResult<T>> => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const params: any = {\n text,\n values,\n rowMode: arraysMode ? 'array' : undefined,\n types: defaultTypesConfig,\n };\n\n // When using save points (it's in transaction), need to perform a single query at a time.\n // stating 1 then 2 then releasing 1 would fail.\n // Start 1, release 1, start 2, release 2, and so on.\n const { __lock } = client as unknown as { __lock?: Promise<unknown> };\n if (__lock) {\n let resolve: () => void | undefined;\n (client as unknown as RecordUnknown).__lock = new Promise<void>((res) => {\n resolve = () => {\n res();\n };\n });\n\n return __lock.then(() => {\n const promise =\n startingSavepoint || releasingSavepoint\n ? performQueryOnClientWithSavepoint(\n client,\n params,\n startingSavepoint,\n releasingSavepoint,\n )\n : client.query(params);\n promise.then(resolve, resolve);\n return promise;\n });\n }\n\n const promise =\n startingSavepoint || releasingSavepoint\n ? performQueryOnClientWithSavepoint(\n client,\n params,\n startingSavepoint,\n releasingSavepoint,\n )\n : client.query(params);\n\n (client as unknown as { __lock?: Promise<unknown> }).__lock =\n promise.catch(noop);\n\n return promise;\n};\n\nexport const NodePostgresAdapter: DriverAdapter = {\n manualPool: true,\n\n errorClass: DatabaseError,\n errorFields: {\n message: 'message',\n length: 'length',\n name: 'name',\n severity: 'severity',\n code: 'code',\n detail: 'detail',\n hint: 'hint',\n position: 'position',\n internalPosition: 'internalPosition',\n internalQuery: 'internalQuery',\n where: 'where',\n schema: 'schema',\n table: 'table',\n column: 'column',\n dataType: 'dataType',\n constraint: 'constraint',\n file: 'file',\n line: 'line',\n routine: 'routine',\n },\n\n configure(config: NodePostgresAdapterOptions): pg.Pool {\n if (config.databaseURL) {\n (config as PoolConfig).connectionString = config.databaseURL;\n }\n\n if (config.setConfig?.search_path) {\n config = {\n ...config,\n options: `${config.options ? `${config.options} ` : ''}-c search_path=\"${config.setConfig.search_path}\"`,\n };\n }\n\n return new pg.Pool(config);\n },\n\n queryClient,\n\n borrow(pool: Pool): Promise<PoolClient> {\n return pool.connect();\n },\n\n release(client: PoolClient): void {\n client.release();\n },\n\n async begin<DriverClient, Result>(\n pool: Pool,\n cb: (adapter: DriverClient) => Promise<Result>,\n options?: string,\n ): Promise<Result> {\n const client = await pool.connect();\n\n try {\n await queryClient(client, options ? 'BEGIN ' + options : 'BEGIN');\n\n let result;\n try {\n result = await cb(client as DriverClient);\n } catch (err) {\n await queryClient(client, 'ROLLBACK');\n throw err;\n }\n await queryClient(client, 'COMMIT');\n return result as Result;\n } finally {\n client.release();\n }\n },\n\n close(pool: Pool): Promise<void> {\n return pool.end();\n },\n};\n\nconst defaultTypesConfig = {\n getTypeParser(id: number) {\n return defaultTypeParsers[id] || returnArg;\n },\n};\n\nconst performQueryOnClientWithSavepoint = (\n client: PoolClient,\n params: unknown,\n startingSavepoint?: string,\n releasingSavepoint?: string,\n) => {\n let promise = startingSavepoint\n ? client\n .query(`SAVEPOINT \"${startingSavepoint}\"`)\n .then(() => client.query(params as never))\n : client.query(params as never);\n\n if (releasingSavepoint) {\n promise = promise.then(\n async (res) => {\n await client.query(`RELEASE SAVEPOINT \"${releasingSavepoint}\"`);\n return res;\n },\n async (err) => {\n await client.query(`ROLLBACK TO SAVEPOINT \"${releasingSavepoint}\"`);\n throw err;\n },\n );\n }\n\n return promise;\n};\n"],"mappings":"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"}
@@ -26,6 +26,31 @@ for (const key in types.builtins) {
26
26
  ].forEach((id) => {
27
27
  delete defaultTypeParsers[id];
28
28
  });
29
+ const queryClient = (client, text, values, startingSavepoint, releasingSavepoint, arraysMode) => {
30
+ const params = {
31
+ text,
32
+ values,
33
+ rowMode: arraysMode ? "array" : void 0,
34
+ types: defaultTypesConfig
35
+ };
36
+ const { __lock } = client;
37
+ if (__lock) {
38
+ let resolve;
39
+ client.__lock = new Promise((res) => {
40
+ resolve = () => {
41
+ res();
42
+ };
43
+ });
44
+ return __lock.then(() => {
45
+ const promise = startingSavepoint || releasingSavepoint ? performQueryOnClientWithSavepoint(client, params, startingSavepoint, releasingSavepoint) : client.query(params);
46
+ promise.then(resolve, resolve);
47
+ return promise;
48
+ });
49
+ }
50
+ const promise = startingSavepoint || releasingSavepoint ? performQueryOnClientWithSavepoint(client, params, startingSavepoint, releasingSavepoint) : client.query(params);
51
+ client.__lock = promise.catch(noop);
52
+ return promise;
53
+ };
29
54
  const NodePostgresAdapter = {
30
55
  manualPool: true,
31
56
  errorClass: DatabaseError,
@@ -52,37 +77,13 @@ const NodePostgresAdapter = {
52
77
  },
53
78
  configure(config) {
54
79
  if (config.databaseURL) config.connectionString = config.databaseURL;
55
- if (config.locals?.search_path) config = {
80
+ if (config.setConfig?.search_path) config = {
56
81
  ...config,
57
- options: `${config.options ? `${config.options} ` : ""}-c search_path="${config.locals.search_path}"`
82
+ options: `${config.options ? `${config.options} ` : ""}-c search_path="${config.setConfig.search_path}"`
58
83
  };
59
84
  return new pg.Pool(config);
60
85
  },
61
- queryClient(client, text, values, startingSavepoint, releasingSavepoint, arraysMode) {
62
- const params = {
63
- text,
64
- values,
65
- rowMode: arraysMode ? "array" : void 0,
66
- types: defaultTypesConfig
67
- };
68
- const { __lock } = client;
69
- if (__lock) {
70
- let resolve;
71
- client.__lock = new Promise((res) => {
72
- resolve = () => {
73
- res();
74
- };
75
- });
76
- return __lock.then(() => {
77
- const promise = startingSavepoint || releasingSavepoint ? performQueryOnClientWithSavepoint(client, params, startingSavepoint, releasingSavepoint) : client.query(params);
78
- promise.then(resolve, resolve);
79
- return promise;
80
- });
81
- }
82
- const promise = startingSavepoint || releasingSavepoint ? performQueryOnClientWithSavepoint(client, params, startingSavepoint, releasingSavepoint) : client.query(params);
83
- client.__lock = promise.catch(noop);
84
- return promise;
85
- },
86
+ queryClient,
86
87
  borrow(pool) {
87
88
  return pool.connect();
88
89
  },
@@ -92,15 +93,15 @@ const NodePostgresAdapter = {
92
93
  async begin(pool, cb, options) {
93
94
  const client = await pool.connect();
94
95
  try {
95
- await this.queryClient(client, options ? "BEGIN " + options : "BEGIN");
96
+ await queryClient(client, options ? "BEGIN " + options : "BEGIN");
96
97
  let result;
97
98
  try {
98
99
  result = await cb(client);
99
100
  } catch (err) {
100
- await this.queryClient(client, "ROLLBACK");
101
+ await queryClient(client, "ROLLBACK");
101
102
  throw err;
102
103
  }
103
- await this.queryClient(client, "COMMIT");
104
+ await queryClient(client, "COMMIT");
104
105
  return result;
105
106
  } finally {
106
107
  client.release();
@@ -1 +1 @@
1
- {"version":3,"file":"node-postgres.mjs","names":[],"sources":["../src/adapters/node-postgres.ts"],"sourcesContent":["import pg, { DatabaseError, Pool, PoolClient, PoolConfig } from 'pg';\nimport {\n AdapterConfigBase,\n ColumnSchemaConfig,\n noop,\n QueryResult,\n QueryResultRow,\n RecordUnknown,\n returnArg,\n DefaultColumnTypes,\n DefaultSchemaConfig,\n DbOptions,\n DbResult,\n QuerySchema,\n AdapterClass,\n DriverAdapter,\n} from 'pqb/internal';\nimport { createDbWithAdapter } from 'pqb';\n\nexport const createDb = <\n SchemaConfig extends ColumnSchemaConfig = DefaultSchemaConfig,\n ColumnTypes = DefaultColumnTypes<SchemaConfig>,\n>({\n log,\n ...options\n}: DbOptions<SchemaConfig, ColumnTypes> &\n Omit<NodePostgresAdapterOptions, 'log'>): DbResult<ColumnTypes> => {\n return createDbWithAdapter({\n ...options,\n log,\n adapter: new AdapterClass({\n driverAdapter: NodePostgresAdapter,\n config: options,\n }),\n });\n};\n\nconst { types } = pg;\n\nexport interface TypeParsers {\n [K: number]: (input: string) => unknown;\n}\n\nconst defaultTypeParsers: TypeParsers = {};\n\nfor (const key in types.builtins) {\n const id = types.builtins[key as keyof typeof types.builtins];\n defaultTypeParsers[id] = types.getTypeParser(id);\n}\n\n[\n types.builtins.DATE,\n types.builtins.TIMESTAMP,\n types.builtins.TIMESTAMPTZ,\n types.builtins.CIRCLE,\n types.builtins.BYTEA,\n].forEach((id) => {\n delete defaultTypeParsers[id];\n});\n\nexport interface AdapterConfig\n extends\n Omit<AdapterConfigBase, 'searchPath' | 'ssl'>,\n Omit<PoolConfig, 'types' | 'connectionString'> {\n databaseURL?: string;\n}\n\nexport interface NodePostgresAdapterOptions extends Omit<AdapterConfig, 'log'> {\n schema?: QuerySchema;\n}\n\nexport const NodePostgresAdapter: DriverAdapter = {\n manualPool: true,\n\n errorClass: DatabaseError,\n errorFields: {\n message: 'message',\n length: 'length',\n name: 'name',\n severity: 'severity',\n code: 'code',\n detail: 'detail',\n hint: 'hint',\n position: 'position',\n internalPosition: 'internalPosition',\n internalQuery: 'internalQuery',\n where: 'where',\n schema: 'schema',\n table: 'table',\n column: 'column',\n dataType: 'dataType',\n constraint: 'constraint',\n file: 'file',\n line: 'line',\n routine: 'routine',\n },\n\n configure(config: NodePostgresAdapterOptions): pg.Pool {\n if (config.databaseURL) {\n (config as PoolConfig).connectionString = config.databaseURL;\n }\n\n if (config.locals?.search_path) {\n config = {\n ...config,\n options: `${config.options ? `${config.options} ` : ''}-c search_path=\"${config.locals.search_path}\"`,\n };\n }\n\n return new pg.Pool(config);\n },\n\n queryClient<T extends QueryResultRow = QueryResultRow>(\n client: PoolClient,\n text: string,\n values?: unknown[],\n // only has effect in a transaction\n startingSavepoint?: string,\n releasingSavepoint?: string,\n // SQL session state (role and setConfig) from async storage\n arraysMode?: boolean,\n ): Promise<QueryResult<T>> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const params: any = {\n text,\n values,\n rowMode: arraysMode ? 'array' : undefined,\n types: defaultTypesConfig,\n };\n\n // When using save points (it's in transaction), need to perform a single query at a time.\n // stating 1 then 2 then releasing 1 would fail.\n // Start 1, release 1, start 2, release 2, and so on.\n const { __lock } = client as unknown as { __lock?: Promise<unknown> };\n if (__lock) {\n let resolve: () => void | undefined;\n (client as unknown as RecordUnknown).__lock = new Promise<void>((res) => {\n resolve = () => {\n res();\n };\n });\n\n return __lock.then(() => {\n const promise =\n startingSavepoint || releasingSavepoint\n ? performQueryOnClientWithSavepoint(\n client,\n params,\n startingSavepoint,\n releasingSavepoint,\n )\n : client.query(params);\n promise.then(resolve, resolve);\n return promise;\n });\n }\n\n const promise =\n startingSavepoint || releasingSavepoint\n ? performQueryOnClientWithSavepoint(\n client,\n params,\n startingSavepoint,\n releasingSavepoint,\n )\n : client.query(params);\n\n (client as unknown as { __lock?: Promise<unknown> }).__lock =\n promise.catch(noop);\n\n return promise;\n },\n\n borrow(pool: Pool): Promise<PoolClient> {\n return pool.connect();\n },\n\n release(client: PoolClient): void {\n client.release();\n },\n\n async begin<DriverClient, Result>(\n pool: Pool,\n cb: (adapter: DriverClient) => Promise<Result>,\n options?: string,\n ): Promise<Result> {\n const client = await pool.connect();\n\n try {\n await this.queryClient(client, options ? 'BEGIN ' + options : 'BEGIN');\n\n let result;\n try {\n result = await cb(client as DriverClient);\n } catch (err) {\n await this.queryClient(client, 'ROLLBACK');\n throw err;\n }\n await this.queryClient(client, 'COMMIT');\n return result as Result;\n } finally {\n client.release();\n }\n },\n\n close(pool: Pool): Promise<void> {\n return pool.end();\n },\n};\n\nconst defaultTypesConfig = {\n getTypeParser(id: number) {\n return defaultTypeParsers[id] || returnArg;\n },\n};\n\nconst performQueryOnClientWithSavepoint = (\n client: PoolClient,\n params: unknown,\n startingSavepoint?: string,\n releasingSavepoint?: string,\n) => {\n let promise = startingSavepoint\n ? client\n .query(`SAVEPOINT \"${startingSavepoint}\"`)\n .then(() => client.query(params as never))\n : client.query(params as never);\n\n if (releasingSavepoint) {\n promise = promise.then(\n async (res) => {\n await client.query(`RELEASE SAVEPOINT \"${releasingSavepoint}\"`);\n return res;\n },\n async (err) => {\n await client.query(`ROLLBACK TO SAVEPOINT \"${releasingSavepoint}\"`);\n throw err;\n },\n );\n }\n\n return promise;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"node-postgres.mjs","names":[],"sources":["../src/adapters/node-postgres.ts"],"sourcesContent":["import pg, { DatabaseError, Pool, PoolClient, PoolConfig } from 'pg';\nimport {\n AdapterConfigBase,\n ColumnSchemaConfig,\n noop,\n QueryResult,\n QueryResultRow,\n RecordUnknown,\n returnArg,\n DefaultColumnTypes,\n DefaultSchemaConfig,\n DbOptions,\n DbResult,\n QuerySchema,\n AdapterClass,\n DriverAdapter,\n} from 'pqb/internal';\nimport { createDbWithAdapter } from 'pqb';\n\nexport const createDb = <\n SchemaConfig extends ColumnSchemaConfig = DefaultSchemaConfig,\n ColumnTypes = DefaultColumnTypes<SchemaConfig>,\n>({\n log,\n ...options\n}: DbOptions<SchemaConfig, ColumnTypes> &\n Omit<NodePostgresAdapterOptions, 'log'>): DbResult<ColumnTypes> => {\n return createDbWithAdapter({\n ...options,\n log,\n adapter: new AdapterClass({\n driverAdapter: NodePostgresAdapter,\n config: options,\n }),\n });\n};\n\nconst { types } = pg;\n\nexport interface TypeParsers {\n [K: number]: (input: string) => unknown;\n}\n\nconst defaultTypeParsers: TypeParsers = {};\n\nfor (const key in types.builtins) {\n const id = types.builtins[key as keyof typeof types.builtins];\n defaultTypeParsers[id] = types.getTypeParser(id);\n}\n\n[\n types.builtins.DATE,\n types.builtins.TIMESTAMP,\n types.builtins.TIMESTAMPTZ,\n types.builtins.CIRCLE,\n types.builtins.BYTEA,\n].forEach((id) => {\n delete defaultTypeParsers[id];\n});\n\nexport interface AdapterConfig\n extends\n Omit<AdapterConfigBase, 'searchPath' | 'ssl'>,\n Omit<PoolConfig, 'types' | 'connectionString'> {\n databaseURL?: string;\n}\n\nexport interface NodePostgresAdapterOptions extends Omit<AdapterConfig, 'log'> {\n schema?: QuerySchema;\n}\n\nconst queryClient = <T extends QueryResultRow = QueryResultRow>(\n client: PoolClient,\n text: string,\n values?: unknown[],\n // only has effect in a transaction\n startingSavepoint?: string,\n releasingSavepoint?: string,\n // SQL session state (role and setConfig) from async storage\n arraysMode?: boolean,\n): Promise<QueryResult<T>> => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const params: any = {\n text,\n values,\n rowMode: arraysMode ? 'array' : undefined,\n types: defaultTypesConfig,\n };\n\n // When using save points (it's in transaction), need to perform a single query at a time.\n // stating 1 then 2 then releasing 1 would fail.\n // Start 1, release 1, start 2, release 2, and so on.\n const { __lock } = client as unknown as { __lock?: Promise<unknown> };\n if (__lock) {\n let resolve: () => void | undefined;\n (client as unknown as RecordUnknown).__lock = new Promise<void>((res) => {\n resolve = () => {\n res();\n };\n });\n\n return __lock.then(() => {\n const promise =\n startingSavepoint || releasingSavepoint\n ? performQueryOnClientWithSavepoint(\n client,\n params,\n startingSavepoint,\n releasingSavepoint,\n )\n : client.query(params);\n promise.then(resolve, resolve);\n return promise;\n });\n }\n\n const promise =\n startingSavepoint || releasingSavepoint\n ? performQueryOnClientWithSavepoint(\n client,\n params,\n startingSavepoint,\n releasingSavepoint,\n )\n : client.query(params);\n\n (client as unknown as { __lock?: Promise<unknown> }).__lock =\n promise.catch(noop);\n\n return promise;\n};\n\nexport const NodePostgresAdapter: DriverAdapter = {\n manualPool: true,\n\n errorClass: DatabaseError,\n errorFields: {\n message: 'message',\n length: 'length',\n name: 'name',\n severity: 'severity',\n code: 'code',\n detail: 'detail',\n hint: 'hint',\n position: 'position',\n internalPosition: 'internalPosition',\n internalQuery: 'internalQuery',\n where: 'where',\n schema: 'schema',\n table: 'table',\n column: 'column',\n dataType: 'dataType',\n constraint: 'constraint',\n file: 'file',\n line: 'line',\n routine: 'routine',\n },\n\n configure(config: NodePostgresAdapterOptions): pg.Pool {\n if (config.databaseURL) {\n (config as PoolConfig).connectionString = config.databaseURL;\n }\n\n if (config.setConfig?.search_path) {\n config = {\n ...config,\n options: `${config.options ? `${config.options} ` : ''}-c search_path=\"${config.setConfig.search_path}\"`,\n };\n }\n\n return new pg.Pool(config);\n },\n\n queryClient,\n\n borrow(pool: Pool): Promise<PoolClient> {\n return pool.connect();\n },\n\n release(client: PoolClient): void {\n client.release();\n },\n\n async begin<DriverClient, Result>(\n pool: Pool,\n cb: (adapter: DriverClient) => Promise<Result>,\n options?: string,\n ): Promise<Result> {\n const client = await pool.connect();\n\n try {\n await queryClient(client, options ? 'BEGIN ' + options : 'BEGIN');\n\n let result;\n try {\n result = await cb(client as DriverClient);\n } catch (err) {\n await queryClient(client, 'ROLLBACK');\n throw err;\n }\n await queryClient(client, 'COMMIT');\n return result as Result;\n } finally {\n client.release();\n }\n },\n\n close(pool: Pool): Promise<void> {\n return pool.end();\n },\n};\n\nconst defaultTypesConfig = {\n getTypeParser(id: number) {\n return defaultTypeParsers[id] || returnArg;\n },\n};\n\nconst performQueryOnClientWithSavepoint = (\n client: PoolClient,\n params: unknown,\n startingSavepoint?: string,\n releasingSavepoint?: string,\n) => {\n let promise = startingSavepoint\n ? client\n .query(`SAVEPOINT \"${startingSavepoint}\"`)\n .then(() => client.query(params as never))\n : client.query(params as never);\n\n if (releasingSavepoint) {\n promise = promise.then(\n async (res) => {\n await client.query(`RELEASE SAVEPOINT \"${releasingSavepoint}\"`);\n return res;\n },\n async (err) => {\n await client.query(`ROLLBACK TO SAVEPOINT \"${releasingSavepoint}\"`);\n throw err;\n },\n );\n }\n\n return promise;\n};\n"],"mappings":"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"}
@@ -106,9 +106,9 @@ const PostgresJsAdapter = {
106
106
  ...params,
107
107
  types
108
108
  };
109
- if (config.locals?.search_path) config.connection = {
109
+ if (config.setConfig?.search_path) config.connection = {
110
110
  ...config.connection,
111
- search_path: config.locals.search_path
111
+ search_path: config.setConfig.search_path
112
112
  };
113
113
  let sql;
114
114
  if (config.databaseURL) sql = (0, postgres.default)(config.databaseURL, config);
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-js.js","names":["AdapterClass","returnArg"],"sources":["../src/adapters/postgres-js.ts"],"sourcesContent":["import postgres, { Row, RowList, TransactionSql } from 'postgres';\nimport {\n AdapterConfigBase,\n MaybeArray,\n QueryArraysResult,\n QueryResult,\n QueryResultRow,\n returnArg,\n DbOptions,\n DefaultColumnTypes,\n DefaultSchemaConfig,\n DbResult,\n ColumnSchemaConfig,\n AdapterClass,\n DriverAdapter,\n QuerySchema,\n} from 'pqb/internal';\nimport { createDbWithAdapter } from 'pqb';\n\nexport interface CreatePostgresJsDbOptions<\n SchemaConfig extends ColumnSchemaConfig,\n ColumnTypes,\n>\n extends PostgresJsAdapterOptions, DbOptions<SchemaConfig, ColumnTypes> {}\n\nexport const createDb = <\n SchemaConfig extends ColumnSchemaConfig = DefaultSchemaConfig,\n ColumnTypes = DefaultColumnTypes<SchemaConfig>,\n>(\n options: CreatePostgresJsDbOptions<SchemaConfig, ColumnTypes>,\n): DbResult<ColumnTypes> => {\n return createDbWithAdapter({\n ...options,\n adapter: new AdapterClass({\n driverAdapter: PostgresJsAdapter,\n config: options,\n }),\n });\n};\n\nexport interface PostgresJsAdapterOptions\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n extends postgres.Options<any>, Omit<AdapterConfigBase, 'searchPath' | 'ssl'> {\n databaseURL?: string;\n schema?: QuerySchema;\n}\n\ntype RawResult = RowList<(Row & Iterable<Row>)[]>;\n\nclass PostgresJsResult<T extends QueryResultRow> implements QueryResult<T> {\n rowCount: number;\n rows: T[];\n fields: QueryResult<T>['fields'];\n\n constructor(result: RawResult) {\n this.rowCount = result.count;\n this.rows = result as never;\n this.fields = result.statement.columns;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst wrapResult = (result: MaybeArray<RawResult>): QueryArraysResult<any> => {\n if (result.constructor === Array) {\n return (result as RawResult[]).map(\n (res) => new PostgresJsResult(res),\n ) as never;\n } else {\n return new PostgresJsResult(result as RawResult);\n }\n};\n\nconst types: Record<string, Partial<postgres.PostgresType>> = {\n bytea: {\n to: 17,\n from: 17 as never,\n serialize: (x) => '\\\\x' + Buffer.from(x).toString('hex'),\n // omit parse, let bytea return a string, so it remains consistent with when it's selected via JSON\n },\n dateAndTimestampAsStrings: {\n to: 25,\n from: [1082, 1114, 1184],\n parse: returnArg,\n },\n interval: {\n from: [1186],\n serialize: returnArg,\n parse(str: string) {\n const [years, , months, , days, , time] = str.split(' ');\n const [hours, minutes, seconds] = time.split(':');\n\n return {\n years: years ? Number(years) : 0,\n months: months ? Number(months) : 0,\n days: days ? Number(days) : 0,\n hours: hours ? Number(hours) : 0,\n minutes: minutes ? Number(minutes) : 0,\n seconds: seconds ? Number(seconds) : 0,\n };\n },\n },\n // overrides the built-in json type to not serialize it, because it incorrectly serializes\n json: {\n to: 114,\n from: [114, 3802],\n serialize: returnArg,\n parse: (x) => {\n return JSON.parse(x);\n },\n },\n};\n\nexport const PostgresJsAdapter: DriverAdapter = {\n manualPool: false,\n\n errorClass: postgres.PostgresError,\n errorFields: {\n message: 'message',\n severity: 'severity',\n code: 'code',\n detail: 'detail',\n schema: 'schema_name',\n table: 'table_name',\n constraint: 'constraint_name',\n hint: 'hint',\n position: 'position',\n where: 'where',\n file: 'file',\n line: 'line',\n routine: 'routine',\n },\n\n configure(params: PostgresJsAdapterOptions): postgres.Sql {\n const config: PostgresJsAdapterOptions = { ...params, types };\n\n if (config.locals?.search_path) {\n config.connection = {\n ...config.connection,\n search_path: config.locals.search_path,\n };\n }\n\n let sql;\n if (config.databaseURL) {\n sql = postgres(config.databaseURL, config);\n } else {\n sql = postgres(config);\n }\n\n return sql;\n },\n\n queryClient<T extends QueryResultRow = QueryResultRow>(\n client: TransactionSql,\n text: string,\n values?: unknown[],\n // only has effect in a transaction\n startingSavepoint?: string,\n releasingSavepoint?: string,\n // SQL session state (role and setConfig) from async storage\n arraysMode?: boolean,\n ): Promise<QueryResult<T>> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let query = client.unsafe(text, values as never) as any;\n\n if (arraysMode) query = query.values();\n\n if (!startingSavepoint && !releasingSavepoint) {\n return query.then(wrapResult);\n }\n\n return Promise.all([\n startingSavepoint && client.unsafe(`SAVEPOINT \"${startingSavepoint}\"`),\n query,\n releasingSavepoint &&\n client.unsafe(`RELEASE SAVEPOINT \"${releasingSavepoint}\"`),\n ]).then(\n (results: RawResult[]) => {\n return wrapResult(results[1]);\n },\n (err) => {\n if (!releasingSavepoint) {\n throw err;\n }\n\n return client\n .unsafe(`ROLLBACK TO SAVEPOINT \"${releasingSavepoint}\"`)\n .then(() => {\n throw err;\n });\n },\n );\n },\n\n borrow(client: postgres.Sql): Promise<postgres.ReservedSql> {\n return client.reserve();\n },\n\n release(client: postgres.ReservedSql): void {\n client.release();\n },\n\n begin<DriverClient, Result>(\n client: postgres.Sql,\n cb: (adapter: DriverClient) => Promise<Result>,\n options?: string,\n ): Promise<Result> {\n let ok: boolean | undefined;\n let result: unknown;\n\n const fn = (sql: TransactionSql): Promise<Result> =>\n cb(sql as DriverClient).then((res) => {\n ok = true;\n return (result = res);\n });\n\n return (options ? client.begin(options, fn) : client.begin(fn)).catch(\n (err) => {\n if (ok) return result;\n\n throw err;\n },\n ) as never;\n },\n\n close(client: postgres.Sql): Promise<void> {\n return client.end();\n },\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"postgres-js.js","names":["AdapterClass","returnArg"],"sources":["../src/adapters/postgres-js.ts"],"sourcesContent":["import postgres, { Row, RowList, TransactionSql } from 'postgres';\nimport {\n AdapterConfigBase,\n MaybeArray,\n QueryArraysResult,\n QueryResult,\n QueryResultRow,\n returnArg,\n DbOptions,\n DefaultColumnTypes,\n DefaultSchemaConfig,\n DbResult,\n ColumnSchemaConfig,\n AdapterClass,\n DriverAdapter,\n QuerySchema,\n} from 'pqb/internal';\nimport { createDbWithAdapter } from 'pqb';\n\nexport interface CreatePostgresJsDbOptions<\n SchemaConfig extends ColumnSchemaConfig,\n ColumnTypes,\n>\n extends PostgresJsAdapterOptions, DbOptions<SchemaConfig, ColumnTypes> {}\n\nexport const createDb = <\n SchemaConfig extends ColumnSchemaConfig = DefaultSchemaConfig,\n ColumnTypes = DefaultColumnTypes<SchemaConfig>,\n>(\n options: CreatePostgresJsDbOptions<SchemaConfig, ColumnTypes>,\n): DbResult<ColumnTypes> => {\n return createDbWithAdapter({\n ...options,\n adapter: new AdapterClass({\n driverAdapter: PostgresJsAdapter,\n config: options,\n }),\n });\n};\n\nexport interface PostgresJsAdapterOptions\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n extends postgres.Options<any>, Omit<AdapterConfigBase, 'searchPath' | 'ssl'> {\n databaseURL?: string;\n schema?: QuerySchema;\n}\n\ntype RawResult = RowList<(Row & Iterable<Row>)[]>;\n\nclass PostgresJsResult<T extends QueryResultRow> implements QueryResult<T> {\n rowCount: number;\n rows: T[];\n fields: QueryResult<T>['fields'];\n\n constructor(result: RawResult) {\n this.rowCount = result.count;\n this.rows = result as never;\n this.fields = result.statement.columns;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst wrapResult = (result: MaybeArray<RawResult>): QueryArraysResult<any> => {\n if (result.constructor === Array) {\n return (result as RawResult[]).map(\n (res) => new PostgresJsResult(res),\n ) as never;\n } else {\n return new PostgresJsResult(result as RawResult);\n }\n};\n\nconst types: Record<string, Partial<postgres.PostgresType>> = {\n bytea: {\n to: 17,\n from: 17 as never,\n serialize: (x) => '\\\\x' + Buffer.from(x).toString('hex'),\n // omit parse, let bytea return a string, so it remains consistent with when it's selected via JSON\n },\n dateAndTimestampAsStrings: {\n to: 25,\n from: [1082, 1114, 1184],\n parse: returnArg,\n },\n interval: {\n from: [1186],\n serialize: returnArg,\n parse(str: string) {\n const [years, , months, , days, , time] = str.split(' ');\n const [hours, minutes, seconds] = time.split(':');\n\n return {\n years: years ? Number(years) : 0,\n months: months ? Number(months) : 0,\n days: days ? Number(days) : 0,\n hours: hours ? Number(hours) : 0,\n minutes: minutes ? Number(minutes) : 0,\n seconds: seconds ? Number(seconds) : 0,\n };\n },\n },\n // overrides the built-in json type to not serialize it, because it incorrectly serializes\n json: {\n to: 114,\n from: [114, 3802],\n serialize: returnArg,\n parse: (x) => {\n return JSON.parse(x);\n },\n },\n};\n\nexport const PostgresJsAdapter: DriverAdapter = {\n manualPool: false,\n\n errorClass: postgres.PostgresError,\n errorFields: {\n message: 'message',\n severity: 'severity',\n code: 'code',\n detail: 'detail',\n schema: 'schema_name',\n table: 'table_name',\n constraint: 'constraint_name',\n hint: 'hint',\n position: 'position',\n where: 'where',\n file: 'file',\n line: 'line',\n routine: 'routine',\n },\n\n configure(params: PostgresJsAdapterOptions): postgres.Sql {\n const config: PostgresJsAdapterOptions = { ...params, types };\n\n if (config.setConfig?.search_path) {\n config.connection = {\n ...config.connection,\n search_path: config.setConfig.search_path,\n };\n }\n\n let sql;\n if (config.databaseURL) {\n sql = postgres(config.databaseURL, config);\n } else {\n sql = postgres(config);\n }\n\n return sql;\n },\n\n queryClient<T extends QueryResultRow = QueryResultRow>(\n client: TransactionSql,\n text: string,\n values?: unknown[],\n // only has effect in a transaction\n startingSavepoint?: string,\n releasingSavepoint?: string,\n // SQL session state (role and setConfig) from async storage\n arraysMode?: boolean,\n ): Promise<QueryResult<T>> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let query = client.unsafe(text, values as never) as any;\n\n if (arraysMode) query = query.values();\n\n if (!startingSavepoint && !releasingSavepoint) {\n return query.then(wrapResult);\n }\n\n return Promise.all([\n startingSavepoint && client.unsafe(`SAVEPOINT \"${startingSavepoint}\"`),\n query,\n releasingSavepoint &&\n client.unsafe(`RELEASE SAVEPOINT \"${releasingSavepoint}\"`),\n ]).then(\n (results: RawResult[]) => {\n return wrapResult(results[1]);\n },\n (err) => {\n if (!releasingSavepoint) {\n throw err;\n }\n\n return client\n .unsafe(`ROLLBACK TO SAVEPOINT \"${releasingSavepoint}\"`)\n .then(() => {\n throw err;\n });\n },\n );\n },\n\n borrow(client: postgres.Sql): Promise<postgres.ReservedSql> {\n return client.reserve();\n },\n\n release(client: postgres.ReservedSql): void {\n client.release();\n },\n\n begin<DriverClient, Result>(\n client: postgres.Sql,\n cb: (adapter: DriverClient) => Promise<Result>,\n options?: string,\n ): Promise<Result> {\n let ok: boolean | undefined;\n let result: unknown;\n\n const fn = (sql: TransactionSql): Promise<Result> =>\n cb(sql as DriverClient).then((res) => {\n ok = true;\n return (result = res);\n });\n\n return (options ? client.begin(options, fn) : client.begin(fn)).catch(\n (err) => {\n if (ok) return result;\n\n throw err;\n },\n ) as never;\n },\n\n close(client: postgres.Sql): Promise<void> {\n return client.end();\n },\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,MAAa,YAIX,YAC0B;AAC1B,SAAA,GAAA,IAAA,qBAA2B;EACzB,GAAG;EACH,SAAS,IAAIA,aAAAA,aAAa;GACxB,eAAe;GACf,QAAQ;GACT,CAAC;EACH,CAAC;;AAYJ,IAAM,mBAAN,MAA2E;CAKzE,YAAY,QAAmB;AAC7B,OAAK,WAAW,OAAO;AACvB,OAAK,OAAO;AACZ,OAAK,SAAS,OAAO,UAAU;;;AAKnC,MAAM,cAAc,WAA0D;AAC5E,KAAI,OAAO,gBAAgB,MACzB,QAAQ,OAAuB,KAC5B,QAAQ,IAAI,iBAAiB,IAAI,CACnC;KAED,QAAO,IAAI,iBAAiB,OAAoB;;AAIpD,MAAM,QAAwD;CAC5D,OAAO;EACL,IAAI;EACJ,MAAM;EACN,YAAY,MAAM,QAAQ,OAAO,KAAK,EAAE,CAAC,SAAS,MAAM;EAEzD;CACD,2BAA2B;EACzB,IAAI;EACJ,MAAM;GAAC;GAAM;GAAM;GAAK;EACxB,OAAOC,aAAAA;EACR;CACD,UAAU;EACR,MAAM,CAAC,KAAK;EACZ,WAAWA,aAAAA;EACX,MAAM,KAAa;GACjB,MAAM,CAAC,SAAS,UAAU,QAAQ,QAAQ,IAAI,MAAM,IAAI;GACxD,MAAM,CAAC,OAAO,SAAS,WAAW,KAAK,MAAM,IAAI;AAEjD,UAAO;IACL,OAAO,QAAQ,OAAO,MAAM,GAAG;IAC/B,QAAQ,SAAS,OAAO,OAAO,GAAG;IAClC,MAAM,OAAO,OAAO,KAAK,GAAG;IAC5B,OAAO,QAAQ,OAAO,MAAM,GAAG;IAC/B,SAAS,UAAU,OAAO,QAAQ,GAAG;IACrC,SAAS,UAAU,OAAO,QAAQ,GAAG;IACtC;;EAEJ;CAED,MAAM;EACJ,IAAI;EACJ,MAAM,CAAC,KAAK,KAAK;EACjB,WAAWA,aAAAA;EACX,QAAQ,MAAM;AACZ,UAAO,KAAK,MAAM,EAAE;;EAEvB;CACF;AAED,MAAa,oBAAmC;CAC9C,YAAY;CAEZ,YAAY,SAAA,QAAS;CACrB,aAAa;EACX,SAAS;EACT,UAAU;EACV,MAAM;EACN,QAAQ;EACR,QAAQ;EACR,OAAO;EACP,YAAY;EACZ,MAAM;EACN,UAAU;EACV,OAAO;EACP,MAAM;EACN,MAAM;EACN,SAAS;EACV;CAED,UAAU,QAAgD;EACxD,MAAM,SAAmC;GAAE,GAAG;GAAQ;GAAO;AAE7D,MAAI,OAAO,WAAW,YACpB,QAAO,aAAa;GAClB,GAAG,OAAO;GACV,aAAa,OAAO,UAAU;GAC/B;EAGH,IAAI;AACJ,MAAI,OAAO,YACT,QAAA,GAAA,SAAA,SAAe,OAAO,aAAa,OAAO;MAE1C,QAAA,GAAA,SAAA,SAAe,OAAO;AAGxB,SAAO;;CAGT,YACE,QACA,MACA,QAEA,mBACA,oBAEA,YACyB;EAEzB,IAAI,QAAQ,OAAO,OAAO,MAAM,OAAgB;AAEhD,MAAI,WAAY,SAAQ,MAAM,QAAQ;AAEtC,MAAI,CAAC,qBAAqB,CAAC,mBACzB,QAAO,MAAM,KAAK,WAAW;AAG/B,SAAO,QAAQ,IAAI;GACjB,qBAAqB,OAAO,OAAO,cAAc,kBAAkB,GAAG;GACtE;GACA,sBACE,OAAO,OAAO,sBAAsB,mBAAmB,GAAG;GAC7D,CAAC,CAAC,MACA,YAAyB;AACxB,UAAO,WAAW,QAAQ,GAAG;MAE9B,QAAQ;AACP,OAAI,CAAC,mBACH,OAAM;AAGR,UAAO,OACJ,OAAO,0BAA0B,mBAAmB,GAAG,CACvD,WAAW;AACV,UAAM;KACN;IAEP;;CAGH,OAAO,QAAqD;AAC1D,SAAO,OAAO,SAAS;;CAGzB,QAAQ,QAAoC;AAC1C,SAAO,SAAS;;CAGlB,MACE,QACA,IACA,SACiB;EACjB,IAAI;EACJ,IAAI;EAEJ,MAAM,MAAM,QACV,GAAG,IAAoB,CAAC,MAAM,QAAQ;AACpC,QAAK;AACL,UAAQ,SAAS;IACjB;AAEJ,UAAQ,UAAU,OAAO,MAAM,SAAS,GAAG,GAAG,OAAO,MAAM,GAAG,EAAE,OAC7D,QAAQ;AACP,OAAI,GAAI,QAAO;AAEf,SAAM;IAET;;CAGH,MAAM,QAAqC;AACzC,SAAO,OAAO,KAAK;;CAEtB"}
@@ -84,9 +84,9 @@ const PostgresJsAdapter = {
84
84
  ...params,
85
85
  types
86
86
  };
87
- if (config.locals?.search_path) config.connection = {
87
+ if (config.setConfig?.search_path) config.connection = {
88
88
  ...config.connection,
89
- search_path: config.locals.search_path
89
+ search_path: config.setConfig.search_path
90
90
  };
91
91
  let sql;
92
92
  if (config.databaseURL) sql = postgres(config.databaseURL, config);
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-js.mjs","names":[],"sources":["../src/adapters/postgres-js.ts"],"sourcesContent":["import postgres, { Row, RowList, TransactionSql } from 'postgres';\nimport {\n AdapterConfigBase,\n MaybeArray,\n QueryArraysResult,\n QueryResult,\n QueryResultRow,\n returnArg,\n DbOptions,\n DefaultColumnTypes,\n DefaultSchemaConfig,\n DbResult,\n ColumnSchemaConfig,\n AdapterClass,\n DriverAdapter,\n QuerySchema,\n} from 'pqb/internal';\nimport { createDbWithAdapter } from 'pqb';\n\nexport interface CreatePostgresJsDbOptions<\n SchemaConfig extends ColumnSchemaConfig,\n ColumnTypes,\n>\n extends PostgresJsAdapterOptions, DbOptions<SchemaConfig, ColumnTypes> {}\n\nexport const createDb = <\n SchemaConfig extends ColumnSchemaConfig = DefaultSchemaConfig,\n ColumnTypes = DefaultColumnTypes<SchemaConfig>,\n>(\n options: CreatePostgresJsDbOptions<SchemaConfig, ColumnTypes>,\n): DbResult<ColumnTypes> => {\n return createDbWithAdapter({\n ...options,\n adapter: new AdapterClass({\n driverAdapter: PostgresJsAdapter,\n config: options,\n }),\n });\n};\n\nexport interface PostgresJsAdapterOptions\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n extends postgres.Options<any>, Omit<AdapterConfigBase, 'searchPath' | 'ssl'> {\n databaseURL?: string;\n schema?: QuerySchema;\n}\n\ntype RawResult = RowList<(Row & Iterable<Row>)[]>;\n\nclass PostgresJsResult<T extends QueryResultRow> implements QueryResult<T> {\n rowCount: number;\n rows: T[];\n fields: QueryResult<T>['fields'];\n\n constructor(result: RawResult) {\n this.rowCount = result.count;\n this.rows = result as never;\n this.fields = result.statement.columns;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst wrapResult = (result: MaybeArray<RawResult>): QueryArraysResult<any> => {\n if (result.constructor === Array) {\n return (result as RawResult[]).map(\n (res) => new PostgresJsResult(res),\n ) as never;\n } else {\n return new PostgresJsResult(result as RawResult);\n }\n};\n\nconst types: Record<string, Partial<postgres.PostgresType>> = {\n bytea: {\n to: 17,\n from: 17 as never,\n serialize: (x) => '\\\\x' + Buffer.from(x).toString('hex'),\n // omit parse, let bytea return a string, so it remains consistent with when it's selected via JSON\n },\n dateAndTimestampAsStrings: {\n to: 25,\n from: [1082, 1114, 1184],\n parse: returnArg,\n },\n interval: {\n from: [1186],\n serialize: returnArg,\n parse(str: string) {\n const [years, , months, , days, , time] = str.split(' ');\n const [hours, minutes, seconds] = time.split(':');\n\n return {\n years: years ? Number(years) : 0,\n months: months ? Number(months) : 0,\n days: days ? Number(days) : 0,\n hours: hours ? Number(hours) : 0,\n minutes: minutes ? Number(minutes) : 0,\n seconds: seconds ? Number(seconds) : 0,\n };\n },\n },\n // overrides the built-in json type to not serialize it, because it incorrectly serializes\n json: {\n to: 114,\n from: [114, 3802],\n serialize: returnArg,\n parse: (x) => {\n return JSON.parse(x);\n },\n },\n};\n\nexport const PostgresJsAdapter: DriverAdapter = {\n manualPool: false,\n\n errorClass: postgres.PostgresError,\n errorFields: {\n message: 'message',\n severity: 'severity',\n code: 'code',\n detail: 'detail',\n schema: 'schema_name',\n table: 'table_name',\n constraint: 'constraint_name',\n hint: 'hint',\n position: 'position',\n where: 'where',\n file: 'file',\n line: 'line',\n routine: 'routine',\n },\n\n configure(params: PostgresJsAdapterOptions): postgres.Sql {\n const config: PostgresJsAdapterOptions = { ...params, types };\n\n if (config.locals?.search_path) {\n config.connection = {\n ...config.connection,\n search_path: config.locals.search_path,\n };\n }\n\n let sql;\n if (config.databaseURL) {\n sql = postgres(config.databaseURL, config);\n } else {\n sql = postgres(config);\n }\n\n return sql;\n },\n\n queryClient<T extends QueryResultRow = QueryResultRow>(\n client: TransactionSql,\n text: string,\n values?: unknown[],\n // only has effect in a transaction\n startingSavepoint?: string,\n releasingSavepoint?: string,\n // SQL session state (role and setConfig) from async storage\n arraysMode?: boolean,\n ): Promise<QueryResult<T>> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let query = client.unsafe(text, values as never) as any;\n\n if (arraysMode) query = query.values();\n\n if (!startingSavepoint && !releasingSavepoint) {\n return query.then(wrapResult);\n }\n\n return Promise.all([\n startingSavepoint && client.unsafe(`SAVEPOINT \"${startingSavepoint}\"`),\n query,\n releasingSavepoint &&\n client.unsafe(`RELEASE SAVEPOINT \"${releasingSavepoint}\"`),\n ]).then(\n (results: RawResult[]) => {\n return wrapResult(results[1]);\n },\n (err) => {\n if (!releasingSavepoint) {\n throw err;\n }\n\n return client\n .unsafe(`ROLLBACK TO SAVEPOINT \"${releasingSavepoint}\"`)\n .then(() => {\n throw err;\n });\n },\n );\n },\n\n borrow(client: postgres.Sql): Promise<postgres.ReservedSql> {\n return client.reserve();\n },\n\n release(client: postgres.ReservedSql): void {\n client.release();\n },\n\n begin<DriverClient, Result>(\n client: postgres.Sql,\n cb: (adapter: DriverClient) => Promise<Result>,\n options?: string,\n ): Promise<Result> {\n let ok: boolean | undefined;\n let result: unknown;\n\n const fn = (sql: TransactionSql): Promise<Result> =>\n cb(sql as DriverClient).then((res) => {\n ok = true;\n return (result = res);\n });\n\n return (options ? client.begin(options, fn) : client.begin(fn)).catch(\n (err) => {\n if (ok) return result;\n\n throw err;\n },\n ) as never;\n },\n\n close(client: postgres.Sql): Promise<void> {\n return client.end();\n },\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"postgres-js.mjs","names":[],"sources":["../src/adapters/postgres-js.ts"],"sourcesContent":["import postgres, { Row, RowList, TransactionSql } from 'postgres';\nimport {\n AdapterConfigBase,\n MaybeArray,\n QueryArraysResult,\n QueryResult,\n QueryResultRow,\n returnArg,\n DbOptions,\n DefaultColumnTypes,\n DefaultSchemaConfig,\n DbResult,\n ColumnSchemaConfig,\n AdapterClass,\n DriverAdapter,\n QuerySchema,\n} from 'pqb/internal';\nimport { createDbWithAdapter } from 'pqb';\n\nexport interface CreatePostgresJsDbOptions<\n SchemaConfig extends ColumnSchemaConfig,\n ColumnTypes,\n>\n extends PostgresJsAdapterOptions, DbOptions<SchemaConfig, ColumnTypes> {}\n\nexport const createDb = <\n SchemaConfig extends ColumnSchemaConfig = DefaultSchemaConfig,\n ColumnTypes = DefaultColumnTypes<SchemaConfig>,\n>(\n options: CreatePostgresJsDbOptions<SchemaConfig, ColumnTypes>,\n): DbResult<ColumnTypes> => {\n return createDbWithAdapter({\n ...options,\n adapter: new AdapterClass({\n driverAdapter: PostgresJsAdapter,\n config: options,\n }),\n });\n};\n\nexport interface PostgresJsAdapterOptions\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n extends postgres.Options<any>, Omit<AdapterConfigBase, 'searchPath' | 'ssl'> {\n databaseURL?: string;\n schema?: QuerySchema;\n}\n\ntype RawResult = RowList<(Row & Iterable<Row>)[]>;\n\nclass PostgresJsResult<T extends QueryResultRow> implements QueryResult<T> {\n rowCount: number;\n rows: T[];\n fields: QueryResult<T>['fields'];\n\n constructor(result: RawResult) {\n this.rowCount = result.count;\n this.rows = result as never;\n this.fields = result.statement.columns;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst wrapResult = (result: MaybeArray<RawResult>): QueryArraysResult<any> => {\n if (result.constructor === Array) {\n return (result as RawResult[]).map(\n (res) => new PostgresJsResult(res),\n ) as never;\n } else {\n return new PostgresJsResult(result as RawResult);\n }\n};\n\nconst types: Record<string, Partial<postgres.PostgresType>> = {\n bytea: {\n to: 17,\n from: 17 as never,\n serialize: (x) => '\\\\x' + Buffer.from(x).toString('hex'),\n // omit parse, let bytea return a string, so it remains consistent with when it's selected via JSON\n },\n dateAndTimestampAsStrings: {\n to: 25,\n from: [1082, 1114, 1184],\n parse: returnArg,\n },\n interval: {\n from: [1186],\n serialize: returnArg,\n parse(str: string) {\n const [years, , months, , days, , time] = str.split(' ');\n const [hours, minutes, seconds] = time.split(':');\n\n return {\n years: years ? Number(years) : 0,\n months: months ? Number(months) : 0,\n days: days ? Number(days) : 0,\n hours: hours ? Number(hours) : 0,\n minutes: minutes ? Number(minutes) : 0,\n seconds: seconds ? Number(seconds) : 0,\n };\n },\n },\n // overrides the built-in json type to not serialize it, because it incorrectly serializes\n json: {\n to: 114,\n from: [114, 3802],\n serialize: returnArg,\n parse: (x) => {\n return JSON.parse(x);\n },\n },\n};\n\nexport const PostgresJsAdapter: DriverAdapter = {\n manualPool: false,\n\n errorClass: postgres.PostgresError,\n errorFields: {\n message: 'message',\n severity: 'severity',\n code: 'code',\n detail: 'detail',\n schema: 'schema_name',\n table: 'table_name',\n constraint: 'constraint_name',\n hint: 'hint',\n position: 'position',\n where: 'where',\n file: 'file',\n line: 'line',\n routine: 'routine',\n },\n\n configure(params: PostgresJsAdapterOptions): postgres.Sql {\n const config: PostgresJsAdapterOptions = { ...params, types };\n\n if (config.setConfig?.search_path) {\n config.connection = {\n ...config.connection,\n search_path: config.setConfig.search_path,\n };\n }\n\n let sql;\n if (config.databaseURL) {\n sql = postgres(config.databaseURL, config);\n } else {\n sql = postgres(config);\n }\n\n return sql;\n },\n\n queryClient<T extends QueryResultRow = QueryResultRow>(\n client: TransactionSql,\n text: string,\n values?: unknown[],\n // only has effect in a transaction\n startingSavepoint?: string,\n releasingSavepoint?: string,\n // SQL session state (role and setConfig) from async storage\n arraysMode?: boolean,\n ): Promise<QueryResult<T>> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let query = client.unsafe(text, values as never) as any;\n\n if (arraysMode) query = query.values();\n\n if (!startingSavepoint && !releasingSavepoint) {\n return query.then(wrapResult);\n }\n\n return Promise.all([\n startingSavepoint && client.unsafe(`SAVEPOINT \"${startingSavepoint}\"`),\n query,\n releasingSavepoint &&\n client.unsafe(`RELEASE SAVEPOINT \"${releasingSavepoint}\"`),\n ]).then(\n (results: RawResult[]) => {\n return wrapResult(results[1]);\n },\n (err) => {\n if (!releasingSavepoint) {\n throw err;\n }\n\n return client\n .unsafe(`ROLLBACK TO SAVEPOINT \"${releasingSavepoint}\"`)\n .then(() => {\n throw err;\n });\n },\n );\n },\n\n borrow(client: postgres.Sql): Promise<postgres.ReservedSql> {\n return client.reserve();\n },\n\n release(client: postgres.ReservedSql): void {\n client.release();\n },\n\n begin<DriverClient, Result>(\n client: postgres.Sql,\n cb: (adapter: DriverClient) => Promise<Result>,\n options?: string,\n ): Promise<Result> {\n let ok: boolean | undefined;\n let result: unknown;\n\n const fn = (sql: TransactionSql): Promise<Result> =>\n cb(sql as DriverClient).then((res) => {\n ok = true;\n return (result = res);\n });\n\n return (options ? client.begin(options, fn) : client.begin(fn)).catch(\n (err) => {\n if (ok) return result;\n\n throw err;\n },\n ) as never;\n },\n\n close(client: postgres.Sql): Promise<void> {\n return client.end();\n },\n};\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pqb",
3
- "version": "0.65.2",
3
+ "version": "0.65.3",
4
4
  "description": "Postgres query builder",
5
5
  "keywords": [
6
6
  "pg",