pqb 0.67.3 → 0.67.5
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 +75 -20
- package/dist/index.js +112 -22
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +112 -23
- package/dist/index.mjs.map +1 -1
- package/dist/internal.d.ts +76 -38
- package/dist/postgres-js.js +1 -1
- package/dist/postgres-js.js.map +1 -1
- package/dist/postgres-js.mjs +1 -1
- package/dist/postgres-js.mjs.map +1 -1
- package/package.json +1 -1
package/dist/internal.d.ts
CHANGED
|
@@ -1,21 +1,20 @@
|
|
|
1
|
-
import { Adapter, AdapterClass, AdapterConfigBase, AdapterParams, AdapterSchemaConfigOptions, 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, 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, Rls, RlsPolicy, SchemaConfigFnWithOptions, 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, TransactionAdapter, TransactionAdapterClass, TransactionOptions, TsQueryColumn, TsVectorColumn, UUIDColumn, UniqueConstraints, UniqueTableDataItem, UnknownColumn, UpdateData, UpsertData, UpsertThis, VarCharColumn, VirtualColumn, WhereArg, XMLColumn, _appendQuery, _appendQueryOnUpsertCreate, _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, getDateAsDateFn, getDateAsNumberFn, getDriverErrorCode, getFreeAlias, getFreeSetAlias, getImportPath, getPrimaryKeys, getQueryAs, getQuerySchema, getShapeFromSelect, getSqlText, getStackTrace, getSupportedDefaultPrivileges, indexInnerToCode, internalSchemaConfig, isExpression, isQueryReturnsAll, isRawSQL, logColors, logParamToLogObject, makeColumnNullable, makeColumnTypes, makeColumnsByType, makeConnectRetryConfig, noop, objectHasValues, omit, parseTableData, parseTableDataInput, pathToLog, pick, pluralize, prepareSubQueryForSql, primaryKeyInnerToCode, pushQueryOnForOuter, pushQueryValueImmutable, pushTableDataCode, quoteIdentifier, quoteObjectKey, quoteTableWithSchema, raw, rawSqlToCode, referencesArgsToCode, returnArg, setColumnData, setColumnEncode, setColumnParse, setColumnParseNull, setCurrentColumnName, setDataValue, setDefaultLanguage, setFreeAlias, setQueryObjectValueImmutable, singleQuote, tableDataMethods, toArray, toCamelCase, toPascalCase, toSnakeCase, wrapAdapterFnWithConnectRetry } from "./index.d.ts";
|
|
1
|
+
import { Adapter, AdapterClass, AdapterConfigBase, AdapterParams, AdapterSchemaConfigOptions, 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, ExpressionData, 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, 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, Rls, RlsPolicy, SchemaConfigFnWithOptions, 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, ToSQLCtx, ToSqlValues, TransactionAdapter, TransactionAdapterClass, TransactionOptions, TsQueryColumn, TsVectorColumn, UUIDColumn, UniqueConstraints, UniqueTableDataItem, UnknownColumn, UpdateData, UpsertData, UpsertThis, VarCharColumn, VirtualColumn, WhereArg, XMLColumn, _appendQuery, _appendQueryOnUpsertCreate, _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, getDateAsDateFn, getDateAsNumberFn, getDriverErrorCode, getFreeAlias, getFreeSetAlias, getImportPath, getPrimaryKeys, getQueryAs, getQuerySchema, getShapeFromSelect, getSqlText, getStackTrace, getSupportedDefaultPrivileges, indexInnerToCode, internalSchemaConfig, isExpression, isQueryReturnsAll, isRawSQL, logColors, logParamToLogObject, makeColumnNullable, makeColumnTypes, makeColumnsByType, makeConnectRetryConfig, noop, objectHasValues, omit, parseTableData, parseTableDataInput, pathToLog, pick, pluralize, prepareSubQueryForSql, primaryKeyInnerToCode, pushQueryOnForOuter, pushQueryValueImmutable, pushTableDataCode, quoteIdentifier, quoteObjectKey, quoteTableWithSchema, raw, rawSqlToCode, referencesArgsToCode, returnArg, setColumnData, setColumnEncode, setColumnParse, setColumnParseNull, setCurrentColumnName, setDataValue, setDefaultLanguage, setFreeAlias, setQueryObjectValueImmutable, singleQuote, tableDataMethods, toArray, toCamelCase, toPascalCase, toSnakeCase, wrapAdapterFnWithConnectRetry } from "./index.d.ts";
|
|
2
2
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
3
3
|
interface RelationJoinQuery$1 {
|
|
4
4
|
(joiningQuery: IsQuery$1, baseQuery: IsQuery$1): IsQuery$1;
|
|
5
5
|
}
|
|
6
|
-
interface RelationConfigQuery extends PickQueryResult, PickQuerySelectable, PickQueryShape$1, PickQueryTable, PickQueryAs, PickQueryRelations$1 {}
|
|
6
|
+
interface RelationConfigQuery extends PickQueryResult, PickQuerySelectable, PickQueryShape$1, PickQueryTable, PickQueryAs, PickQueryRelations$1, PickQueryReturnType {}
|
|
7
7
|
interface RelationConfigBase$1 extends IsQuery$1 {
|
|
8
8
|
returnsOne: boolean;
|
|
9
|
+
required?: unknown;
|
|
9
10
|
query: RelationConfigQuery;
|
|
10
11
|
joinQuery: RelationJoinQuery$1;
|
|
11
12
|
reverseJoin: RelationJoinQuery$1;
|
|
12
13
|
params: unknown;
|
|
13
14
|
queryRelated(params: unknown): unknown;
|
|
14
15
|
modifyRelatedQuery?(relatedQuery: IsQuery$1): (query: IsQuery$1) => void;
|
|
15
|
-
maybeSingle: PickQuerySelectableReturnType;
|
|
16
16
|
omitForeignKeyInCreate: PropertyKey;
|
|
17
|
-
dataForCreate:
|
|
18
|
-
optionalDataForCreate: unknown;
|
|
17
|
+
dataForCreate: unknown;
|
|
19
18
|
dataForUpdate: unknown;
|
|
20
19
|
dataForUpdateOne: unknown;
|
|
21
20
|
primaryKeys: string[];
|
|
@@ -27,6 +26,7 @@ interface RelationConfigDataForCreate {
|
|
|
27
26
|
interface RelationsBase$1 {
|
|
28
27
|
[K: string]: RelationConfigBase$1;
|
|
29
28
|
}
|
|
29
|
+
type RelationQueryMaybeSingle<T extends RelationConfigBase$1> = T['returnsOne'] extends true ? T['required'] extends true ? QueryManyTake$1<T['query']> : QueryManyTakeOptional$1<T['query']> : T['query'];
|
|
30
30
|
interface SubQueryForSql extends ToSQLQuery {
|
|
31
31
|
__forSql: true;
|
|
32
32
|
}
|
|
@@ -43,7 +43,7 @@ declare class SqlRefExpression extends Expression$1 {
|
|
|
43
43
|
result: {
|
|
44
44
|
value: Column$1.Pick.QueryColumn;
|
|
45
45
|
};
|
|
46
|
-
q: ExpressionData;
|
|
46
|
+
q: ExpressionData$1;
|
|
47
47
|
constructor(name: string);
|
|
48
48
|
makeSQL(): string;
|
|
49
49
|
}
|
|
@@ -1733,6 +1733,7 @@ interface QueryInternal$1<SinglePrimaryKey = any, UniqueColumns = any, UniqueCol
|
|
|
1733
1733
|
noPrimaryKey: boolean;
|
|
1734
1734
|
comment?: string;
|
|
1735
1735
|
readOnly?: boolean;
|
|
1736
|
+
materialized?: boolean;
|
|
1736
1737
|
primaryKeys?: string[];
|
|
1737
1738
|
singlePrimaryKey: SinglePrimaryKey;
|
|
1738
1739
|
uniqueColumns: UniqueColumns;
|
|
@@ -1746,6 +1747,14 @@ interface QueryInternal$1<SinglePrimaryKey = any, UniqueColumns = any, UniqueCol
|
|
|
1746
1747
|
rls?: Rls$1.Options;
|
|
1747
1748
|
tableRls?: Rls$1.TableConfig;
|
|
1748
1749
|
tableGrants?: Grant.TableClassGrant[];
|
|
1750
|
+
viewData?: {
|
|
1751
|
+
sql?: string | RawSqlBase$1;
|
|
1752
|
+
recursive?: boolean;
|
|
1753
|
+
checkOption?: 'LOCAL' | 'CASCADED';
|
|
1754
|
+
securityBarrier?: boolean;
|
|
1755
|
+
securityInvoker?: boolean;
|
|
1756
|
+
withData?: boolean;
|
|
1757
|
+
};
|
|
1749
1758
|
managedRolesSql?: string;
|
|
1750
1759
|
defaultGrantedBy?: string;
|
|
1751
1760
|
grants?: Grant.InternalPrivilege[];
|
|
@@ -1769,12 +1778,12 @@ declare class RawSql$1<T extends Column$1.Pick.QueryColumn = Column$1.Pick.Query
|
|
|
1769
1778
|
value: T;
|
|
1770
1779
|
};
|
|
1771
1780
|
columnTypes: ColumnTypes;
|
|
1772
|
-
q: ExpressionData;
|
|
1781
|
+
q: ExpressionData$1;
|
|
1773
1782
|
_sql: string | TemplateLiteralArgs$1;
|
|
1774
1783
|
_values?: RawSQLValues;
|
|
1775
1784
|
constructor(sql: string | TemplateLiteralArgs$1, values?: RawSQLValues, type?: T);
|
|
1776
1785
|
values<Self extends RawSqlBase$1>(this: Self, values: RawSQLValues): Self;
|
|
1777
|
-
makeSQL(ctx: ToSqlValues, quotedAs?: string): string;
|
|
1786
|
+
makeSQL(ctx: ToSqlValues$1, quotedAs?: string): string;
|
|
1778
1787
|
}
|
|
1779
1788
|
interface DynamicRawSQL$1<T extends Column$1.Pick.QueryColumn> extends Expression$1<T>, ExpressionTypeMethod {}
|
|
1780
1789
|
declare class DynamicRawSQL$1<T extends Column$1.Pick.QueryColumn, ColumnTypes = DefaultColumnTypes$1<ColumnSchemaConfig$1>> extends Expression$1<T> {
|
|
@@ -1783,10 +1792,10 @@ declare class DynamicRawSQL$1<T extends Column$1.Pick.QueryColumn, ColumnTypes =
|
|
|
1783
1792
|
result: {
|
|
1784
1793
|
value: T;
|
|
1785
1794
|
};
|
|
1786
|
-
q: ExpressionData;
|
|
1795
|
+
q: ExpressionData$1;
|
|
1787
1796
|
dynamicBefore: boolean;
|
|
1788
1797
|
constructor(fn: DynamicSQLArg<T>);
|
|
1789
|
-
makeSQL(ctx: ToSQLCtx, quotedAs?: string): string;
|
|
1798
|
+
makeSQL(ctx: ToSQLCtx$1, quotedAs?: string): string;
|
|
1790
1799
|
}
|
|
1791
1800
|
interface SqlFn$1 {
|
|
1792
1801
|
<T, Args extends TemplateLiteralArgs$1 | [sql: string] | [values: RecordUnknown$1, sql?: string]>(this: T, ...args: Args): Args extends [RecordUnknown$1] ? (...sql: TemplateLiteralArgs$1) => RawSql$1<Column$1.Pick.QueryColumn, T> : RawSql$1<Column$1.Pick.QueryColumn, T>;
|
|
@@ -1818,7 +1827,7 @@ declare class UnsafeSqlExpression extends Expression$1 {
|
|
|
1818
1827
|
result: {
|
|
1819
1828
|
value: Column$1.Pick.QueryColumn;
|
|
1820
1829
|
};
|
|
1821
|
-
q: ExpressionData;
|
|
1830
|
+
q: ExpressionData$1;
|
|
1822
1831
|
constructor(sql: string | number | boolean);
|
|
1823
1832
|
makeSQL(): string;
|
|
1824
1833
|
}
|
|
@@ -2655,28 +2664,28 @@ declare class ColumnRefExpression<T extends Column$1.Pick.QueryColumn> extends E
|
|
|
2655
2664
|
result: {
|
|
2656
2665
|
value: T;
|
|
2657
2666
|
};
|
|
2658
|
-
q: ExpressionData;
|
|
2667
|
+
q: ExpressionData$1;
|
|
2659
2668
|
constructor(value: T, name: string);
|
|
2660
|
-
makeSQL(ctx: ToSQLCtx, quotedAs?: string): string;
|
|
2669
|
+
makeSQL(ctx: ToSQLCtx$1, quotedAs?: string): string;
|
|
2661
2670
|
}
|
|
2662
2671
|
declare class RefExpression<T extends Column$1.Pick.QueryColumn> extends Expression$1<T> {
|
|
2663
2672
|
ref: string;
|
|
2664
2673
|
result: {
|
|
2665
2674
|
value: T;
|
|
2666
2675
|
};
|
|
2667
|
-
q: ExpressionData;
|
|
2676
|
+
q: ExpressionData$1;
|
|
2668
2677
|
table?: string;
|
|
2669
2678
|
constructor(value: T, query: Query, ref: string);
|
|
2670
|
-
makeSQL(ctx: ToSQLCtx): string;
|
|
2679
|
+
makeSQL(ctx: ToSQLCtx$1): string;
|
|
2671
2680
|
}
|
|
2672
2681
|
declare class ValExpression extends Expression$1 {
|
|
2673
2682
|
value: unknown;
|
|
2674
2683
|
result: {
|
|
2675
2684
|
value: Column$1;
|
|
2676
2685
|
};
|
|
2677
|
-
q: ExpressionData;
|
|
2686
|
+
q: ExpressionData$1;
|
|
2678
2687
|
constructor(value: unknown);
|
|
2679
|
-
makeSQL(ctx: ToSqlValues): string;
|
|
2688
|
+
makeSQL(ctx: ToSqlValues$1): string;
|
|
2680
2689
|
}
|
|
2681
2690
|
type SortDir = 'ASC' | 'DESC' | 'ASC NULLS FIRST' | 'DESC NULLS LAST';
|
|
2682
2691
|
type OrderItem = string | {
|
|
@@ -2878,7 +2887,7 @@ type SelectArgs<T extends SelectSelf> = ('*' | keyof T['__selectable'])[];
|
|
|
2878
2887
|
interface SubQueryAddition<T extends PickQueryWithData> extends IsSubQuery {
|
|
2879
2888
|
withData: T['withData'];
|
|
2880
2889
|
}
|
|
2881
|
-
type SelectAsFnArg<T extends PickQueryRelationsWithData> = EmptyObject$1 extends T['relations'] ? T : { [K in keyof T['relations'] | keyof T]: K extends keyof T['relations'] ? T['relations'][K]
|
|
2890
|
+
type SelectAsFnArg<T extends PickQueryRelationsWithData> = EmptyObject$1 extends T['relations'] ? T : { [K in keyof T['relations'] | keyof T]: K extends keyof T['relations'] ? RelationQueryMaybeSingle<T['relations'][K]> & SubQueryAddition<T> : K extends keyof T ? T[K] : never };
|
|
2882
2891
|
interface SelectAsArg<T extends SelectSelf> {
|
|
2883
2892
|
[K: string]: keyof T['__selectable'] | Expression$1 | ((q: SelectAsFnArg<T>) => unknown);
|
|
2884
2893
|
}
|
|
@@ -3744,9 +3753,9 @@ declare class OrExpression extends Expression$1<BooleanQueryColumn> {
|
|
|
3744
3753
|
result: {
|
|
3745
3754
|
value: BooleanQueryColumn;
|
|
3746
3755
|
};
|
|
3747
|
-
q: ExpressionData;
|
|
3756
|
+
q: ExpressionData$1;
|
|
3748
3757
|
constructor(args: [OrExpressionArg, ...OrExpressionArg[]]);
|
|
3749
|
-
makeSQL(ctx: ToSQLCtx, quotedAs?: string): string;
|
|
3758
|
+
makeSQL(ctx: ToSQLCtx$1, quotedAs?: string): string;
|
|
3750
3759
|
}
|
|
3751
3760
|
interface QueryReturnsFnAdd<T extends PickQueryColumTypes> extends PickQueryHasSelect {
|
|
3752
3761
|
type<C extends Column$1.Pick.QueryColumn>(fn: (types: T['columnTypes']) => C): { [K in keyof T]: K extends 'result' ? {
|
|
@@ -4929,7 +4938,7 @@ type SelectableOrExpression<T extends PickQuerySelectable = PickQuerySelectable,
|
|
|
4929
4938
|
type SelectableOrExpressions<T extends PickQuerySelectable = PickQuerySelectable, C extends Column$1.Pick.QueryColumn = Column$1.Pick.QueryColumn> = ('*' | keyof T['__selectable'] | Expression$1<C>)[];
|
|
4930
4939
|
type ExpressionOutput<T extends PickQuerySelectable, Expr extends SelectableOrExpression<T>> = Expr extends keyof T['__selectable'] ? T['__selectable'][Expr]['column'] : Expr extends Expression$1 ? Expr['result']['value'] : never;
|
|
4931
4940
|
type ExpressionChain = (OperatorToSQL | unknown)[];
|
|
4932
|
-
interface ExpressionData extends HasBeforeAndBeforeSet {
|
|
4941
|
+
interface ExpressionData$1 extends HasBeforeAndBeforeSet {
|
|
4933
4942
|
chain?: ExpressionChain;
|
|
4934
4943
|
expr?: Expression$1;
|
|
4935
4944
|
before?: QueryBeforeHook$1[];
|
|
@@ -4939,12 +4948,12 @@ declare abstract class Expression$1<T extends Column$1.Pick.QueryColumn = Column
|
|
|
4939
4948
|
abstract result: {
|
|
4940
4949
|
value: T;
|
|
4941
4950
|
};
|
|
4942
|
-
abstract q: ExpressionData;
|
|
4951
|
+
abstract q: ExpressionData$1;
|
|
4943
4952
|
meta: {
|
|
4944
4953
|
kind: 'select';
|
|
4945
4954
|
};
|
|
4946
|
-
toSQL(ctx: ToSqlValues, quotedAs?: string): string;
|
|
4947
|
-
abstract makeSQL(ctx: ToSqlValues, quotedAs?: string): string;
|
|
4955
|
+
toSQL(ctx: ToSqlValues$1, quotedAs?: string): string;
|
|
4956
|
+
abstract makeSQL(ctx: ToSqlValues$1, quotedAs?: string): string;
|
|
4948
4957
|
}
|
|
4949
4958
|
type TemplateLiteralArgs$1 = [strings: TemplateStringsArray, ...values: unknown[]];
|
|
4950
4959
|
interface DynamicSQLArg<T extends Column$1.Pick.QueryColumn> {
|
|
@@ -5040,7 +5049,6 @@ interface PickQuerySelectableResultRelationsWithDataReturnTypeShapeAs extends Pi
|
|
|
5040
5049
|
interface PickQuerySelectableShape extends PickQuerySelectable, PickQueryShape$1 {}
|
|
5041
5050
|
interface PickQuerySelectableColumnTypes extends PickQuerySelectable, PickQueryColumTypes {}
|
|
5042
5051
|
interface PickQuerySelectableShapeRelationsReturnTypeIsSubQuery extends PickQueryIsSubQuery, PickQuerySelectable, PickQueryShape$1, PickQueryRelations$1, PickQueryReturnType {}
|
|
5043
|
-
interface PickQuerySelectableReturnType extends PickQuerySelectable, PickQueryReturnType {}
|
|
5044
5052
|
interface PickQuerySelectableResultInputTypeAs extends PickQuerySelectableResult, PickQueryInputType$1, PickQueryAs {}
|
|
5045
5053
|
interface PickQuerySelectableResultAs extends PickQuerySelectable, PickQueryResult, PickQueryAs {}
|
|
5046
5054
|
interface PickQueryIsSubQuery {
|
|
@@ -5694,8 +5702,8 @@ type CreateData$1<T extends CreateSelf$1> = EmptyObject$1 extends T['relations']
|
|
|
5694
5702
|
type CreateDataWithDefaults<T extends CreateSelf$1, Defaults extends PropertyKey> = { [K in keyof T['inputType'] as K extends Defaults ? never : K]: K extends Defaults ? never : CreateColumn<T, K> } & { [K in Defaults]?: K extends keyof T['inputType'] ? CreateColumn<T, K> : never };
|
|
5695
5703
|
type CreateDataWithDefaultsForRelations<T extends CreateSelf$1, Defaults extends keyof T['inputType'], OmitFKeys extends PropertyKey> = { [K in keyof T['inputType'] as K extends Defaults | OmitFKeys ? never : K]: K extends Defaults | OmitFKeys ? never : CreateColumn<T, K> } & { [K in Defaults as K extends OmitFKeys ? never : K]?: CreateColumn<T, K> };
|
|
5696
5704
|
type CreateColumn<T extends CreateSelf$1, K extends keyof T['inputType']> = T['inputType'][K] | ((q: T) => QueryOrExpression$1<T['inputType'][K]>);
|
|
5697
|
-
type CreateRelationsData<T extends CreateSelf$1> = CreateDataWithDefaultsForRelations<T, keyof T['__defaults'], T['relations'][keyof T['relations']]['omitForeignKeyInCreate']> & CreateRelationsDataOmittingFKeys<T, T['relations'][keyof T['relations']]['dataForCreate']
|
|
5698
|
-
type CreateRelationsDataOmittingFKeys<T extends CreateSelf$1, Union> = (Union extends RelationConfigDataForCreate ? (u: Union['columns'] extends keyof T['__defaults'] ?
|
|
5705
|
+
type CreateRelationsData<T extends CreateSelf$1> = CreateDataWithDefaultsForRelations<T, keyof T['__defaults'], T['relations'][keyof T['relations']]['omitForeignKeyInCreate']> & CreateRelationsDataOmittingFKeys<T, T['relations'][keyof T['relations']]['dataForCreate']>;
|
|
5706
|
+
type CreateRelationsDataOmittingFKeys<T extends CreateSelf$1, Union> = (Union extends RelationConfigDataForCreate ? (u: Union['columns'] extends keyof T['__defaults'] ? Pick<CreateDataWithDefaults<T, keyof T['__defaults']>, Union['columns']> & Partial<Union['nested']> : (Pick<{ [P in keyof T['inputType']]: CreateColumn<T, P> }, Union['columns'] & keyof T['inputType']> & { [K in keyof Union['nested']]?: never }) | Union['nested']) => void : (u: Union) => void) extends ((u: infer Obj) => void) ? Obj : never;
|
|
5699
5707
|
type CreateResult<T extends CreateSelf$1, Data> = T extends {
|
|
5700
5708
|
isCount: true;
|
|
5701
5709
|
} ? T : T['returnType'] extends undefined | 'all' ? SetQueryReturnsOneResult<T, NarrowCreateResult<T, Data>> : T['returnType'] extends 'pluck' ? SetQueryReturnsColumnResult<T, NarrowCreateResult<T, Data>> : SetQueryResult<T, NarrowCreateResult<T, Data>>;
|
|
@@ -6878,6 +6886,14 @@ type MergeQueryResult<T extends PickQueryHasSelectResult, Q extends PickQueryHas
|
|
|
6878
6886
|
declare class MergeQueryMethods {
|
|
6879
6887
|
merge<T extends MergeQueryArg, Q extends MergeQueryArg>(this: T, q: Q): MergeQuery$1<T, Q>;
|
|
6880
6888
|
}
|
|
6889
|
+
interface ColumnDataSelectSqlProp {
|
|
6890
|
+
selectSql?: Expression$1;
|
|
6891
|
+
selectSqlFn?: SelectSqlCallback;
|
|
6892
|
+
}
|
|
6893
|
+
interface SelectSqlCallback {
|
|
6894
|
+
(column: ColumnRefExpression<Column$1.Pick.QueryColumn>): Expression$1;
|
|
6895
|
+
}
|
|
6896
|
+
type SelectSqlColumn<T extends Column$1.Pick.DataAndDataType, Expr extends Expression$1> = unknown extends Expr['result']['value']['outputType'] ? T : { [K in keyof T]: K extends 'outputType' ? Expr['result']['value']['outputType'] : T[K] };
|
|
6881
6897
|
type UnionToIntersection<U> = (U extends any ? (x: U) => void : never) extends ((x: infer I) => void) ? I : never;
|
|
6882
6898
|
type MaybeArray$1<T> = T | T[];
|
|
6883
6899
|
type MaybePromise$1<T> = T | Promise<T>;
|
|
@@ -7530,6 +7546,13 @@ declare abstract class Column$1<Schema extends ColumnTypeSchemaArg$1 = ColumnTyp
|
|
|
7530
7546
|
* ```
|
|
7531
7547
|
*/
|
|
7532
7548
|
select<T extends Column.Pick.Data, Value extends boolean>(this: T, value: Value): Column.Modifiers.DefaultSelect<T, Value>;
|
|
7549
|
+
/**
|
|
7550
|
+
* Set SQL to use when selecting this column.
|
|
7551
|
+
*
|
|
7552
|
+
* The column remains a regular writable database column. Create, update,
|
|
7553
|
+
* filters, ordering, grouping, and migrations still use the physical column.
|
|
7554
|
+
*/
|
|
7555
|
+
selectSql<T extends Column.Pick.DataAndDataType, Expr extends Expression$1>(this: T, fn: (column: ColumnRefExpression<T & Column.Pick.QueryColumn>) => Expr): SelectSqlColumn<T, Expr>;
|
|
7533
7556
|
/**
|
|
7534
7557
|
* Forbid the column to be used in [create](/guide/create-update-delete.html#create-insert) and [update](/guide/create-update-delete.html#update) methods.
|
|
7535
7558
|
*
|
|
@@ -7938,7 +7961,7 @@ declare abstract class Column$1<Schema extends ColumnTypeSchemaArg$1 = ColumnTyp
|
|
|
7938
7961
|
*/
|
|
7939
7962
|
generated<T extends Column.Pick.Data>(this: T, ...args: StaticSQLArgs): Column.Modifiers.Generated<T>;
|
|
7940
7963
|
}
|
|
7941
|
-
interface ColumnDataComputedProp {
|
|
7964
|
+
interface ColumnDataComputedProp extends ColumnDataSelectSqlProp {
|
|
7942
7965
|
computed?: Expression$1;
|
|
7943
7966
|
}
|
|
7944
7967
|
declare class ComputedColumn {
|
|
@@ -7985,6 +8008,10 @@ type QueryType = undefined | null | 'upsert' | 'insert' | 'update' | 'delete';
|
|
|
7985
8008
|
interface AsFn {
|
|
7986
8009
|
(as: string): void;
|
|
7987
8010
|
}
|
|
8011
|
+
interface SelectAllColumnExpression {
|
|
8012
|
+
(ctx: ToSQLCtx$1, quotedAs?: string): string;
|
|
8013
|
+
}
|
|
8014
|
+
type SelectAllColumn = string | SelectAllColumnExpression;
|
|
7988
8015
|
interface QueryData$1 extends QueryDataAliases, PickQueryDataParsers, HasHookSelect, MutativeQueriesSelectRelationsQueryData {
|
|
7989
8016
|
type: QueryType;
|
|
7990
8017
|
adapter: Adapter$1;
|
|
@@ -8020,7 +8047,7 @@ interface QueryData$1 extends QueryDataAliases, PickQueryDataParsers, HasHookSel
|
|
|
8020
8047
|
sql: string;
|
|
8021
8048
|
aliases: string[];
|
|
8022
8049
|
};
|
|
8023
|
-
selectAllColumns?:
|
|
8050
|
+
selectAllColumns?: SelectAllColumn[];
|
|
8024
8051
|
/**
|
|
8025
8052
|
* Subset of the `shape` that only includes columns with no `data.explicitSelect`.
|
|
8026
8053
|
*/
|
|
@@ -8149,17 +8176,17 @@ interface ToSqlOptionsInternal {
|
|
|
8149
8176
|
selectedCount?: number;
|
|
8150
8177
|
selectList?: string[];
|
|
8151
8178
|
}
|
|
8152
|
-
interface ToSqlValues {
|
|
8179
|
+
interface ToSqlValues$1 {
|
|
8153
8180
|
values: unknown[];
|
|
8154
8181
|
}
|
|
8155
|
-
interface TopToSqlCtx extends ToSqlOptionsInternal, HasCteHooks, ToSqlValues {
|
|
8182
|
+
interface TopToSqlCtx extends ToSqlOptionsInternal, HasCteHooks, ToSqlValues$1 {
|
|
8156
8183
|
topCtx: TopToSqlCtx;
|
|
8157
8184
|
topCTE?: TopCTE;
|
|
8158
8185
|
tableHook?: TableHook;
|
|
8159
8186
|
mutativeQueriesSelectRelationsSqlState?: MutativeQueriesSelectRelationsSqlState;
|
|
8160
8187
|
cteHookTopNullSelectAppended?: boolean;
|
|
8161
8188
|
}
|
|
8162
|
-
interface ToSQLCtx extends ToSqlOptionsInternal, ToSqlValues {
|
|
8189
|
+
interface ToSQLCtx$1 extends ToSqlOptionsInternal, ToSqlValues$1 {
|
|
8163
8190
|
topCtx: TopToSqlCtx;
|
|
8164
8191
|
qb: QueryBuilder;
|
|
8165
8192
|
q: QueryData$1;
|
|
@@ -8999,8 +9026,8 @@ declare class QueryMethods<ColumnTypes> {
|
|
|
8999
9026
|
if<T extends PickQueryResultReturnType, R extends PickQueryResult>(this: T, condition: boolean | null | undefined, fn: (q: T) => R & {
|
|
9000
9027
|
returnType: T['returnType'];
|
|
9001
9028
|
}): QueryIfResult<T, R>;
|
|
9002
|
-
queryRelated<T extends PickQueryRelations$1, RelName extends keyof T['relations']>(this: T, relName: RelName, params: T['relations'][RelName]['params']): T['relations'][RelName]
|
|
9003
|
-
chain<T extends PickQuerySelectableShapeRelationsReturnTypeIsSubQuery, RelName extends keyof T['relations']>(this: T, relName: RelName): T['__subQuery'] extends true | undefined ? [T['returnType'], T['relations'][RelName]['returnsOne']] extends ['one' | 'oneOrThrow', true] ? { [K in keyof T['relations'][RelName]
|
|
9029
|
+
queryRelated<T extends PickQueryRelations$1, RelName extends keyof T['relations']>(this: T, relName: RelName, params: T['relations'][RelName]['params']): RelationQueryMaybeSingle<T['relations'][RelName]>;
|
|
9030
|
+
chain<T extends PickQuerySelectableShapeRelationsReturnTypeIsSubQuery, RelName extends keyof T['relations']>(this: T, relName: RelName): T['__subQuery'] extends true | undefined ? [T['returnType'], T['relations'][RelName]['returnsOne']] extends ['one' | 'oneOrThrow', true] ? { [K in keyof RelationQueryMaybeSingle<T['relations'][RelName]>]: K extends '__selectable' ? RelationQueryMaybeSingle<T['relations'][RelName]>['__selectable'] & Omit<T['__selectable'], keyof T['shape']> : RelationQueryMaybeSingle<T['relations'][RelName]>[K] } & IsSubQuery : JoinResultRequireMain<T['relations'][RelName]['query'], Omit<T['__selectable'], keyof T['shape']>> : T['relations'][RelName]['query'];
|
|
9004
9031
|
}
|
|
9005
9032
|
interface DbExtension$1 {
|
|
9006
9033
|
name: string;
|
|
@@ -9012,6 +9039,8 @@ interface GeneratorIgnore$1 {
|
|
|
9012
9039
|
domains?: string[];
|
|
9013
9040
|
extensions?: string[];
|
|
9014
9041
|
tables?: string[];
|
|
9042
|
+
/** Regular views to ignore during migration generation. */
|
|
9043
|
+
views?: (string | RegExp)[];
|
|
9015
9044
|
grants?: Grant.Ignore;
|
|
9016
9045
|
}
|
|
9017
9046
|
interface DbDomainArg$1<ColumnTypes> {
|
|
@@ -9075,11 +9104,15 @@ interface Query extends IsQuery$1, PickQueryTable, PickQueryShape$1, PickQuerySe
|
|
|
9075
9104
|
relations: RelationsBase$1;
|
|
9076
9105
|
relationQueries: IsQueries;
|
|
9077
9106
|
error: new (message: string, length: number, name: QueryErrorName) => QueryError;
|
|
9078
|
-
|
|
9107
|
+
__readOnly: true | undefined;
|
|
9108
|
+
__materialized: true | undefined;
|
|
9079
9109
|
}
|
|
9080
9110
|
declare namespace Query {
|
|
9081
9111
|
interface NotReadOnlyQuery extends Query {
|
|
9082
|
-
|
|
9112
|
+
__readOnly: undefined;
|
|
9113
|
+
}
|
|
9114
|
+
interface MaterializedQuery extends Query {
|
|
9115
|
+
__materialized: true;
|
|
9083
9116
|
}
|
|
9084
9117
|
namespace Order {
|
|
9085
9118
|
type Arg<T extends Order.ArgThis> = Order.Arg<T>;
|
|
@@ -9093,7 +9126,10 @@ declare namespace Query {
|
|
|
9093
9126
|
returnType: 'value' | 'valueOrThrow';
|
|
9094
9127
|
}
|
|
9095
9128
|
interface IsNotReadOnly {
|
|
9096
|
-
|
|
9129
|
+
__readOnly: undefined;
|
|
9130
|
+
}
|
|
9131
|
+
interface IsMaterialized {
|
|
9132
|
+
__materialized: true;
|
|
9097
9133
|
}
|
|
9098
9134
|
}
|
|
9099
9135
|
}
|
|
@@ -9102,7 +9138,9 @@ type SelectableOrExpressionOfType<T extends PickQuerySelectable, C extends Colum
|
|
|
9102
9138
|
type SetQueryReturnsAll<T extends PickQueryResult> = { [K in keyof T]: K extends 'returnType' ? 'all' : K extends 'then' ? QueryThenShallowSimplifyArr<ColumnsShape$1.Output<T['result']>> : T[K] } & QueryHasWhere$1;
|
|
9103
9139
|
type SetQueryReturnsAllResult<T extends PickQueryResult, Result extends Column$1.QueryColumns> = { [K in keyof T]: K extends 'returnType' ? 'all' : K extends 'result' ? Result : K extends 'then' ? QueryThenShallowSimplifyArr<T['result']> : T[K] } & QueryHasWhere$1;
|
|
9104
9140
|
type QueryTakeOptional<T extends PickQueryResultReturnType> = T['returnType'] extends 'value' | 'pluck' | 'void' ? T : T['returnType'] extends 'valueOrThrow' ? { [K in keyof T]: K extends 'returnType' ? 'value' : K extends 'then' ? QueryThen<T['result']['value']['outputType'] | undefined> : T[K] } : { [K in keyof T]: K extends 'returnType' ? 'one' : K extends 'then' ? QueryThenShallowSimplifyOptional<ColumnsShape$1.Output<T['result']>> : T[K] };
|
|
9141
|
+
type QueryManyTakeOptional$1<T extends PickQueryResultReturnType> = { [K in keyof T]: K extends 'returnType' ? 'one' : K extends 'then' ? QueryThenShallowSimplifyOptional<ColumnsShape$1.Output<T['result']>> : T[K] };
|
|
9105
9142
|
type QueryTake<T extends PickQueryResultReturnType> = T['returnType'] extends 'valueOrThrow' | 'pluck' | 'void' ? T : T['returnType'] extends 'value' ? { [K in keyof T]: K extends 'returnType' ? 'valueOrThrow' : K extends 'then' ? QueryThen<Exclude<T['result']['value']['outputType'], undefined>> : T[K] } : { [K in keyof T]: K extends 'returnType' ? 'oneOrThrow' : K extends 'then' ? QueryThenShallowSimplify<ColumnsShape$1.Output<T['result']>> : T[K] };
|
|
9143
|
+
type QueryManyTake$1<T extends PickQueryResultReturnType> = { [K in keyof T]: K extends 'returnType' ? 'oneOrThrow' : K extends 'then' ? QueryThenShallowSimplify<ColumnsShape$1.Output<T['result']>> : T[K] };
|
|
9106
9144
|
type SetQueryReturnsOne<T extends PickQueryResult> = { [K in keyof T]: K extends 'returnType' ? 'oneOrThrow' : K extends 'then' ? QueryThenShallowSimplify<ColumnsShape$1.Output<T['result']>> : T[K] };
|
|
9107
9145
|
type SetQueryReturnsOneResult<T extends PickQueryResult, Result extends Column$1.QueryColumns> = { [K in keyof T]: K extends 'returnType' ? 'oneOrThrow' : K extends 'result' ? Result : K extends 'then' ? QueryThenShallowSimplify<ColumnsShape$1.Output<Result>> : T[K] };
|
|
9108
9146
|
type SetQueryReturnsRows<T extends PickQueryResult> = { [K in keyof T]: K extends 'returnType' ? 'rows' : K extends 'then' ? QueryThen<ColumnsShape$1.Output<T['result']>[keyof T['result']][][]> : T[K] };
|
|
@@ -9607,4 +9645,4 @@ declare class QueryUpdate {
|
|
|
9607
9645
|
*/
|
|
9608
9646
|
updateManyByOptional<T extends UpdateManyBySelf, Keys extends UpdateManyByKeys<T>, K = UpdateManyByKeyColumns<Keys>>(this: T, keys: Keys, data: UpdateManyByData<T, K>): UpdateManyResult<T> & QueryHasWhere$1;
|
|
9609
9647
|
}
|
|
9610
|
-
export { type Adapter, AdapterClass, type AdapterConfigBase, type AdapterParams, type AdapterSchemaConfigOptions, type AfterCommitStandaloneHook, type AfterHook, ArrayColumn, type ArrayColumnValue, type ArrayData, type AsyncState, type BaseNumberData, BigIntColumn, BigSerialColumn, BitColumn, BitVaryingColumn, BooleanColumn, BoxColumn, ByteaColumn, CannotMutateReadOnlyTableError, 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 Grant, 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, OrchidOrmError, type Ord, PathColumn, type PickQueryInputType, type PickQueryInternal, type PickQueryQ, type PickQueryRelations, type PickQuerySelectableRelations, type PickQueryShape, PointColumn, PolygonColumn, PostgisGeographyPointColumn, type QueryAfterHook, 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 Rls, type RlsPolicy, type SchemaConfigFnWithOptions, 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, type TransactionAdapter, TransactionAdapterClass, type TransactionOptions, TsQueryColumn, TsVectorColumn, UUIDColumn, type UniqueConstraints, type UniqueTableDataItem, UnknownColumn, type UpdateData, type UpdateSelf, type UpsertData, type UpsertThis, VarCharColumn, VirtualColumn, type WhereArg, XMLColumn, _appendQuery, _appendQueryOnUpsertCreate, _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, getDateAsDateFn, getDateAsNumberFn, getDriverErrorCode, getFreeAlias, getFreeSetAlias, getImportPath, getPrimaryKeys, getQueryAs, getQuerySchema, getShapeFromSelect, getSqlText, getStackTrace, getSupportedDefaultPrivileges, indexInnerToCode, internalSchemaConfig, isExpression, isQueryReturnsAll, isRawSQL, logColors, logParamToLogObject, makeColumnNullable, makeColumnTypes, makeColumnsByType, makeConnectRetryConfig, noop, objectHasValues, omit, parseTableData, parseTableDataInput, pathToLog, pick, pluralize, prepareSubQueryForSql, primaryKeyInnerToCode, pushQueryOnForOuter, pushQueryValueImmutable, pushTableDataCode, quoteIdentifier, quoteObjectKey, quoteTableWithSchema, raw, rawSqlToCode, referencesArgsToCode, returnArg, setColumnData, setColumnEncode, setColumnParse, setColumnParseNull, setCurrentColumnName, setDataValue, setDefaultLanguage, setFreeAlias, setQueryObjectValueImmutable, singleQuote, tableDataMethods, toArray, toCamelCase, toPascalCase, toSnakeCase, wrapAdapterFnWithConnectRetry };
|
|
9648
|
+
export { type Adapter, AdapterClass, type AdapterConfigBase, type AdapterParams, type AdapterSchemaConfigOptions, type AfterCommitStandaloneHook, type AfterHook, ArrayColumn, type ArrayColumnValue, type ArrayData, type AsyncState, type BaseNumberData, BigIntColumn, BigSerialColumn, BitColumn, BitVaryingColumn, BooleanColumn, BoxColumn, ByteaColumn, CannotMutateReadOnlyTableError, 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 ExpressionData, type FromArg, type FromResult, type GeneratorIgnore, type Grant, 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, OrchidOrmError, type Ord, PathColumn, type PickQueryInputType, type PickQueryInternal, type PickQueryQ, type PickQueryRelations, type PickQuerySelectableRelations, type PickQueryShape, PointColumn, PolygonColumn, PostgisGeographyPointColumn, type QueryAfterHook, 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 Rls, type RlsPolicy, type SchemaConfigFnWithOptions, 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, type ToSQLCtx, type ToSqlValues, type TransactionAdapter, TransactionAdapterClass, type TransactionOptions, TsQueryColumn, TsVectorColumn, UUIDColumn, type UniqueConstraints, type UniqueTableDataItem, UnknownColumn, type UpdateData, type UpdateSelf, type UpsertData, type UpsertThis, VarCharColumn, VirtualColumn, type WhereArg, XMLColumn, _appendQuery, _appendQueryOnUpsertCreate, _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, getDateAsDateFn, getDateAsNumberFn, getDriverErrorCode, getFreeAlias, getFreeSetAlias, getImportPath, getPrimaryKeys, getQueryAs, getQuerySchema, getShapeFromSelect, getSqlText, getStackTrace, getSupportedDefaultPrivileges, indexInnerToCode, internalSchemaConfig, isExpression, isQueryReturnsAll, isRawSQL, logColors, logParamToLogObject, makeColumnNullable, makeColumnTypes, makeColumnsByType, makeConnectRetryConfig, noop, objectHasValues, omit, parseTableData, parseTableDataInput, pathToLog, pick, pluralize, prepareSubQueryForSql, primaryKeyInnerToCode, pushQueryOnForOuter, pushQueryValueImmutable, pushTableDataCode, quoteIdentifier, quoteObjectKey, quoteTableWithSchema, raw, rawSqlToCode, referencesArgsToCode, returnArg, setColumnData, setColumnEncode, setColumnParse, setColumnParseNull, setCurrentColumnName, setDataValue, setDefaultLanguage, setFreeAlias, setQueryObjectValueImmutable, singleQuote, tableDataMethods, toArray, toCamelCase, toPascalCase, toSnakeCase, wrapAdapterFnWithConnectRetry };
|
package/dist/postgres-js.js
CHANGED
package/dist/postgres-js.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres-js.js","names":["AdapterClass","returnArg","noop"],"sources":["../src/adapters/driver-adapter-shared.ts","../src/adapters/postgres-js.ts"],"sourcesContent":["export interface PostgresInterval {\n years: number;\n months: number;\n days: number;\n hours: number;\n minutes: number;\n seconds: number;\n milliseconds: number;\n}\n\nconst intervalRegExp =\n /^\\s*(?:([+-]?\\d+)\\s+years?)?\\s*(?:([+-]?\\d+)\\s+mons?)?\\s*(?:([+-]?\\d+)\\s+days?)?\\s*(?:([+-])?(\\d+):(\\d\\d):(\\d\\d(?:\\.\\d{1,6})?))?\\s*$/;\n\nexport const parseInterval = (str: string): PostgresInterval => {\n const [, years, months, days, timeSign, hours, minutes, seconds] =\n intervalRegExp.exec(str) || [];\n const timeMultiplier = timeSign === '-' ? -1 : 1;\n const secondsFloat = Number(seconds) || 0;\n const wholeSeconds = Math.floor(secondsFloat);\n\n return {\n years: years ? Number(years) : 0,\n months: months ? Number(months) : 0,\n days: days ? Number(days) : 0,\n hours: hours ? timeMultiplier * Number(hours) : 0,\n minutes: minutes ? timeMultiplier * Number(minutes) : 0,\n seconds: timeMultiplier * wholeSeconds,\n milliseconds:\n Math.round(timeMultiplier * (secondsFloat - wholeSeconds) * 1000000) /\n 1000,\n };\n};\n","import postgres, { Row, RowList, TransactionSql } from 'postgres';\nimport {\n AdapterConfigBase,\n QueryResult,\n QueryResultRow,\n returnArg,\n DbOptions,\n DefaultColumnTypes,\n DefaultSchemaConfig,\n DbResult,\n ColumnSchemaConfig,\n AdapterClass,\n DriverAdapter,\n QuerySchema,\n noop,\n} from 'pqb/internal';\nimport { createDbWithAdapter } from 'pqb';\nimport { HackySavepointState } from './adapter';\nimport { parseInterval } from './driver-adapter-shared';\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\nclass PostgresJsArraysResult<\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n R extends any[],\n> implements QueryResult<R> {\n rowCount: number;\n rows: R[];\n fields: QueryResult['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\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 parse: (x: string) => Buffer.from(x.slice(2), 'hex'),\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: parseInterval,\n },\n json: {\n to: 114,\n from: [114, 3802],\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 = {\n ...params,\n types,\n };\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 async queryClient<T = QueryResultRow>(\n client: TransactionSql,\n text: string,\n values?: unknown[],\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 const result = await query;\n if (result.constructor === Array) {\n return (result as RawResult[]).map((res) =>\n makePostgresJsResult(res, arraysMode),\n ) as never;\n } else {\n return makePostgresJsResult(\n result as RawResult,\n arraysMode,\n ) as QueryResult<T>;\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 async savepoint<T>(\n client: postgres.TransactionSql,\n setClient: (client: postgres.TransactionSql) => void,\n name: string,\n cb: () => Promise<T>,\n ): Promise<T> {\n let result: T | undefined;\n await client\n .savepoint(name, async (savepointClient) => {\n setClient(savepointClient);\n result = await cb();\n })\n .finally(() => {\n setClient(client);\n });\n return result as T;\n },\n\n async hackySavepoint<T extends QueryResultRow>(\n client: postgres.TransactionSql,\n setClient: (client: postgres.TransactionSql) => void,\n state: HackySavepointState,\n text: string,\n values?: unknown[],\n arraysMode?: boolean,\n ): Promise<QueryResult<T>> {\n let resolve: () => void;\n let reject: (err: unknown) => void;\n const promise = new Promise<void>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n\n let resultResolve: (res: QueryResult<T>) => void;\n let resultReject: (err: unknown) => void;\n const resultPromise = new Promise<QueryResult<T>>((res, rej) => {\n resultResolve = res;\n resultReject = rej;\n });\n\n const savepointPromise = client\n .savepoint<void>(state.name, async (savepointClient) => {\n try {\n setClient(savepointClient);\n\n const res = await this.queryClient<T>(\n savepointClient,\n text,\n values,\n arraysMode,\n );\n resultResolve(res as QueryResult<T>);\n } catch (err) {\n resultReject(err);\n throw err;\n }\n\n return promise;\n })\n .finally(() => {\n setClient(client);\n });\n\n state.activeSavepoint = {\n async release() {\n resolve();\n await savepointPromise;\n },\n async rollback(err) {\n reject(err);\n await savepointPromise.catch(noop);\n },\n };\n\n return resultPromise;\n },\n\n close(client: postgres.Sql): Promise<void> {\n return client.end();\n },\n};\n\nconst makePostgresJsResult = (\n result: RawResult,\n arraysMode?: boolean,\n): QueryResult => {\n return arraysMode\n ? new PostgresJsArraysResult(result)\n : new PostgresJsResult(result);\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"postgres-js.js","names":["AdapterClass","returnArg","noop"],"sources":["../src/adapters/driver-adapter-shared.ts","../src/adapters/postgres-js.ts"],"sourcesContent":["export interface PostgresInterval {\n years: number;\n months: number;\n days: number;\n hours: number;\n minutes: number;\n seconds: number;\n milliseconds: number;\n}\n\nconst intervalRegExp =\n /^\\s*(?:([+-]?\\d+)\\s+years?)?\\s*(?:([+-]?\\d+)\\s+mons?)?\\s*(?:([+-]?\\d+)\\s+days?)?\\s*(?:([+-])?(\\d+):(\\d\\d):(\\d\\d(?:\\.\\d{1,6})?))?\\s*$/;\n\nexport const parseInterval = (str: string): PostgresInterval => {\n const [, years, months, days, timeSign, hours, minutes, seconds] =\n intervalRegExp.exec(str) || [];\n const timeMultiplier = timeSign === '-' ? -1 : 1;\n const secondsFloat = Number(seconds) || 0;\n const wholeSeconds = Math.floor(secondsFloat);\n\n return {\n years: years ? Number(years) : 0,\n months: months ? Number(months) : 0,\n days: days ? Number(days) : 0,\n hours: hours ? timeMultiplier * Number(hours) : 0,\n minutes: minutes ? timeMultiplier * Number(minutes) : 0,\n seconds: timeMultiplier * wholeSeconds,\n milliseconds:\n Math.round(timeMultiplier * (secondsFloat - wholeSeconds) * 1000000) /\n 1000,\n };\n};\n","import postgres, { Row, RowList, TransactionSql } from 'postgres';\nimport {\n AdapterConfigBase,\n QueryResult,\n QueryResultRow,\n returnArg,\n DbOptions,\n DefaultColumnTypes,\n DefaultSchemaConfig,\n DbResult,\n ColumnSchemaConfig,\n AdapterClass,\n DriverAdapter,\n QuerySchema,\n noop,\n} from 'pqb/internal';\nimport { createDbWithAdapter } from 'pqb';\nimport { HackySavepointState } from './adapter';\nimport { parseInterval } from './driver-adapter-shared';\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\nclass PostgresJsArraysResult<\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n R extends any[],\n> implements QueryResult<R> {\n rowCount: number;\n rows: R[];\n fields: QueryResult['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\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 parse: (x: string) => Buffer.from(x.slice(2), 'hex'),\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: parseInterval,\n },\n json: {\n to: 114,\n from: [114, 3802],\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 = {\n ...params,\n types,\n };\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 async queryClient<T = QueryResultRow>(\n client: TransactionSql,\n text: string,\n values?: unknown[],\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 const result = await query;\n if (result.constructor === Array) {\n return (result as RawResult[]).map((res) =>\n makePostgresJsResult(res, arraysMode),\n ) as never;\n } else {\n return makePostgresJsResult(\n result as RawResult,\n arraysMode,\n ) as QueryResult<T>;\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 async savepoint<T>(\n client: postgres.TransactionSql,\n setClient: (client: postgres.TransactionSql) => void,\n name: string,\n cb: () => Promise<T>,\n ): Promise<T> {\n let result: T | undefined;\n await client\n .savepoint(name, async (savepointClient) => {\n setClient(savepointClient);\n result = await cb();\n })\n .finally(() => {\n setClient(client);\n });\n return result as T;\n },\n\n async hackySavepoint<T extends QueryResultRow>(\n client: postgres.TransactionSql,\n setClient: (client: postgres.TransactionSql) => void,\n state: HackySavepointState,\n text: string,\n values?: unknown[],\n arraysMode?: boolean,\n ): Promise<QueryResult<T>> {\n let resolve: () => void;\n let reject: (err: unknown) => void;\n const promise = new Promise<void>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n\n let resultResolve: (res: QueryResult<T>) => void;\n let resultReject: (err: unknown) => void;\n const resultPromise = new Promise<QueryResult<T>>((res, rej) => {\n resultResolve = res;\n resultReject = rej;\n });\n\n const savepointPromise = client\n .savepoint<void>(state.name, async (savepointClient) => {\n try {\n setClient(savepointClient);\n\n const res = await this.queryClient<T>(\n savepointClient,\n text,\n values,\n arraysMode,\n );\n resultResolve(res as QueryResult<T>);\n } catch (err) {\n resultReject(err);\n throw err;\n }\n\n return promise;\n })\n .finally(() => {\n setClient(client);\n });\n\n state.activeSavepoint = {\n async release() {\n resolve();\n await savepointPromise;\n },\n async rollback(err) {\n reject(err);\n await savepointPromise.catch(noop);\n },\n };\n\n return resultPromise;\n },\n\n close(client: postgres.Sql): Promise<void> {\n return client.end();\n },\n};\n\nconst makePostgresJsResult = (\n result: RawResult,\n arraysMode?: boolean,\n): QueryResult => {\n return arraysMode\n ? new PostgresJsArraysResult(result)\n : new PostgresJsResult(result);\n};\n"],"mappings":"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"}
|
package/dist/postgres-js.mjs
CHANGED
package/dist/postgres-js.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres-js.mjs","names":[],"sources":["../src/adapters/driver-adapter-shared.ts","../src/adapters/postgres-js.ts"],"sourcesContent":["export interface PostgresInterval {\n years: number;\n months: number;\n days: number;\n hours: number;\n minutes: number;\n seconds: number;\n milliseconds: number;\n}\n\nconst intervalRegExp =\n /^\\s*(?:([+-]?\\d+)\\s+years?)?\\s*(?:([+-]?\\d+)\\s+mons?)?\\s*(?:([+-]?\\d+)\\s+days?)?\\s*(?:([+-])?(\\d+):(\\d\\d):(\\d\\d(?:\\.\\d{1,6})?))?\\s*$/;\n\nexport const parseInterval = (str: string): PostgresInterval => {\n const [, years, months, days, timeSign, hours, minutes, seconds] =\n intervalRegExp.exec(str) || [];\n const timeMultiplier = timeSign === '-' ? -1 : 1;\n const secondsFloat = Number(seconds) || 0;\n const wholeSeconds = Math.floor(secondsFloat);\n\n return {\n years: years ? Number(years) : 0,\n months: months ? Number(months) : 0,\n days: days ? Number(days) : 0,\n hours: hours ? timeMultiplier * Number(hours) : 0,\n minutes: minutes ? timeMultiplier * Number(minutes) : 0,\n seconds: timeMultiplier * wholeSeconds,\n milliseconds:\n Math.round(timeMultiplier * (secondsFloat - wholeSeconds) * 1000000) /\n 1000,\n };\n};\n","import postgres, { Row, RowList, TransactionSql } from 'postgres';\nimport {\n AdapterConfigBase,\n QueryResult,\n QueryResultRow,\n returnArg,\n DbOptions,\n DefaultColumnTypes,\n DefaultSchemaConfig,\n DbResult,\n ColumnSchemaConfig,\n AdapterClass,\n DriverAdapter,\n QuerySchema,\n noop,\n} from 'pqb/internal';\nimport { createDbWithAdapter } from 'pqb';\nimport { HackySavepointState } from './adapter';\nimport { parseInterval } from './driver-adapter-shared';\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\nclass PostgresJsArraysResult<\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n R extends any[],\n> implements QueryResult<R> {\n rowCount: number;\n rows: R[];\n fields: QueryResult['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\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 parse: (x: string) => Buffer.from(x.slice(2), 'hex'),\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: parseInterval,\n },\n json: {\n to: 114,\n from: [114, 3802],\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 = {\n ...params,\n types,\n };\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 async queryClient<T = QueryResultRow>(\n client: TransactionSql,\n text: string,\n values?: unknown[],\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 const result = await query;\n if (result.constructor === Array) {\n return (result as RawResult[]).map((res) =>\n makePostgresJsResult(res, arraysMode),\n ) as never;\n } else {\n return makePostgresJsResult(\n result as RawResult,\n arraysMode,\n ) as QueryResult<T>;\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 async savepoint<T>(\n client: postgres.TransactionSql,\n setClient: (client: postgres.TransactionSql) => void,\n name: string,\n cb: () => Promise<T>,\n ): Promise<T> {\n let result: T | undefined;\n await client\n .savepoint(name, async (savepointClient) => {\n setClient(savepointClient);\n result = await cb();\n })\n .finally(() => {\n setClient(client);\n });\n return result as T;\n },\n\n async hackySavepoint<T extends QueryResultRow>(\n client: postgres.TransactionSql,\n setClient: (client: postgres.TransactionSql) => void,\n state: HackySavepointState,\n text: string,\n values?: unknown[],\n arraysMode?: boolean,\n ): Promise<QueryResult<T>> {\n let resolve: () => void;\n let reject: (err: unknown) => void;\n const promise = new Promise<void>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n\n let resultResolve: (res: QueryResult<T>) => void;\n let resultReject: (err: unknown) => void;\n const resultPromise = new Promise<QueryResult<T>>((res, rej) => {\n resultResolve = res;\n resultReject = rej;\n });\n\n const savepointPromise = client\n .savepoint<void>(state.name, async (savepointClient) => {\n try {\n setClient(savepointClient);\n\n const res = await this.queryClient<T>(\n savepointClient,\n text,\n values,\n arraysMode,\n );\n resultResolve(res as QueryResult<T>);\n } catch (err) {\n resultReject(err);\n throw err;\n }\n\n return promise;\n })\n .finally(() => {\n setClient(client);\n });\n\n state.activeSavepoint = {\n async release() {\n resolve();\n await savepointPromise;\n },\n async rollback(err) {\n reject(err);\n await savepointPromise.catch(noop);\n },\n };\n\n return resultPromise;\n },\n\n close(client: postgres.Sql): Promise<void> {\n return client.end();\n },\n};\n\nconst makePostgresJsResult = (\n result: RawResult,\n arraysMode?: boolean,\n): QueryResult => {\n return arraysMode\n ? new PostgresJsArraysResult(result)\n : new PostgresJsResult(result);\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"postgres-js.mjs","names":[],"sources":["../src/adapters/driver-adapter-shared.ts","../src/adapters/postgres-js.ts"],"sourcesContent":["export interface PostgresInterval {\n years: number;\n months: number;\n days: number;\n hours: number;\n minutes: number;\n seconds: number;\n milliseconds: number;\n}\n\nconst intervalRegExp =\n /^\\s*(?:([+-]?\\d+)\\s+years?)?\\s*(?:([+-]?\\d+)\\s+mons?)?\\s*(?:([+-]?\\d+)\\s+days?)?\\s*(?:([+-])?(\\d+):(\\d\\d):(\\d\\d(?:\\.\\d{1,6})?))?\\s*$/;\n\nexport const parseInterval = (str: string): PostgresInterval => {\n const [, years, months, days, timeSign, hours, minutes, seconds] =\n intervalRegExp.exec(str) || [];\n const timeMultiplier = timeSign === '-' ? -1 : 1;\n const secondsFloat = Number(seconds) || 0;\n const wholeSeconds = Math.floor(secondsFloat);\n\n return {\n years: years ? Number(years) : 0,\n months: months ? Number(months) : 0,\n days: days ? Number(days) : 0,\n hours: hours ? timeMultiplier * Number(hours) : 0,\n minutes: minutes ? timeMultiplier * Number(minutes) : 0,\n seconds: timeMultiplier * wholeSeconds,\n milliseconds:\n Math.round(timeMultiplier * (secondsFloat - wholeSeconds) * 1000000) /\n 1000,\n };\n};\n","import postgres, { Row, RowList, TransactionSql } from 'postgres';\nimport {\n AdapterConfigBase,\n QueryResult,\n QueryResultRow,\n returnArg,\n DbOptions,\n DefaultColumnTypes,\n DefaultSchemaConfig,\n DbResult,\n ColumnSchemaConfig,\n AdapterClass,\n DriverAdapter,\n QuerySchema,\n noop,\n} from 'pqb/internal';\nimport { createDbWithAdapter } from 'pqb';\nimport { HackySavepointState } from './adapter';\nimport { parseInterval } from './driver-adapter-shared';\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\nclass PostgresJsArraysResult<\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n R extends any[],\n> implements QueryResult<R> {\n rowCount: number;\n rows: R[];\n fields: QueryResult['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\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 parse: (x: string) => Buffer.from(x.slice(2), 'hex'),\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: parseInterval,\n },\n json: {\n to: 114,\n from: [114, 3802],\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 = {\n ...params,\n types,\n };\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 async queryClient<T = QueryResultRow>(\n client: TransactionSql,\n text: string,\n values?: unknown[],\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 const result = await query;\n if (result.constructor === Array) {\n return (result as RawResult[]).map((res) =>\n makePostgresJsResult(res, arraysMode),\n ) as never;\n } else {\n return makePostgresJsResult(\n result as RawResult,\n arraysMode,\n ) as QueryResult<T>;\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 async savepoint<T>(\n client: postgres.TransactionSql,\n setClient: (client: postgres.TransactionSql) => void,\n name: string,\n cb: () => Promise<T>,\n ): Promise<T> {\n let result: T | undefined;\n await client\n .savepoint(name, async (savepointClient) => {\n setClient(savepointClient);\n result = await cb();\n })\n .finally(() => {\n setClient(client);\n });\n return result as T;\n },\n\n async hackySavepoint<T extends QueryResultRow>(\n client: postgres.TransactionSql,\n setClient: (client: postgres.TransactionSql) => void,\n state: HackySavepointState,\n text: string,\n values?: unknown[],\n arraysMode?: boolean,\n ): Promise<QueryResult<T>> {\n let resolve: () => void;\n let reject: (err: unknown) => void;\n const promise = new Promise<void>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n\n let resultResolve: (res: QueryResult<T>) => void;\n let resultReject: (err: unknown) => void;\n const resultPromise = new Promise<QueryResult<T>>((res, rej) => {\n resultResolve = res;\n resultReject = rej;\n });\n\n const savepointPromise = client\n .savepoint<void>(state.name, async (savepointClient) => {\n try {\n setClient(savepointClient);\n\n const res = await this.queryClient<T>(\n savepointClient,\n text,\n values,\n arraysMode,\n );\n resultResolve(res as QueryResult<T>);\n } catch (err) {\n resultReject(err);\n throw err;\n }\n\n return promise;\n })\n .finally(() => {\n setClient(client);\n });\n\n state.activeSavepoint = {\n async release() {\n resolve();\n await savepointPromise;\n },\n async rollback(err) {\n reject(err);\n await savepointPromise.catch(noop);\n },\n };\n\n return resultPromise;\n },\n\n close(client: postgres.Sql): Promise<void> {\n return client.end();\n },\n};\n\nconst makePostgresJsResult = (\n result: RawResult,\n arraysMode?: boolean,\n): QueryResult => {\n return arraysMode\n ? new PostgresJsArraysResult(result)\n : new PostgresJsResult(result);\n};\n"],"mappings":"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"}
|