pqb 0.0.3 → 0.0.4

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.
@@ -0,0 +1,4154 @@
1
+ import { PoolConfig, Pool, PoolClient } from 'pg';
2
+
3
+ declare type AliasOrTable<T extends Pick<Query, 'tableAlias' | 'table'>> = T['tableAlias'] extends string ? T['tableAlias'] : T['table'] extends string ? T['table'] : never;
4
+ declare type StringKey<K extends PropertyKey> = Exclude<K, symbol | number>;
5
+ declare type RawExpression<C extends ColumnType = ColumnType> = {
6
+ __raw: string;
7
+ __values: unknown[];
8
+ __column: C;
9
+ };
10
+ declare type Expression<T extends Query = Query, C extends ColumnType = ColumnType> = keyof T['selectable'] | RawExpression<C>;
11
+ declare type ExpressionOfType<T extends Query, C extends ColumnType, Type> = {
12
+ [K in keyof T['selectable']]: ColumnOutput<T['selectable'][K]['column']> extends Type | null ? K : never;
13
+ }[Selectable<T>] | RawExpression<C>;
14
+ declare type NumberExpression<T extends Query, C extends ColumnType = ColumnType> = ExpressionOfType<T, C, number>;
15
+ declare type StringExpression<T extends Query, C extends ColumnType = ColumnType> = ExpressionOfType<T, C, string>;
16
+ declare type BooleanExpression<T extends Query, C extends ColumnType = ColumnType> = ExpressionOfType<T, C, boolean>;
17
+ declare type ExpressionOutput<T extends Query, Expr extends Expression<T>> = Expr extends keyof T['selectable'] ? T['selectable'][Expr]['column'] : Expr extends RawExpression<infer ColumnType> ? ColumnType : never;
18
+ declare const raw: <C extends ColumnType<unknown, Operators, unknown>>(...args: [column: C, sql: string, ...values: unknown[]] | [sql: string, ...values: unknown[]]) => RawExpression<C>;
19
+ declare const isRaw: (obj: object) => obj is RawExpression<ColumnType<unknown, Operators, unknown>>;
20
+ declare const getRaw: (raw: RawExpression, values: unknown[]) => string;
21
+ declare const EMPTY_OBJECT: {};
22
+ declare const getQueryParsers: (q: Query) => ColumnsParsers | undefined;
23
+
24
+ declare type WithSelectable<T extends QueryBase, W extends keyof T['withData']> = T['withData'][W] extends WithDataItem ? StringKey<keyof T['withData'][W]['shape']> | `${T['withData'][W]['table']}.${StringKey<keyof T['withData'][W]['shape']>}` : never;
25
+ declare type JoinArgs<T extends QueryBase, Q extends Query = Query, R extends keyof T['relations'] = keyof T['relations'], W extends keyof T['withData'] = keyof T['withData']> = [relation: R] | [
26
+ query: Q,
27
+ conditions: Record<Selectable<Q>, Selectable<T> | RawExpression> | RawExpression
28
+ ] | [
29
+ withAlias: W,
30
+ conditions: Record<WithSelectable<T, W>, Selectable<T> | RawExpression> | RawExpression
31
+ ] | [
32
+ query: Q,
33
+ leftColumn: Selectable<Q> | RawExpression,
34
+ rightColumn: Selectable<T> | RawExpression
35
+ ] | [
36
+ withAlias: W,
37
+ leftColumn: WithSelectable<T, W> | RawExpression,
38
+ rightColumn: Selectable<T> | RawExpression
39
+ ] | [
40
+ query: Q,
41
+ leftColumn: Selectable<Q> | RawExpression,
42
+ op: string,
43
+ rightColumn: Selectable<T> | RawExpression
44
+ ] | [
45
+ withAlias: W,
46
+ leftColumn: WithSelectable<T, W> | RawExpression,
47
+ op: string,
48
+ rightColumn: Selectable<T> | RawExpression
49
+ ];
50
+ declare type JoinResult<T extends Query, Args extends JoinArgs<T>, A extends Query | keyof T['relations'] = Args[0]> = AddQueryJoinedTable<T, A extends Query ? A : T['relations'] extends Record<string, Relation> ? A extends keyof T['relations'] ? T['relations'][A]['model'] : A extends keyof T['withData'] ? T['withData'][A] extends WithDataItem ? {
51
+ table: T['withData'][A]['table'];
52
+ tableAlias: undefined;
53
+ result: T['withData'][A]['shape'];
54
+ } : never : never : never>;
55
+ declare type JoinCallbackArg<T extends QueryBase> = Query | keyof T['withData'] | keyof T['relations'];
56
+ declare type JoinCallback<T extends QueryBase, Arg extends JoinCallbackArg<T>> = (q: OnQueryBuilder<T, Arg extends keyof T['withData'] ? T['withData'][Arg] extends WithDataItem ? {
57
+ table: T['withData'][Arg]['table'];
58
+ tableAlias: undefined;
59
+ shape: T['withData'][Arg]['shape'];
60
+ selectable: {
61
+ [K in keyof T['withData'][Arg]['shape'] as `${T['withData'][Arg]['table']}.${StringKey<K>}`]: {
62
+ as: StringKey<K>;
63
+ column: T['withData'][Arg]['shape'][K];
64
+ };
65
+ };
66
+ } : never : Arg extends Query ? Arg : T['relations'] extends Record<string, Relation> ? Arg extends keyof T['relations'] ? T['relations'][Arg]['model'] : never : never>) => OnQueryBuilder;
67
+ declare type JoinCallbackResult<T extends Query, Arg extends JoinCallbackArg<T>> = AddQueryJoinedTable<T, Arg extends Query ? Arg : T['relations'] extends Record<string, Relation> ? Arg extends keyof T['relations'] ? T['relations'][Arg]['model'] : Arg extends keyof T['withData'] ? T['withData'][Arg] extends WithDataItem ? {
68
+ table: T['withData'][Arg]['table'];
69
+ tableAlias: undefined;
70
+ result: T['withData'][Arg]['shape'];
71
+ } : never : never : never>;
72
+ declare class Join {
73
+ join<T extends Query, Args extends JoinArgs<T>>(this: T, ...args: Args): JoinResult<T, Args>;
74
+ join<T extends Query, Arg extends JoinCallbackArg<T>>(this: T, arg: Arg, cb: JoinCallback<T, Arg>): JoinCallbackResult<T, Arg>;
75
+ _join<T extends Query, Args extends JoinArgs<T>>(this: T, ...args: Args): JoinResult<T, Args>;
76
+ _join<T extends Query, Arg extends JoinCallbackArg<T>>(this: T, arg: Arg, cb: JoinCallback<T, Arg>): JoinCallbackResult<T, Arg>;
77
+ innerJoin<T extends Query, Args extends JoinArgs<T>>(this: T, ...args: Args): JoinResult<T, Args>;
78
+ innerJoin<T extends Query, Arg extends JoinCallbackArg<T>>(this: T, arg: Arg, cb: JoinCallback<T, Arg>): JoinCallbackResult<T, Arg>;
79
+ _innerJoin<T extends Query, Args extends JoinArgs<T>>(this: T, ...args: Args): JoinResult<T, Args>;
80
+ _innerJoin<T extends Query, Arg extends JoinCallbackArg<T>>(this: T, arg: Arg, cb: JoinCallback<T, Arg>): JoinCallbackResult<T, Arg>;
81
+ leftJoin<T extends Query, Args extends JoinArgs<T>>(this: T, ...args: Args): JoinResult<T, Args>;
82
+ leftJoin<T extends Query, Arg extends JoinCallbackArg<T>>(this: T, arg: Arg, cb: JoinCallback<T, Arg>): JoinCallbackResult<T, Arg>;
83
+ _leftJoin<T extends Query, Args extends JoinArgs<T>>(this: T, ...args: Args): JoinResult<T, Args>;
84
+ _leftJoin<T extends Query, Arg extends JoinCallbackArg<T>>(this: T, arg: Arg, cb: JoinCallback<T, Arg>): JoinCallbackResult<T, Arg>;
85
+ leftOuterJoin<T extends Query, Args extends JoinArgs<T>>(this: T, ...args: Args): JoinResult<T, Args>;
86
+ leftOuterJoin<T extends Query, Arg extends JoinCallbackArg<T>>(this: T, arg: Arg, cb: JoinCallback<T, Arg>): JoinCallbackResult<T, Arg>;
87
+ _leftOuterJoin<T extends Query, Args extends JoinArgs<T>>(this: T, ...args: Args): JoinResult<T, Args>;
88
+ _leftOuterJoin<T extends Query, Arg extends JoinCallbackArg<T>>(this: T, arg: Arg, cb: JoinCallback<T, Arg>): JoinCallbackResult<T, Arg>;
89
+ rightJoin<T extends Query, Args extends JoinArgs<T>>(this: T, ...args: Args): JoinResult<T, Args>;
90
+ rightJoin<T extends Query, Arg extends JoinCallbackArg<T>>(this: T, arg: Arg, cb: JoinCallback<T, Arg>): JoinCallbackResult<T, Arg>;
91
+ _rightJoin<T extends Query, Args extends JoinArgs<T>>(this: T, ...args: Args): JoinResult<T, Args>;
92
+ _rightJoin<T extends Query, Arg extends JoinCallbackArg<T>>(this: T, arg: Arg, cb: JoinCallback<T, Arg>): JoinCallbackResult<T, Arg>;
93
+ rightOuterJoin<T extends Query, Args extends JoinArgs<T>>(this: T, ...args: Args): JoinResult<T, Args>;
94
+ rightOuterJoin<T extends Query, Arg extends JoinCallbackArg<T>>(this: T, arg: Arg, cb: JoinCallback<T, Arg>): JoinCallbackResult<T, Arg>;
95
+ _rightOuterJoin<T extends Query, Args extends JoinArgs<T>>(this: T, ...args: Args): JoinResult<T, Args>;
96
+ _rightOuterJoin<T extends Query, Arg extends JoinCallbackArg<T>>(this: T, arg: Arg, cb: JoinCallback<T, Arg>): JoinCallbackResult<T, Arg>;
97
+ fullOuterJoin<T extends Query, Args extends JoinArgs<T>>(this: T, ...args: Args): JoinResult<T, Args>;
98
+ fullOuterJoin<T extends Query, Arg extends JoinCallbackArg<T>>(this: T, arg: Arg, cb: JoinCallback<T, Arg>): JoinCallbackResult<T, Arg>;
99
+ _fullOuterJoin<T extends Query, Args extends JoinArgs<T>>(this: T, ...args: Args): JoinResult<T, Args>;
100
+ _fullOuterJoin<T extends Query, Arg extends JoinCallbackArg<T>>(this: T, arg: Arg, cb: JoinCallback<T, Arg>): JoinCallbackResult<T, Arg>;
101
+ }
102
+ declare type PickQueryForSelect<T extends QueryBase = QueryBase> = Pick<T, 'table' | 'tableAlias' | 'selectable'>;
103
+ declare type OnArgs<Q extends {
104
+ selectable: SelectableBase;
105
+ }> = [leftColumn: keyof Q['selectable'], rightColumn: keyof Q['selectable']] | [
106
+ leftColumn: keyof Q['selectable'],
107
+ op: string,
108
+ rightColumn: keyof Q['selectable']
109
+ ];
110
+ declare const pushQueryOn: <T extends QueryBase>(q: T, joinFrom: QueryBase | string, joinTo: QueryBase | string, ...on: OnArgs<QueryBase>) => T;
111
+ declare const pushQueryOrOn: typeof pushQueryOn;
112
+ declare const addQueryOn: typeof pushQueryOrOn;
113
+ declare const addQueryOrOn: typeof pushQueryOrOn;
114
+ declare type OnJsonPathEqualsArgs<T extends QueryBase> = [
115
+ leftColumn: keyof T['selectable'],
116
+ leftPath: string,
117
+ rightColumn: keyof T['selectable'],
118
+ rightPath: string
119
+ ];
120
+ declare class OnQueryBuilder<S extends QueryBase = QueryBase, J extends PickQueryForSelect = PickQueryForSelect> extends WhereQueryBuilder<Omit<S, 'selectable'> & {
121
+ selectable: S['selectable'] & J['selectable'];
122
+ }> implements QueryBase {
123
+ joinTo: QueryBase | string;
124
+ constructor(q: {
125
+ table?: string;
126
+ query: {
127
+ as?: string;
128
+ };
129
+ }, joinTo: QueryBase | string);
130
+ on<T extends this>(this: T, ...args: OnArgs<T>): T;
131
+ _on<T extends this>(this: T, ...args: OnArgs<T>): T;
132
+ orOn<T extends this>(this: T, ...args: OnArgs<T>): T;
133
+ _orOn<T extends this>(this: T, ...args: OnArgs<T>): T;
134
+ onJsonPathEquals<T extends this>(this: T, ...args: OnJsonPathEqualsArgs<T>): T;
135
+ _onJsonPathEquals<T extends this>(this: T, ...args: OnJsonPathEqualsArgs<T>): T;
136
+ }
137
+
138
+ declare type WhereArg<T extends QueryBase> = (Omit<{
139
+ [K in keyof T['selectable']]?: T['selectable'][K]['column']['type'] | null | ColumnOperators<T['selectable'], K> | RawExpression;
140
+ }, 'NOT' | 'OR' | 'IN' | 'EXISTS'> & {
141
+ NOT?: MaybeArray<WhereArg<T>>;
142
+ OR?: MaybeArray<WhereArg<T>>[];
143
+ IN?: MaybeArray<{
144
+ columns: (keyof T['selectable'])[];
145
+ values: unknown[][] | Query | RawExpression;
146
+ }>;
147
+ EXISTS?: MaybeArray<JoinArgs<T> | JoinCallbackArg<T>>;
148
+ }) | QueryBase | RawExpression | ((q: WhereQueryBuilder<T>) => WhereQueryBuilder);
149
+ declare type WhereInColumn<T extends QueryBase> = keyof T['selectable'] | [keyof T['selectable'], ...(keyof T['selectable'])[]];
150
+ declare type WhereInValues<T extends QueryBase, Column extends WhereInColumn<T>> = Column extends keyof T['selectable'] ? T['selectable'][Column]['column']['type'][] | Query | RawExpression : ({
151
+ [I in keyof Column]: Column[I] extends keyof T['selectable'] ? T['selectable'][Column[I]]['column']['type'] : never;
152
+ } & {
153
+ length: Column extends {
154
+ length: number;
155
+ } ? Column['length'] : never;
156
+ })[] | Query | RawExpression;
157
+ declare type WhereResult<T extends QueryBase> = Omit<T, 'hasWhere'> & {
158
+ hasWhere: true;
159
+ };
160
+ declare type WhereInArg<T extends Pick<Query, 'selectable'>> = {
161
+ [K in keyof T['selectable']]?: T['selectable'][K]['column']['type'][] | Query | RawExpression;
162
+ };
163
+ declare const addWhere: <T extends Where>(q: T, args: WhereArg<T>[]) => WhereResult<T>;
164
+ declare const addWhereNot: <T extends QueryBase>(q: T, args: WhereArg<T>[]) => WhereResult<T>;
165
+ declare const addOr: <T extends QueryBase>(q: T, args: WhereArg<T>[]) => WhereResult<T>;
166
+ declare const addOrNot: <T extends QueryBase>(q: T, args: WhereArg<T>[]) => WhereResult<T>;
167
+ declare const addWhereIn: <T extends QueryBase>(q: T, and: boolean, arg: unknown, values: unknown[] | unknown[][] | Query | RawExpression | undefined, not?: boolean) => WhereResult<T>;
168
+ declare abstract class Where implements QueryBase {
169
+ abstract clone<T extends this>(this: T): T;
170
+ abstract selectable: SelectableBase;
171
+ abstract relations: RelationsBase;
172
+ abstract withData: WithDataBase;
173
+ abstract __model: Query;
174
+ query: QueryData;
175
+ table?: string;
176
+ tableAlias?: string;
177
+ where<T extends Where>(this: T, ...args: WhereArg<T>[]): WhereResult<T>;
178
+ _where<T extends Where>(this: T, ...args: WhereArg<T>[]): WhereResult<T>;
179
+ whereNot<T extends Where>(this: T, ...args: WhereArg<T>[]): WhereResult<T>;
180
+ _whereNot<T extends Where>(this: T, ...args: WhereArg<T>[]): WhereResult<T>;
181
+ and<T extends Where>(this: T, ...args: WhereArg<T>[]): WhereResult<T>;
182
+ _and<T extends Where>(this: T, ...args: WhereArg<T>[]): WhereResult<T>;
183
+ andNot<T extends Where>(this: T, ...args: WhereArg<T>[]): WhereResult<T>;
184
+ _andNot<T extends Where>(this: T, ...args: WhereArg<T>[]): WhereResult<T>;
185
+ or<T extends Where>(this: T, ...args: WhereArg<T>[]): WhereResult<T>;
186
+ _or<T extends Where>(this: T, ...args: WhereArg<T>[]): WhereResult<T>;
187
+ orNot<T extends Where>(this: T, ...args: WhereArg<T>[]): WhereResult<T>;
188
+ _orNot<T extends Where>(this: T, ...args: WhereArg<T>[]): WhereResult<T>;
189
+ whereIn<T extends Where, Column extends WhereInColumn<T>>(this: T, column: Column, values: WhereInValues<T, Column>): T;
190
+ whereIn<T extends Where>(this: T, arg: WhereInArg<T>): T;
191
+ _whereIn<T extends Where, Column extends WhereInColumn<T>>(this: T, column: Column, values: WhereInValues<T, Column>): WhereResult<T>;
192
+ _whereIn<T extends Where>(this: T, arg: WhereInArg<T>): WhereResult<T>;
193
+ orWhereIn<T extends Where, Column extends WhereInColumn<T>>(this: T, column: Column, values: WhereInValues<T, Column>): WhereResult<T>;
194
+ orWhereIn<T extends Where>(this: T, arg: WhereInArg<T>): WhereResult<T>;
195
+ _orWhereIn<T extends Where, Column extends WhereInColumn<T>>(this: T, column: Column, values: WhereInValues<T, Column>): WhereResult<T>;
196
+ _orWhereIn<T extends Where>(this: T, arg: WhereInArg<T>): WhereResult<T>;
197
+ whereNotIn<T extends Where, Column extends WhereInColumn<T>>(this: T, column: Column, values: WhereInValues<T, Column>): WhereResult<T>;
198
+ whereNotIn<T extends Where>(this: T, arg: WhereInArg<T>): WhereResult<T>;
199
+ _whereNotIn<T extends Where, Column extends WhereInColumn<T>>(this: T, column: Column, values: WhereInValues<T, Column>): WhereResult<T>;
200
+ _whereNotIn<T extends Where>(this: T, arg: WhereInArg<T>): WhereResult<T>;
201
+ orWhereNotIn<T extends Where, Column extends WhereInColumn<T>>(this: T, column: Column, values: WhereInValues<T, Column>): WhereResult<T>;
202
+ orWhereNotIn<T extends Where>(this: T, arg: WhereInArg<T>): WhereResult<T>;
203
+ _orWhereNotIn<T extends Where, Column extends WhereInColumn<T>>(this: T, column: Column, values: WhereInValues<T, Column>): WhereResult<T>;
204
+ _orWhereNotIn<T extends Where>(this: T, arg: WhereInArg<T>): WhereResult<T>;
205
+ whereExists<T extends Where, Args extends JoinArgs<T>>(this: T, ...args: Args): WhereResult<T>;
206
+ whereExists<T extends Where, Arg extends JoinCallbackArg<T>>(this: T, arg: Arg, cb: JoinCallback<T, Arg>): WhereResult<T>;
207
+ _whereExists<T extends Where, Args extends JoinArgs<T>>(this: T, ...args: Args): WhereResult<T>;
208
+ _whereExists<T extends Where, Arg extends JoinCallbackArg<T>>(this: T, arg: Arg, cb: JoinCallback<T, Arg>): WhereResult<T>;
209
+ orWhereExists<T extends Where, Args extends JoinArgs<T>>(this: T, ...args: Args): WhereResult<T>;
210
+ orWhereExists<T extends Where, Arg extends JoinCallbackArg<T>>(this: T, arg: Arg, cb: JoinCallback<T, Arg>): WhereResult<T>;
211
+ _orWhereExists<T extends Where, Args extends JoinArgs<T>>(this: T, ...args: Args): WhereResult<T>;
212
+ _orWhereExists<T extends Where, Arg extends JoinCallbackArg<T>>(this: T, arg: Arg, cb: JoinCallback<T, Arg>): WhereResult<T>;
213
+ whereNotExists<T extends Where, Args extends JoinArgs<T>>(this: T, ...args: Args): WhereResult<T>;
214
+ whereNotExists<T extends Where, Arg extends JoinCallbackArg<T>>(this: T, arg: Arg, cb: JoinCallback<T, Arg>): WhereResult<T>;
215
+ _whereNotExists<T extends Where, Args extends JoinArgs<T>>(this: T, ...args: Args): WhereResult<T>;
216
+ _whereNotExists<T extends Where, Arg extends JoinCallbackArg<T>>(this: T, arg: Arg, cb: JoinCallback<T, Arg>): WhereResult<T>;
217
+ orWhereNotExists<T extends Where, Args extends JoinArgs<T>>(this: T, ...args: Args): WhereResult<T>;
218
+ orWhereNotExists<T extends Where, Arg extends JoinCallbackArg<T>>(this: T, arg: Arg, cb: JoinCallback<T, Arg>): WhereResult<T>;
219
+ _orWhereNotExists<T extends Where, Args extends JoinArgs<T>>(this: T, ...args: Args): WhereResult<T>;
220
+ _orWhereNotExists<T extends Where, Arg extends JoinCallbackArg<T>>(this: T, arg: Arg, cb: JoinCallback<T, Arg>): WhereResult<T>;
221
+ }
222
+ declare class WhereQueryBuilder<Q extends QueryBase = QueryBase> extends Where implements QueryBase {
223
+ table: Q['table'];
224
+ tableAlias: Q['tableAlias'];
225
+ query: QueryData;
226
+ selectable: Q['selectable'];
227
+ __model: Query;
228
+ relations: {};
229
+ withData: {};
230
+ constructor(table: Q['table'], tableAlias: Q['tableAlias']);
231
+ clone<T extends this>(this: T): T;
232
+ }
233
+
234
+ declare type OptionalKeys<T extends Query> = {
235
+ [K in keyof T['shape']]: T['shape'][K]['isPrimaryKey'] extends true ? K : T['shape'][K]['isNullable'] extends true ? K : never;
236
+ }[keyof T['shape']];
237
+ declare type InsertData<T extends Query, DefaultKeys extends string = T[defaultsKey] extends string ? T[defaultsKey] : never, Data = SetOptional<SetOptional<T['inputType'], OptionalKeys<T>>, DefaultKeys>> = [keyof T['relations']] extends [never] ? Data : Omit<Data, {
238
+ [K in keyof T['relations']]: T['relations'][K] extends BelongsToRelation ? T['relations'][K]['options']['foreignKey'] : never;
239
+ }[keyof T['relations']]> & {
240
+ [Key in keyof T['relations']]: T['relations'][Key] extends BelongsToRelation ? SetOptional<{
241
+ [K in T['relations'][Key]['options']['foreignKey']]: T['relations'][Key]['options']['foreignKey'] extends keyof T['inputType'] ? T['inputType'][T['relations'][Key]['options']['foreignKey']] : never;
242
+ }, DefaultKeys> | {
243
+ [K in Key]: {
244
+ create?: InsertData<T['relations'][Key]['nestedCreateQuery']>;
245
+ connect?: WhereArg<T['relations'][Key]['model']>;
246
+ };
247
+ } : T['relations'][Key] extends HasOneRelation ? 'through' extends T['relations'][Key]['options'] ? {} : {
248
+ [K in Key]?: {
249
+ create?: InsertData<T['relations'][Key]['nestedCreateQuery']>;
250
+ connect?: WhereArg<T['relations'][Key]['model']>;
251
+ };
252
+ } : T['relations'][Key] extends Relation ? 'through' extends T['relations'][Key]['options'] ? {} : {
253
+ [K in Key]?: {
254
+ create?: InsertData<T['relations'][Key]['nestedCreateQuery']>[];
255
+ connect?: WhereArg<T['relations'][Key]['model']>[];
256
+ connectOrCreate?: {
257
+ where: WhereArg<T['relations'][Key]['model']>;
258
+ create: InsertData<T['relations'][Key]['nestedCreateQuery']>;
259
+ }[];
260
+ };
261
+ } : {};
262
+ }[keyof T['relations']];
263
+ declare type InsertOneResult<T extends Query> = T['hasSelect'] extends false ? SetQueryReturnsRowCount<T> : T['returnType'] extends 'all' ? SetQueryReturnsOne<T> : T['returnType'] extends 'one' ? SetQueryReturnsOne<T> : T;
264
+ declare type InsertManyResult<T extends Query> = T['hasSelect'] extends false ? SetQueryReturnsRowCount<T> : T['returnType'] extends 'one' | 'oneOrThrow' ? SetQueryReturnsAll<T> : T;
265
+ declare type OnConflictArg<T extends Query> = keyof T['shape'] | (keyof T['shape'])[] | RawExpression;
266
+ declare class Insert {
267
+ insert<T extends Query>(this: T, data: InsertData<T>): InsertOneResult<T>;
268
+ insert<T extends Query>(this: T, data: InsertData<T>[] | {
269
+ columns: string[];
270
+ values: RawExpression;
271
+ }): InsertManyResult<T>;
272
+ _insert<T extends Query>(this: T, data: InsertData<T>): InsertOneResult<T>;
273
+ _insert<T extends Query>(this: T, data: InsertData<T>[] | {
274
+ columns: string[];
275
+ values: RawExpression;
276
+ }): InsertManyResult<T>;
277
+ create<T extends Query>(this: T, data: InsertData<T>): SetQueryReturnsOne<T>;
278
+ create<T extends Query>(this: T, data: InsertData<T>[] | {
279
+ columns: string[];
280
+ values: RawExpression;
281
+ }): SetQueryReturnsAll<T>;
282
+ _create<T extends Query>(this: T, data: InsertData<T>): SetQueryReturnsOne<T>;
283
+ _create<T extends Query>(this: T, data: InsertData<T>[] | {
284
+ columns: string[];
285
+ values: RawExpression;
286
+ }): SetQueryReturnsAll<T>;
287
+ defaults<T extends Query, Data extends Partial<InsertData<T>>>(this: T, data: Data): T & {
288
+ [defaultsKey]: keyof Data;
289
+ };
290
+ _defaults<T extends Query, Data extends Partial<InsertData<T>>>(this: T, data: Data): T & {
291
+ [defaultsKey]: keyof Data;
292
+ };
293
+ onConflict<T extends Query, Arg extends OnConflictArg<T>>(this: T, arg?: Arg): OnConflictQueryBuilder<T, Arg>;
294
+ _onConflict<T extends Query, Arg extends OnConflictArg<T> | undefined = undefined>(this: T, arg?: Arg): OnConflictQueryBuilder<T, Arg>;
295
+ }
296
+ declare class OnConflictQueryBuilder<T extends Query, Arg extends OnConflictArg<T> | undefined> {
297
+ private query;
298
+ private onConflict;
299
+ constructor(query: T, onConflict: Arg);
300
+ ignore(): T;
301
+ merge(update?: keyof T['shape'] | (keyof T['shape'])[] | Partial<T['inputType']> | RawExpression): T;
302
+ }
303
+
304
+ declare type UpdateData<T extends Query> = {
305
+ [K in keyof T['type']]?: T['type'][K] | RawExpression;
306
+ } & (T['relations'] extends Record<string, Relation> ? {
307
+ [K in keyof T['relations']]?: T['relations'][K]['type'] extends 'belongsTo' ? {
308
+ disconnect: boolean;
309
+ } | {
310
+ set: WhereArg<T['relations'][K]['model']>;
311
+ } | {
312
+ delete: boolean;
313
+ } | {
314
+ update: UpdateData<T['relations'][K]['model']>;
315
+ } | {
316
+ create: InsertData<T['relations'][K]['nestedCreateQuery']>;
317
+ } | (T['returnType'] extends 'one' | 'oneOrThrow' ? {
318
+ upsert: {
319
+ update: UpdateData<T['relations'][K]['model']>;
320
+ create: InsertData<T['relations'][K]['nestedCreateQuery']>;
321
+ };
322
+ } : never) : T['relations'][K]['type'] extends 'hasOne' ? {
323
+ disconnect: boolean;
324
+ } | {
325
+ delete: boolean;
326
+ } | {
327
+ update: UpdateData<T['relations'][K]['model']>;
328
+ } | (T['returnType'] extends 'one' | 'oneOrThrow' ? {
329
+ set: WhereArg<T['relations'][K]['model']>;
330
+ } | {
331
+ upsert: {
332
+ update: UpdateData<T['relations'][K]['model']>;
333
+ create: InsertData<T['relations'][K]['nestedCreateQuery']>;
334
+ };
335
+ } | {
336
+ create: InsertData<T['relations'][K]['nestedCreateQuery']>;
337
+ } : never) : T['relations'][K]['type'] extends 'hasMany' ? {
338
+ disconnect: MaybeArray<WhereArg<T['relations'][K]['model']>>;
339
+ } | {
340
+ delete: MaybeArray<WhereArg<T['relations'][K]['model']>>;
341
+ } | {
342
+ update: {
343
+ where: MaybeArray<WhereArg<T['relations'][K]['model']>>;
344
+ data: UpdateData<T['relations'][K]['model']>;
345
+ };
346
+ } | (T['returnType'] extends 'one' | 'oneOrThrow' ? {
347
+ set: MaybeArray<WhereArg<T['relations'][K]['model']>>;
348
+ } | {
349
+ create: InsertData<T['relations'][K]['nestedCreateQuery']>[];
350
+ } : never) : T['relations'][K]['type'] extends 'hasAndBelongsToMany' ? {
351
+ disconnect: MaybeArray<WhereArg<T['relations'][K]['model']>>;
352
+ } | {
353
+ set: MaybeArray<WhereArg<T['relations'][K]['model']>>;
354
+ } | {
355
+ delete: MaybeArray<WhereArg<T['relations'][K]['model']>>;
356
+ } | {
357
+ update: {
358
+ where: MaybeArray<WhereArg<T['relations'][K]['model']>>;
359
+ data: UpdateData<T['relations'][K]['model']>;
360
+ };
361
+ } | {
362
+ create: InsertData<T['relations'][K]['nestedCreateQuery']>[];
363
+ } : never;
364
+ } : {});
365
+ declare type UpdateArgs<T extends Query, ForceAll extends boolean> = (T['hasWhere'] extends true ? true : ForceAll) extends true ? [update: RawExpression | UpdateData<T>, forceAll?: ForceAll] : [update: RawExpression | UpdateData<T>, forceAll: true];
366
+ declare type UpdateResult<T extends Query> = T['hasSelect'] extends false ? SetQueryReturnsRowCount<T> : T;
367
+ declare type ChangeCountArg<T extends Query> = keyof T['shape'] | Partial<Record<keyof T['shape'], number>>;
368
+ declare class Update {
369
+ update<T extends Query, ForceAll extends boolean = false>(this: T, ...args: UpdateArgs<T, ForceAll>): UpdateResult<T>;
370
+ _update<T extends Query, ForceAll extends boolean = false>(this: T, ...args: UpdateArgs<T, ForceAll>): UpdateResult<T>;
371
+ updateOrThrow<T extends Query, ForceAll extends boolean = false>(this: T, ...args: UpdateArgs<T, ForceAll>): UpdateResult<T>;
372
+ _updateOrThrow<T extends Query, ForceAll extends boolean = false>(this: T, ...args: UpdateArgs<T, ForceAll>): UpdateResult<T>;
373
+ increment<T extends Query>(this: T, data: ChangeCountArg<T>): UpdateResult<T>;
374
+ _increment<T extends Query>(this: T, data: ChangeCountArg<T>): UpdateResult<T>;
375
+ decrement<T extends Query>(this: T, data: ChangeCountArg<T>): UpdateResult<T>;
376
+ _decrement<T extends Query>(this: T, data: ChangeCountArg<T>): UpdateResult<T>;
377
+ }
378
+
379
+ declare type NestedInsertOneItem = {
380
+ create?: Record<string, unknown>;
381
+ connect?: WhereArg<QueryBase>;
382
+ };
383
+ declare type NestedInsertManyItems = {
384
+ create?: Record<string, unknown>[];
385
+ connect?: WhereArg<QueryBase>[];
386
+ connectOrCreate?: {
387
+ where: WhereArg<QueryBase>;
388
+ create: Record<string, unknown>;
389
+ }[];
390
+ };
391
+ declare type NestedInsertItem = NestedInsertOneItem | NestedInsertManyItems;
392
+ declare type BelongsToNestedInsert = (query: Query, relationData: NestedInsertOneItem[]) => Promise<Record<string, unknown>[]>;
393
+ declare type HasOneNestedInsert = (query: Query, data: [
394
+ selfData: Record<string, unknown>,
395
+ relationData: NestedInsertOneItem
396
+ ][]) => Promise<void>;
397
+ declare type HasManyNestedInsert = (query: Query, data: [
398
+ selfData: Record<string, unknown>,
399
+ relationData: NestedInsertManyItems
400
+ ][]) => Promise<void>;
401
+ declare type NestedUpdateOneItem = {
402
+ disconnect?: boolean;
403
+ set?: WhereArg<QueryBase>;
404
+ delete?: boolean;
405
+ update?: UpdateData<Query>;
406
+ upsert?: {
407
+ update: UpdateData<Query>;
408
+ create: Record<string, unknown>;
409
+ };
410
+ create: Record<string, unknown>;
411
+ };
412
+ declare type NestedUpdateManyItems = {
413
+ disconnect?: MaybeArray<WhereArg<QueryBase>>;
414
+ set?: MaybeArray<WhereArg<QueryBase>>;
415
+ delete?: MaybeArray<WhereArg<QueryBase>>;
416
+ update?: {
417
+ where: MaybeArray<WhereArg<QueryBase>>;
418
+ data: UpdateData<Query>;
419
+ };
420
+ create: Record<string, unknown>[];
421
+ };
422
+ declare type NestedUpdateItem = NestedUpdateOneItem | NestedUpdateManyItems;
423
+ declare type BelongsToNestedUpdate = (q: Query, update: Record<string, unknown>, params: NestedUpdateOneItem, state: {
424
+ updateLater?: Record<string, unknown>;
425
+ updateLaterPromises?: Promise<void>[];
426
+ }) => boolean;
427
+ declare type HasOneNestedUpdate = (query: Query, data: Record<string, unknown>[], relationData: NestedUpdateOneItem) => Promise<void>;
428
+ declare type HasManyNestedUpdate = (query: Query, data: Record<string, unknown>[], relationData: NestedUpdateManyItems) => Promise<void>;
429
+ declare type BaseRelation = {
430
+ type: string;
431
+ key: string;
432
+ model: QueryWithTable;
433
+ joinQuery: Query;
434
+ nestedCreateQuery: Query;
435
+ nestedInsert?: BelongsToNestedInsert | HasOneNestedInsert | HasManyNestedInsert;
436
+ nestedUpdate?: BelongsToNestedUpdate | HasOneNestedUpdate | HasManyNestedUpdate;
437
+ primaryKey: string;
438
+ options: {
439
+ scope?(q: QueryWithTable): QueryWithTable;
440
+ required?: boolean;
441
+ };
442
+ };
443
+ interface BelongsToRelation extends BaseRelation {
444
+ type: 'belongsTo';
445
+ returns: 'one';
446
+ options: BaseRelation['options'] & {
447
+ primaryKey: string;
448
+ foreignKey: string;
449
+ };
450
+ }
451
+ interface HasOneRelation extends BaseRelation {
452
+ type: 'hasOne';
453
+ returns: 'one';
454
+ options: BaseRelation['options'] & ({
455
+ primaryKey: string;
456
+ foreignKey: string;
457
+ } | {
458
+ through: string;
459
+ source: string;
460
+ });
461
+ }
462
+ interface HasManyRelation extends BaseRelation {
463
+ type: 'hasMany';
464
+ returns: 'many';
465
+ options: BaseRelation['options'] & ({
466
+ primaryKey: string;
467
+ foreignKey: string;
468
+ } | {
469
+ through: string;
470
+ source: string;
471
+ });
472
+ }
473
+ interface HasAndBelongsToManyRelation extends BaseRelation {
474
+ type: 'hasAndBelongsToMany';
475
+ returns: 'many';
476
+ options: BaseRelation['options'] & {
477
+ primaryKey: string;
478
+ foreignKey: string;
479
+ associationPrimaryKey: string;
480
+ associationForeignKey: string;
481
+ joinTable: string;
482
+ };
483
+ }
484
+ declare type Relation = BelongsToRelation | HasOneRelation | HasManyRelation | HasAndBelongsToManyRelation;
485
+ declare type RelationsBase = Record<never, Relation>;
486
+ declare type relationQueryKey = typeof relationQueryKey;
487
+ declare const relationQueryKey: unique symbol;
488
+ declare type isRequiredRelationKey = typeof isRequiredRelationKey;
489
+ declare const isRequiredRelationKey: unique symbol;
490
+ declare type RelationQueryBase = Query & {
491
+ [relationQueryKey]: string;
492
+ [isRequiredRelationKey]: boolean;
493
+ };
494
+ declare type RelationQuery<RelationName extends PropertyKey = string, Params extends Record<string, unknown> = never, Populate extends string = never, T extends Query = Query, Required extends boolean = boolean, Q extends RelationQueryBase = Omit<T, 'tableAlias'> & {
495
+ tableAlias: RelationName extends string ? RelationName : never;
496
+ [isRequiredRelationKey]: Required;
497
+ [relationQueryKey]: string;
498
+ }> = ((params: Params) => Q & {
499
+ [defaultsKey]: Pick<T['type'], Populate>;
500
+ }) & Q;
501
+
502
+ interface QueryResultRow {
503
+ [column: string]: any;
504
+ }
505
+ declare type TypeParsers = Record<number, (input: string) => unknown>;
506
+ declare type QueryInput = string | {
507
+ text: string;
508
+ values?: unknown[];
509
+ };
510
+ declare type QueryResult<T extends QueryResultRow = any> = {
511
+ rowCount: number;
512
+ rows: T[];
513
+ };
514
+ declare type QueryArraysResult<R extends any[] = any[]> = {
515
+ rowCount: number;
516
+ rows: R[];
517
+ fields: {
518
+ name: string;
519
+ }[];
520
+ };
521
+ declare type AdapterOptions = Omit<PoolConfig, 'types'> & {
522
+ types?: TypeParsers;
523
+ };
524
+ declare class Adapter {
525
+ types: TypeParsers;
526
+ pool: Pool;
527
+ constructor({ types, ...config }: AdapterOptions);
528
+ query<T extends QueryResultRow = any>(query: QueryInput, types?: TypeParsers): Promise<QueryResult<T>>;
529
+ arrays<R extends any[] = any[]>(query: QueryInput, types?: TypeParsers): Promise<QueryArraysResult<R>>;
530
+ transaction<Result>(cb: (adapter: TransactionAdapter) => Promise<Result>): Promise<Result>;
531
+ destroy(): Promise<void>;
532
+ }
533
+ declare class TransactionAdapter implements Adapter {
534
+ pool: Pool;
535
+ client: PoolClient;
536
+ types: TypeParsers;
537
+ constructor(pool: Pool, client: PoolClient, types: TypeParsers);
538
+ query<T extends QueryResultRow = any>(query: QueryInput, types?: TypeParsers): Promise<QueryResult<T>>;
539
+ arrays<R extends any[] = any[]>(query: QueryInput, types?: TypeParsers): Promise<QueryArraysResult<R>>;
540
+ transaction<Result>(cb: (adapter: TransactionAdapter) => Promise<Result>): Promise<Result>;
541
+ destroy(): Promise<void>;
542
+ }
543
+
544
+ declare type QueryLogObject = {
545
+ colors: boolean;
546
+ beforeQuery(sql: Sql): unknown;
547
+ afterQuery(sql: Sql, logData: unknown): void;
548
+ onError(error: Error, sql: Sql, logData: unknown): void;
549
+ };
550
+ declare type QueryLogger = {
551
+ log(message: string): void;
552
+ error(message: string): void;
553
+ };
554
+ declare type QueryLogOptions = {
555
+ log?: boolean | Partial<QueryLogObject>;
556
+ logger?: QueryLogger;
557
+ };
558
+ declare const logColors: {
559
+ boldCyanBright: (message: string) => string;
560
+ boldBlue: (message: string) => string;
561
+ boldYellow: (message: string) => string;
562
+ boldMagenta: (message: string) => string;
563
+ boldRed: (message: string) => string;
564
+ };
565
+ declare const logParamToLogObject: (logger: QueryLogger, log: QueryLogOptions['log']) => QueryLogObject | undefined;
566
+ declare class QueryLog {
567
+ log<T extends Query>(this: T, log?: boolean): T;
568
+ _log<T extends Query>(this: T, log?: boolean): T;
569
+ }
570
+
571
+ declare type BeforeCallback<T extends Query> = (query: T) => void | Promise<void>;
572
+ declare type AfterCallback<T extends Query> = (query: T, data: unknown) => void | Promise<void>;
573
+ declare class QueryCallbacks {
574
+ beforeQuery<T extends Query>(this: T, cb: BeforeCallback<T>): T;
575
+ _beforeQuery<T extends Query>(this: T, cb: BeforeCallback<T>): T;
576
+ afterQuery<T extends Query>(this: T, cb: AfterCallback<T>): T;
577
+ _afterQuery<T extends Query>(this: T, cb: AfterCallback<T>): T;
578
+ beforeInsert<T extends Query>(this: T, cb: BeforeCallback<T>): T;
579
+ _beforeInsert<T extends Query>(this: T, cb: BeforeCallback<T>): T;
580
+ afterInsert<T extends Query>(this: T, cb: AfterCallback<T>): T;
581
+ _afterInsert<T extends Query>(this: T, cb: AfterCallback<T>): T;
582
+ beforeUpdate<T extends Query>(this: T, cb: BeforeCallback<T>): T;
583
+ _beforeUpdate<T extends Query>(this: T, cb: BeforeCallback<T>): T;
584
+ afterUpdate<T extends Query>(this: T, cb: AfterCallback<T>): T;
585
+ _afterUpdate<T extends Query>(this: T, cb: AfterCallback<T>): T;
586
+ }
587
+
588
+ declare type Sql = {
589
+ text: string;
590
+ values: unknown[];
591
+ };
592
+ declare const queryKeysOfNotSimpleQuery: (keyof SelectQueryData)[];
593
+ declare type CommonQueryData = {
594
+ adapter: Adapter;
595
+ handleResult(q: Query, result: QueryResult): Promise<unknown>;
596
+ returnType: QueryReturnType;
597
+ [relationQueryKey]?: string;
598
+ inTransaction?: boolean;
599
+ wrapInTransaction?: boolean;
600
+ throwOnNotFound?: boolean;
601
+ take?: boolean;
602
+ with?: WithItem[];
603
+ withShapes?: Record<string, ColumnsShape>;
604
+ schema?: string;
605
+ select?: SelectItem[];
606
+ as?: string;
607
+ from?: string | Query | RawExpression;
608
+ and?: WhereItem[];
609
+ or?: WhereItem[][];
610
+ parsers?: ColumnsParsers;
611
+ defaults?: Record<string, unknown>;
612
+ beforeQuery?: BeforeCallback<Query>[];
613
+ afterQuery?: AfterCallback<Query>[];
614
+ log?: QueryLogObject;
615
+ logger: QueryLogger;
616
+ };
617
+ declare type SelectQueryData = CommonQueryData & {
618
+ type: undefined;
619
+ distinct?: Expression[];
620
+ fromOnly?: boolean;
621
+ join?: JoinItem[];
622
+ joinedParsers?: Record<string, ColumnsParsers>;
623
+ group?: (string | RawExpression)[];
624
+ having?: HavingItem[];
625
+ havingOr?: HavingItem[][];
626
+ window?: WindowItem[];
627
+ union?: {
628
+ arg: UnionItem;
629
+ kind: UnionKind;
630
+ wrap?: boolean;
631
+ }[];
632
+ order?: OrderItem[];
633
+ limit?: number;
634
+ offset?: number;
635
+ for?: {
636
+ type: 'UPDATE' | 'NO KEY UPDATE' | 'SHARE' | 'KEY SHARE';
637
+ tableNames?: string[] | RawExpression;
638
+ mode?: 'NO WAIT' | 'SKIP LOCKED';
639
+ };
640
+ };
641
+ declare type InsertQueryData = CommonQueryData & {
642
+ type: 'insert';
643
+ columns: string[];
644
+ values: unknown[][] | RawExpression;
645
+ using?: JoinItem[];
646
+ join?: JoinItem[];
647
+ joinedParsers?: Record<string, ColumnsParsers>;
648
+ onConflict?: {
649
+ type: 'ignore';
650
+ expr?: OnConflictItem;
651
+ } | {
652
+ type: 'merge';
653
+ expr?: OnConflictItem;
654
+ update?: OnConflictMergeUpdate;
655
+ };
656
+ beforeInsert?: BeforeCallback<Query>[];
657
+ afterInsert?: AfterCallback<Query>[];
658
+ };
659
+ declare type UpdateQueryData = CommonQueryData & {
660
+ type: 'update';
661
+ data: (Record<string, RawExpression | {
662
+ op: string;
663
+ arg: unknown;
664
+ } | unknown> | RawExpression)[];
665
+ beforeUpdate?: BeforeCallback<Query>[];
666
+ afterUpdate?: AfterCallback<Query>[];
667
+ };
668
+ declare type DeleteQueryData = CommonQueryData & {
669
+ type: 'delete';
670
+ join?: JoinItem[];
671
+ joinedParsers?: Record<string, ColumnsParsers>;
672
+ };
673
+ declare type TruncateQueryData = CommonQueryData & {
674
+ type: 'truncate';
675
+ restartIdentity?: boolean;
676
+ cascade?: boolean;
677
+ };
678
+ declare type ColumnInfoQueryData = CommonQueryData & {
679
+ type: 'columnInfo';
680
+ column?: string;
681
+ };
682
+ declare type QueryData = SelectQueryData | InsertQueryData | UpdateQueryData | DeleteQueryData | TruncateQueryData | ColumnInfoQueryData;
683
+ declare type WithItem = [
684
+ as: string,
685
+ options: WithOptions,
686
+ query: Query | RawExpression
687
+ ];
688
+ declare type WithOptions = {
689
+ columns?: string[];
690
+ recursive?: true;
691
+ materialized?: true;
692
+ notMaterialized?: true;
693
+ };
694
+ declare type JsonItem<As extends string = string, Type extends ColumnType = ColumnType> = {
695
+ __json: [
696
+ kind: 'set',
697
+ as: As,
698
+ type: Type,
699
+ column: string | JsonItem,
700
+ path: Array<string | number>,
701
+ value: unknown,
702
+ options?: {
703
+ createIfMissing?: boolean;
704
+ }
705
+ ] | [
706
+ kind: 'insert',
707
+ as: As,
708
+ type: Type,
709
+ column: string | JsonItem,
710
+ path: Array<string | number>,
711
+ value: unknown,
712
+ options?: {
713
+ insertAfter?: boolean;
714
+ }
715
+ ] | [
716
+ kind: 'remove',
717
+ as: As,
718
+ type: Type,
719
+ column: string | JsonItem,
720
+ path: Array<string | number>
721
+ ] | [
722
+ kind: 'pathQuery',
723
+ as: As,
724
+ type: Type,
725
+ column: string | JsonItem,
726
+ path: string,
727
+ options?: {
728
+ vars?: string;
729
+ silent?: boolean;
730
+ }
731
+ ];
732
+ };
733
+ declare type SelectItem = string | RelationQuery | AggregateItem | {
734
+ selectAs: Record<string, string | Query | RawExpression>;
735
+ } | SelectFunctionItem | JsonItem | RawExpression;
736
+ declare type SelectFunctionItem = {
737
+ function: string;
738
+ arguments: SelectItem[];
739
+ as?: string;
740
+ };
741
+ declare type JoinItem = {
742
+ type: string;
743
+ args: [relation: string] | [
744
+ arg: string | QueryWithTable,
745
+ conditions: Record<string, string | RawExpression> | RawExpression | ((q: unknown) => QueryBase)
746
+ ] | [
747
+ arg: string | QueryWithTable,
748
+ leftColumn: string | RawExpression,
749
+ rightColumn: string | RawExpression
750
+ ] | [
751
+ arg: string | QueryWithTable,
752
+ leftColumn: string | RawExpression,
753
+ op: string,
754
+ rightColumn: string | RawExpression
755
+ ];
756
+ };
757
+ declare type WhereItem = (Omit<Record<string, unknown | Record<string, unknown | Query | RawExpression> | RawExpression>, 'NOT' | 'AND' | 'OR' | 'IN' | 'EXISTS' | 'ON' | 'ON_JSON_PATH_EQUALS'> & {
758
+ NOT?: MaybeArray<WhereItem>;
759
+ AND?: MaybeArray<WhereItem>;
760
+ OR?: MaybeArray<WhereItem>[];
761
+ IN?: MaybeArray<WhereInItem>;
762
+ EXISTS?: MaybeArray<JoinItem['args']>;
763
+ ON?: WhereOnItem | WhereJsonPathEqualsItem;
764
+ }) | ((q: unknown) => QueryBase) | Query | RawExpression;
765
+ declare type WhereInItem = {
766
+ columns: string[];
767
+ values: unknown[][] | Query | RawExpression;
768
+ };
769
+ declare type WhereJsonPathEqualsItem = [
770
+ leftColumn: string,
771
+ leftPath: string,
772
+ rightColumn: string,
773
+ rightPath: string
774
+ ];
775
+ declare type WhereOnItem = {
776
+ joinFrom: {
777
+ table?: string;
778
+ query: {
779
+ as?: string;
780
+ };
781
+ } | string;
782
+ joinTo: {
783
+ table?: string;
784
+ query: {
785
+ as?: string;
786
+ };
787
+ } | string;
788
+ on: [leftFullColumn: string, rightFullColumn: string] | [leftFullColumn: string, op: string, rightFullColumn: string];
789
+ };
790
+ declare type AggregateItemOptions = {
791
+ as?: string;
792
+ distinct?: boolean;
793
+ order?: OrderItem[];
794
+ filter?: WhereItem;
795
+ filterOr?: WhereItem[];
796
+ withinGroup?: boolean;
797
+ over?: string;
798
+ window?: WindowItem;
799
+ };
800
+ declare type SortDir = 'ASC' | 'DESC';
801
+ declare type OrderItem = string | Record<string, SortDir | {
802
+ dir: SortDir;
803
+ nulls: 'FIRST' | 'LAST';
804
+ }> | RawExpression;
805
+ declare type AggregateItemArg = Expression | Record<string, Expression> | [Expression, string];
806
+ declare type AggregateItem = {
807
+ function: string;
808
+ arg?: AggregateItemArg;
809
+ options: AggregateItemOptions;
810
+ };
811
+ declare type ColumnOperators<S extends SelectableBase, Column extends keyof S> = {
812
+ [O in keyof S[Column]['column']['operators']]?: S[Column]['column']['operators'][O]['type'];
813
+ };
814
+ declare type HavingItemObject = Record<string, unknown>;
815
+ declare type HavingItem = Record<string, HavingItemObject> | {
816
+ count?: number | HavingItemObject;
817
+ } | Query | RawExpression;
818
+ declare type WindowItem = Record<string, WindowDeclaration | RawExpression>;
819
+ declare type WindowDeclaration = {
820
+ partitionBy?: Expression | Expression[];
821
+ order?: OrderItem;
822
+ };
823
+ declare type UnionItem = Query | RawExpression;
824
+ declare type UnionKind = 'UNION' | 'UNION ALL' | 'INTERSECT' | 'INTERSECT ALL' | 'EXCEPT' | 'EXCEPT ALL';
825
+ declare type OnConflictItem = string | string[] | RawExpression;
826
+ declare type OnConflictMergeUpdate = string | string[] | Record<string, unknown> | RawExpression;
827
+
828
+ declare const toSql: (model: Query, values?: unknown[]) => Sql;
829
+
830
+ declare type MaybeArray<T> = T | T[];
831
+ declare type SetOptional<T, K extends PropertyKey> = Omit<T, K> & {
832
+ [P in K]?: P extends keyof T ? T[P] : never;
833
+ };
834
+ declare type GetTypesOrRaw<T extends [...unknown[]]> = T extends [
835
+ infer Head,
836
+ ...infer Tail
837
+ ] ? [GetTypeOrRaw<Head>, ...GetTypesOrRaw<Tail>] : [];
838
+ declare type GetTypeOrRaw<T> = T | RawExpression;
839
+ declare type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
840
+ declare type UnionToOvlds<U> = UnionToIntersection<U extends any ? (f: U) => void : never>;
841
+ declare type PopPropertyKeyUnion<U> = UnionToOvlds<U> extends (a: infer A extends PropertyKey) => void ? A : never;
842
+ declare type IsUnion$1<T> = [T] extends [UnionToIntersection<T>] ? false : true;
843
+ declare type PropertyKeyUnionToArray<T, A extends PropertyKey[] = []> = IsUnion$1<T> extends true ? PropertyKeyUnionToArray<Exclude<T, PopPropertyKeyUnion<T>>, [
844
+ PopPropertyKeyUnion<T>,
845
+ ...A
846
+ ]> : [T, ...A];
847
+ declare type OptionalPropertyNames<T> = {
848
+ [K in keyof T]-?: {} extends {
849
+ [P in K]: T[K];
850
+ } ? K : never;
851
+ }[keyof T];
852
+ declare type SpreadProperties<L, R, K extends keyof L & keyof R> = {
853
+ [P in K]: L[P] | Exclude<R[P], undefined>;
854
+ };
855
+ declare type Id<T> = T extends infer U ? {
856
+ [K in keyof U]: U[K];
857
+ } : never;
858
+ declare type SpreadTwo<L, R> = Id<Pick<L, Exclude<keyof L, keyof R>> & Pick<R, Exclude<keyof R, OptionalPropertyNames<R>>> & Pick<R, Exclude<OptionalPropertyNames<R>, keyof L>> & SpreadProperties<L, R, OptionalPropertyNames<R> & keyof L>>;
859
+ declare type Spread<A extends readonly [...any]> = A extends [
860
+ infer L,
861
+ ...infer R
862
+ ] ? SpreadTwo<L, Spread<R>> : unknown;
863
+ declare type SimpleSpread<A extends readonly [...any]> = A extends [
864
+ infer L,
865
+ ...infer R
866
+ ] ? L & SimpleSpread<R> : {};
867
+ declare type FilterTuple<T extends readonly any[], E> = T extends [
868
+ infer F,
869
+ ...infer R
870
+ ] ? [F] extends [E] ? [F, ...FilterTuple<R, E>] : FilterTuple<R, E> : [];
871
+ declare type CoalesceString<Left extends string | undefined, Right extends string> = Left extends undefined ? Right : Left;
872
+ declare function applyMixins(derivedCtor: any, constructors: any[]): void;
873
+ declare const joinTruthy: (...strings: (string | false | undefined)[]) => string;
874
+ declare const getClonedQueryData: (query: QueryData) => QueryData;
875
+ declare const getQueryAs: (q: {
876
+ table?: string;
877
+ query: {
878
+ as?: string;
879
+ };
880
+ }) => string;
881
+ declare const toArray: <T>(item: T) => T extends unknown[] ? T : [T];
882
+ declare const noop: () => void;
883
+ declare type EmptyObject = typeof emptyObject;
884
+ declare const emptyObject: {};
885
+
886
+ declare type ThenResult<Res> = <T extends Query>(this: T, resolve?: (value: Res) => any, reject?: (error: any) => any) => Promise<Res | never>;
887
+ declare const queryMethodByReturnType: Record<QueryReturnType, 'query' | 'arrays'>;
888
+ declare class Then {
889
+ then(this: Query, resolve?: (result: any) => any, reject?: (error: any) => any): Promise<any>;
890
+ }
891
+ declare const handleResult: CommonQueryData['handleResult'];
892
+ declare const parseResult: (q: Query, returnType: QueryReturnType, result: QueryResult) => unknown;
893
+ declare const parseRecord: (parsers: ColumnsParsers, row: any) => any;
894
+
895
+ declare type AggregateArg<T extends Query> = Expression<T> | Record<string, Expression<T>> | [Expression<T>, string];
896
+ declare type AggregateOptions<T extends Query = Query, As extends string | undefined = any> = {
897
+ as?: As;
898
+ distinct?: boolean;
899
+ order?: OrderArg<T> | OrderArg<T>[];
900
+ filter?: WhereArg<T>;
901
+ filterOr?: WhereArg<T>[];
902
+ withinGroup?: boolean;
903
+ over?: T['windows'][number] | WindowArgDeclaration<T>;
904
+ };
905
+ declare type Aggregate1ArgumentTypes<T extends Query = Query, C extends ColumnType = ColumnType> = {
906
+ count: Expression<T, C>;
907
+ avg: NumberExpression<T, C>;
908
+ min: Expression<T, C>;
909
+ max: Expression<T, C>;
910
+ sum: NumberExpression<T, C>;
911
+ bitAnd: NumberExpression<T, C>;
912
+ bitOr: NumberExpression<T, C>;
913
+ boolAnd: BooleanExpression<T, C>;
914
+ boolOr: BooleanExpression<T, C>;
915
+ every: BooleanExpression<T, C>;
916
+ jsonAgg: Expression<T, C>;
917
+ jsonbAgg: Expression<T, C>;
918
+ xmlAgg: Expression<T, C>;
919
+ };
920
+ declare const aggregate1FunctionNames: {
921
+ readonly count: "count";
922
+ readonly avg: "avg";
923
+ readonly min: "min";
924
+ readonly max: "max";
925
+ readonly sum: "sum";
926
+ readonly bitAnd: "bit_and";
927
+ readonly bitOr: "bit_or";
928
+ readonly boolAnd: "bool_and";
929
+ readonly boolOr: "bool_or";
930
+ readonly every: "every";
931
+ readonly jsonAgg: "json_agg";
932
+ readonly jsonbAgg: "jsonb_agg";
933
+ readonly xmlAgg: "xmlagg";
934
+ };
935
+ declare type SelectAgg<T extends Query, Func extends string, As extends string | undefined, Value extends ColumnType> = AddQuerySelect<T, Record<CoalesceString<As, Func>, Value>>;
936
+ declare type AT1<T extends Query> = Aggregate1ArgumentTypes<T>;
937
+ declare type WindowFunctionOptions<T extends Query = Query, As extends string | undefined = any> = {
938
+ as?: As;
939
+ } & WindowArgDeclaration<T>;
940
+ declare class Aggregate {
941
+ selectAgg<T extends Query, Func extends string, As extends string | undefined, Value extends ColumnType>(this: T, functionName: Func, arg: AggregateArg<T>, options?: AggregateOptions<T, As>): SelectAgg<T, Func, As, Value>;
942
+ _selectAgg<T extends Query, Func extends string, As extends string | undefined, Value extends ColumnType>(this: T, functionName: Func, arg: AggregateArg<T>, options?: AggregateOptions<T, As>, columnType?: ColumnType): SelectAgg<T, Func, As, Value>;
943
+ count<T extends Query>(this: T, arg?: AT1<T>['count'] | '*', options?: AggregateOptions<T>): SetQueryReturnsValue<T, NumberColumn>;
944
+ _count<T extends Query>(this: T, arg?: AT1<T>['count'] | '*', options?: AggregateOptions<T>): SetQueryReturnsValue<T, NumberColumn>;
945
+ selectCount<T extends Query, As extends string | undefined = undefined>(this: T, arg?: AT1<T>['count'] | '*', options?: AggregateOptions<T, As>): SelectAgg<T, 'count', As, NumberColumn>;
946
+ _selectCount<T extends Query, As extends string | undefined = undefined>(this: T, arg?: AT1<T>['count'] | '*', options?: AggregateOptions<T, As>): SelectAgg<T, 'count', As, NumberColumn>;
947
+ avg<T extends Query>(this: T, arg: Aggregate1ArgumentTypes<T>['avg'], options?: AggregateOptions<T>): SetQueryReturnsValue<T, NullableColumn<NumberColumn>>;
948
+ _avg<T extends Query>(this: T, arg: Aggregate1ArgumentTypes<T>['avg'], options?: AggregateOptions<T>): SetQueryReturnsValue<T, NullableColumn<NumberColumn>>;
949
+ selectAvg<T extends Query, As extends string | undefined = undefined>(this: T, arg: Expression<T>, options?: AggregateOptions<T, As>): SelectAgg<T, 'avg', As, NullableColumn<NumberColumn>>;
950
+ _selectAvg<T extends Query, As extends string | undefined = undefined>(this: T, arg: Expression<T>, options?: AggregateOptions<T, As>): SelectAgg<T, 'avg', As, NullableColumn<NumberColumn>>;
951
+ min<T extends Query>(this: T, arg: Aggregate1ArgumentTypes<T>['min'], options?: AggregateOptions<T>): SetQueryReturnsValue<T, NullableColumn<NumberColumn>>;
952
+ _min<T extends Query>(this: T, arg: Aggregate1ArgumentTypes<T>['min'], options?: AggregateOptions<T>): SetQueryReturnsValue<T, NullableColumn<NumberColumn>>;
953
+ selectMin<T extends Query, As extends string | undefined = undefined>(this: T, arg: Expression<T>, options?: AggregateOptions<T, As>): SelectAgg<T, 'min', As, NullableColumn<NumberColumn>>;
954
+ _selectMin<T extends Query, As extends string | undefined = undefined>(this: T, arg: Expression<T>, options?: AggregateOptions<T, As>): SelectAgg<T, 'min', As, NullableColumn<NumberColumn>>;
955
+ max<T extends Query>(this: T, arg: Aggregate1ArgumentTypes<T>['max'], options?: AggregateOptions<T>): SetQueryReturnsValue<T, NullableColumn<NumberColumn>>;
956
+ _max<T extends Query>(this: T, arg: Aggregate1ArgumentTypes<T>['max'], options?: AggregateOptions<T>): SetQueryReturnsValue<T, NullableColumn<NumberColumn>>;
957
+ selectMax<T extends Query, As extends string | undefined = undefined>(this: T, arg: Expression<T>, options?: AggregateOptions<T, As>): SelectAgg<T, 'max', As, NullableColumn<NumberColumn>>;
958
+ _selectMax<T extends Query, As extends string | undefined = undefined>(this: T, arg: Expression<T>, options?: AggregateOptions<T, As>): SelectAgg<T, 'max', As, NullableColumn<NumberColumn>>;
959
+ sum<T extends Query>(this: T, arg: Aggregate1ArgumentTypes<T>['sum'], options?: AggregateOptions<T>): SetQueryReturnsValue<T, NullableColumn<NumberColumn>>;
960
+ _sum<T extends Query>(this: T, arg: Aggregate1ArgumentTypes<T>['sum'], options?: AggregateOptions<T>): SetQueryReturnsValue<T, NullableColumn<NumberColumn>>;
961
+ selectSum<T extends Query, As extends string | undefined = undefined>(this: T, arg: Expression<T>, options?: AggregateOptions<T, As>): SelectAgg<T, 'sum', As, NullableColumn<NumberColumn>>;
962
+ _selectSum<T extends Query, As extends string | undefined = undefined>(this: T, arg: Expression<T>, options?: AggregateOptions<T, As>): SelectAgg<T, 'sum', As, NullableColumn<NumberColumn>>;
963
+ bitAnd<T extends Query>(this: T, arg: Aggregate1ArgumentTypes<T>['bitAnd'], options?: AggregateOptions<T>): SetQueryReturnsValue<T, NullableColumn<NumberColumn>>;
964
+ _bitAnd<T extends Query>(this: T, arg: Aggregate1ArgumentTypes<T>['bitAnd'], options?: AggregateOptions<T>): SetQueryReturnsValue<T, NullableColumn<NumberColumn>>;
965
+ selectBitAnd<T extends Query, As extends string | undefined = undefined>(this: T, arg: Expression<T>, options?: AggregateOptions<T, As>): SelectAgg<T, 'bit_and', As, NullableColumn<NumberColumn>>;
966
+ _selectBitAnd<T extends Query, As extends string | undefined = undefined>(this: T, arg: Expression<T>, options?: AggregateOptions<T, As>): SelectAgg<T, 'bit_and', As, NullableColumn<NumberColumn>>;
967
+ bitOr<T extends Query>(this: T, arg: Aggregate1ArgumentTypes<T>['bitOr'], options?: AggregateOptions<T>): SetQueryReturnsValue<T, NullableColumn<NumberColumn>>;
968
+ _bitOr<T extends Query>(this: T, arg: Aggregate1ArgumentTypes<T>['bitOr'], options?: AggregateOptions<T>): SetQueryReturnsValue<T, NullableColumn<NumberColumn>>;
969
+ selectBitOr<T extends Query, As extends string | undefined = undefined>(this: T, arg: Expression<T>, options?: AggregateOptions<T, As>): SelectAgg<T, 'bit_or', As, NullableColumn<NumberColumn>>;
970
+ _selectBitOr<T extends Query, As extends string | undefined = undefined>(this: T, arg: Expression<T>, options?: AggregateOptions<T, As>): SelectAgg<T, 'bit_or', As, NullableColumn<NumberColumn>>;
971
+ boolAnd<T extends Query>(this: T, arg: Aggregate1ArgumentTypes<T>['boolAnd'], options?: AggregateOptions<T>): SetQueryReturnsValue<T, NullableColumn<BooleanColumn>>;
972
+ _boolAnd<T extends Query>(this: T, arg: Aggregate1ArgumentTypes<T>['boolAnd'], options?: AggregateOptions<T>): SetQueryReturnsValue<T, NullableColumn<BooleanColumn>>;
973
+ selectBoolAnd<T extends Query, As extends string | undefined = undefined>(this: T, arg: Expression<T>, options?: AggregateOptions<T, As>): SelectAgg<T, 'bool_and', As, NullableColumn<BooleanColumn>>;
974
+ _selectBoolAnd<T extends Query, As extends string | undefined = undefined>(this: T, arg: Expression<T>, options?: AggregateOptions<T, As>): SelectAgg<T, 'bool_and', As, NullableColumn<BooleanColumn>>;
975
+ boolOr<T extends Query>(this: T, arg: Aggregate1ArgumentTypes<T>['boolOr'], options?: AggregateOptions<T>): SetQueryReturnsValue<T, NullableColumn<BooleanColumn>>;
976
+ _boolOr<T extends Query>(this: T, arg: Aggregate1ArgumentTypes<T>['boolOr'], options?: AggregateOptions<T>): SetQueryReturnsValue<T, NullableColumn<BooleanColumn>>;
977
+ selectBoolOr<T extends Query, As extends string | undefined = undefined>(this: T, arg: Expression<T>, options?: AggregateOptions<T, As>): SelectAgg<T, 'bool_or', As, NullableColumn<BooleanColumn>>;
978
+ _selectBoolOr<T extends Query, As extends string | undefined = undefined>(this: T, arg: Expression<T>, options?: AggregateOptions<T, As>): SelectAgg<T, 'bool_or', As, NullableColumn<BooleanColumn>>;
979
+ every<T extends Query>(this: T, arg: Aggregate1ArgumentTypes<T>['every'], options?: AggregateOptions<T>): SetQueryReturnsValue<T, NullableColumn<BooleanColumn>>;
980
+ _every<T extends Query>(this: T, arg: Aggregate1ArgumentTypes<T>['every'], options?: AggregateOptions<T>): SetQueryReturnsValue<T, NullableColumn<BooleanColumn>>;
981
+ selectEvery<T extends Query, As extends string | undefined = undefined>(this: T, arg: Expression<T>, options?: AggregateOptions<T, As>): SelectAgg<T, 'every', As, NullableColumn<BooleanColumn>>;
982
+ _selectEvery<T extends Query, As extends string | undefined = undefined>(this: T, arg: Expression<T>, options?: AggregateOptions<T, As>): SelectAgg<T, 'every', As, NullableColumn<BooleanColumn>>;
983
+ jsonAgg<T extends Query, Expr extends Aggregate1ArgumentTypes<T>['jsonAgg']>(this: T, arg: Expr, options?: AggregateOptions<T>): SetQueryReturnsValue<T, NullableColumn<ArrayColumn<ExpressionOutput<T, Expr>>>>;
984
+ _jsonAgg<T extends Query, Expr extends Aggregate1ArgumentTypes<T>['jsonAgg']>(this: T, arg: Expr, options?: AggregateOptions<T>): SetQueryReturnsValue<T, NullableColumn<ArrayColumn<ExpressionOutput<T, Expr>>>>;
985
+ selectJsonAgg<T extends Query, Expr extends Aggregate1ArgumentTypes<T>['jsonAgg'], As extends string | undefined = undefined>(this: T, arg: Expr, options?: AggregateOptions<T, As>): SelectAgg<T, 'json_agg', As, NullableColumn<ArrayColumn<ExpressionOutput<T, Expr>>>>;
986
+ _selectJsonAgg<T extends Query, Expr extends Aggregate1ArgumentTypes<T>['jsonAgg'], As extends string | undefined = undefined>(this: T, arg: Expr, options?: AggregateOptions<T, As>): SelectAgg<T, 'json_agg', As, NullableColumn<ArrayColumn<ExpressionOutput<T, Expr>>>>;
987
+ jsonbAgg<T extends Query, Expr extends Aggregate1ArgumentTypes<T>['jsonbAgg']>(this: T, arg: Expr, options?: AggregateOptions<T>): SetQueryReturnsValue<T, NullableColumn<ArrayColumn<ExpressionOutput<T, Expr>>>>;
988
+ _jsonbAgg<T extends Query, Expr extends Aggregate1ArgumentTypes<T>['jsonbAgg']>(this: T, arg: Expr, options?: AggregateOptions<T>): SetQueryReturnsValue<T, NullableColumn<ArrayColumn<ExpressionOutput<T, Expr>>>>;
989
+ selectJsonbAgg<T extends Query, Expr extends Aggregate1ArgumentTypes<T>['jsonbAgg'], As extends string | undefined = undefined>(this: T, arg: Expr, options?: AggregateOptions<T, As>): SelectAgg<T, 'jsonb_agg', As, NullableColumn<ArrayColumn<ExpressionOutput<T, Expr>>>>;
990
+ _selectJsonbAgg<T extends Query, Expr extends Aggregate1ArgumentTypes<T>['jsonbAgg'], As extends string | undefined = undefined>(this: T, arg: Expr, options?: AggregateOptions<T, As>): SelectAgg<T, 'jsonb_agg', As, NullableColumn<ArrayColumn<ExpressionOutput<T, Expr>>>>;
991
+ xmlAgg<T extends Query, Expr extends Aggregate1ArgumentTypes<T>['xmlAgg']>(this: T, arg: Expr, options?: AggregateOptions<T>): SetQueryReturnsValue<T, NullableColumn<StringColumn>>;
992
+ _xmlAgg<T extends Query, Expr extends Aggregate1ArgumentTypes<T>['xmlAgg']>(this: T, arg: Expr, options?: AggregateOptions<T>): SetQueryReturnsValue<T, NullableColumn<StringColumn>>;
993
+ selectXmlAgg<T extends Query, As extends string | undefined = undefined>(this: T, arg: Aggregate1ArgumentTypes<T>['xmlAgg'], options?: AggregateOptions<T, As>): SelectAgg<T, 'xmlagg', As, NullableColumn<StringColumn>>;
994
+ _selectXmlAgg<T extends Query, As extends string | undefined = undefined>(this: T, arg: Aggregate1ArgumentTypes<T>['xmlAgg'], options?: AggregateOptions<T, As>): SelectAgg<T, 'xmlagg', As, NullableColumn<StringColumn>>;
995
+ jsonObjectAgg<T extends Query, Obj extends Record<string, Expression<T>>>(this: T, obj: Obj, options?: AggregateOptions<T>): SetQueryReturnsValue<T, NullableColumn<ColumnType<{
996
+ [K in keyof Obj]: ExpressionOutput<T, Obj[K]>['type'];
997
+ }>>>;
998
+ _jsonObjectAgg<T extends Query, Obj extends Record<string, Expression<T>>>(this: T, obj: Obj, options?: AggregateOptions<T>): SetQueryReturnsValue<T, NullableColumn<ColumnType<{
999
+ [K in keyof Obj]: ExpressionOutput<T, Obj[K]>['type'];
1000
+ }>>>;
1001
+ selectJsonObjectAgg<T extends Query, Obj extends Record<string, Expression<T>>, As extends string | undefined = undefined>(this: T, obj: Obj, options?: AggregateOptions<T, As>): SelectAgg<T, 'json_object_agg', As, NullableColumn<ColumnType<{
1002
+ [K in keyof Obj]: ExpressionOutput<T, Obj[K]>['type'];
1003
+ }>>>;
1004
+ _selectJsonObjectAgg<T extends Query, Obj extends Record<string, Expression<T>>, As extends string | undefined = undefined>(this: T, obj: Obj, options?: AggregateOptions<T, As>): SelectAgg<T, 'json_object_agg', As, NullableColumn<ColumnType<{
1005
+ [K in keyof Obj]: ExpressionOutput<T, Obj[K]>['type'];
1006
+ }>>>;
1007
+ jsonbObjectAgg<T extends Query, Obj extends Record<string, Expression<T>>>(this: T, obj: Obj, options?: AggregateOptions<T>): SetQueryReturnsValue<T, NullableColumn<ColumnType<{
1008
+ [K in keyof Obj]: ExpressionOutput<T, Obj[K]>['type'];
1009
+ }>>>;
1010
+ _jsonbObjectAgg<T extends Query, Obj extends Record<string, Expression<T>>>(this: T, obj: Obj, options?: AggregateOptions<T>): SetQueryReturnsValue<T, NullableColumn<ColumnType<{
1011
+ [K in keyof Obj]: ExpressionOutput<T, Obj[K]>['type'];
1012
+ }>>>;
1013
+ selectJsonbObjectAgg<T extends Query, Obj extends Record<string, Expression<T>>, As extends string | undefined = undefined>(this: T, obj: Obj, options?: AggregateOptions<T, As>): SelectAgg<T, 'jsonb_object_agg', As, NullableColumn<ColumnType<{
1014
+ [K in keyof Obj]: ExpressionOutput<T, Obj[K]>['type'];
1015
+ }>>>;
1016
+ _selectJsonbObjectAgg<T extends Query, Obj extends Record<string, Expression<T>>, As extends string | undefined = undefined>(this: T, obj: Obj, options?: AggregateOptions<T, As>): SelectAgg<T, 'jsonb_object_agg', As, NullableColumn<ColumnType<{
1017
+ [K in keyof Obj]: ExpressionOutput<T, Obj[K]>['type'];
1018
+ }>>>;
1019
+ stringAgg<T extends Query>(this: T, arg: StringExpression<T>, delimiter: string, options?: AggregateOptions<T>): SetQueryReturnsValue<T, NullableColumn<StringColumn>>;
1020
+ _stringAgg<T extends Query>(this: T, arg: StringExpression<T>, delimiter: string, options?: AggregateOptions<T>): SetQueryReturnsValue<T, NullableColumn<StringColumn>>;
1021
+ selectStringAgg<T extends Query, As extends string | undefined = undefined>(this: T, arg: StringExpression<T>, delimiter: string, options?: AggregateOptions<T, As>): SelectAgg<T, 'string_agg', As, NullableColumn<StringColumn>>;
1022
+ _selectStringAgg<T extends Query, As extends string | undefined = undefined>(this: T, arg: StringExpression<T>, delimiter: string, options?: AggregateOptions<T, As>): SelectAgg<T, 'string_agg', As, NullableColumn<StringColumn>>;
1023
+ }
1024
+
1025
+ declare type GetArg<T extends QueryBase> = keyof T['selectable'] | (RelationQueryBase & {
1026
+ returnType: 'value' | 'valueOrThrow';
1027
+ }) | RawExpression;
1028
+ declare type UnwrapRaw<T extends Query, Arg extends GetArg<T>> = Arg extends RawExpression ? Arg['__column'] : Exclude<Arg, RawExpression>;
1029
+ declare type GetResult<T extends Query, Arg extends GetArg<T>> = SetQueryReturnsValue<T, UnwrapRaw<T, Arg>>;
1030
+ declare type GetOptionalResult<T extends Query, Arg extends GetArg<T>> = SetQueryReturnsValueOptional<T, UnwrapRaw<T, Arg>>;
1031
+ declare type getValueKey = typeof getValueKey;
1032
+ declare const getValueKey: unique symbol;
1033
+ declare class QueryGet {
1034
+ get<T extends Query, Arg extends GetArg<T>>(this: T, arg: Arg): GetResult<T, Arg>;
1035
+ _get<T extends Query, Arg extends GetArg<T>>(this: T, arg: Arg): GetResult<T, Arg>;
1036
+ getOptional<T extends Query, Arg extends GetArg<T>>(this: T, arg: Arg): GetOptionalResult<T, Arg>;
1037
+ _getOptional<T extends Query, Arg extends GetArg<T>>(this: T, arg: Arg): GetOptionalResult<T, Arg>;
1038
+ }
1039
+
1040
+ declare type SelectArg<T extends QueryBase> = keyof T['selectable'] | (T['relations'] extends Record<string, Relation> ? keyof T['relations'] : never) | RelationQueryBase | SelectAsArg<T>;
1041
+ declare type SelectAsArg<T extends QueryBase> = Record<string, keyof T['selectable'] | Query | RawExpression>;
1042
+ declare type SelectResult<T extends Query, Args extends SelectArg<T>[], SelectAsArgs = SimpleSpread<FilterTuple<Args, SelectAsArg<QueryBase>>>> = AddQuerySelect<T, {
1043
+ [Arg in Args[number] as Arg extends keyof T['selectable'] ? T['selectable'][Arg]['as'] : Arg extends keyof T['relations'] ? Arg : Arg extends RelationQueryBase ? Arg['tableAlias'] extends string ? Arg['tableAlias'] : never : never]: Arg extends keyof T['selectable'] ? T['selectable'][Arg]['column'] : Arg extends RelationQueryBase ? Arg['returnType'] extends 'all' ? ArrayOfColumnsObjects<Arg['result']> : Arg['returnType'] extends 'valueOrThrow' ? Arg['result']['value'] : Arg[isRequiredRelationKey] extends true ? ColumnsObject<Arg['result']> : NullableColumn<ColumnsObject<Arg['result']>> : T['relations'] extends Record<string, Relation> ? Arg extends keyof T['relations'] ? T['relations'][Arg]['returns'] extends 'many' ? ArrayOfColumnsObjects<T['relations'][Arg]['model']['result']> : T['relations'][Arg]['options']['required'] extends true ? ColumnsObject<T['relations'][Arg]['model']['result']> : NullableColumn<ColumnsObject<T['relations'][Arg]['model']['result']>> : never : never;
1044
+ } & {
1045
+ [K in keyof SelectAsArgs]: SelectAsArgs[K] extends keyof T['selectable'] ? T['selectable'][SelectAsArgs[K]]['column'] : SelectAsArgs[K] extends RawExpression ? SelectAsArgs[K]['__column'] : SelectAsArgs[K] extends Query ? SelectAsArgs[K]['returnType'] extends 'all' ? ArrayOfColumnsObjects<SelectAsArgs[K]['result']> : ColumnsObject<SelectAsArgs[K]['result']> : never;
1046
+ }>;
1047
+ declare const addParserForRawExpression: (q: Query, key: string | getValueKey, raw: RawExpression) => void;
1048
+ declare const addParserForSelectItem: <T extends Query>(q: T, as: string | getValueKey | undefined, key: string, item: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | keyof T["selectable"]) => void;
1049
+ declare const addParserToQuery: (query: QueryData, key: string | getValueKey, parser: ColumnParser) => void;
1050
+ declare const processSelectArg: <T extends Query>(q: T, as: string | undefined, item: SelectArg<T>, columnAs?: string | getValueKey) => SelectItem;
1051
+ declare class Select {
1052
+ select<T extends Query, K extends SelectArg<T>[]>(this: T, ...args: K): SelectResult<T, K>;
1053
+ _select<T extends Query, K extends SelectArg<T>[]>(this: T, ...args: K): SelectResult<T, K>;
1054
+ selectAll<T extends Query>(this: T): QuerySelectAll<T>;
1055
+ _selectAll<T extends Query>(this: T): QuerySelectAll<T>;
1056
+ }
1057
+
1058
+ declare type FromArgs<T extends Query> = [
1059
+ first: string | Query | RawExpression | Exclude<keyof T['withData'], symbol | number>,
1060
+ second?: string | {
1061
+ as?: string;
1062
+ only?: boolean;
1063
+ }
1064
+ ];
1065
+ declare type FromResult<T extends Query, Args extends FromArgs<T>> = Args[1] extends string ? SetQueryTableAlias<T, Args[1]> : Args[1] extends {
1066
+ as: string;
1067
+ } ? SetQueryTableAlias<T, Args[1]['as']> : Args[0] extends string ? SetQueryTableAlias<T, Args[0]> : Args[0] extends Query ? SetQueryTableAlias<T, AliasOrTable<Args[0]>> : T;
1068
+ declare class From {
1069
+ from<T extends Query, Args extends FromArgs<T>>(this: T, ...args: Args): FromResult<T, Args>;
1070
+ _from<T extends Query, Args extends FromArgs<T>>(this: T, ...args: Args): FromResult<T, Args>;
1071
+ }
1072
+
1073
+ declare type DbTableOptions = {
1074
+ schema?: string;
1075
+ } & QueryLogOptions;
1076
+ interface Db<Table extends string | undefined = undefined, Shape extends ColumnsShape = Record<string, never>, Relations extends Query['relations'] = Query['relations']> extends QueryMethods {
1077
+ new (adapter: Adapter, queryBuilder: Db, table?: Table, shape?: Shape, options?: DbTableOptions): this;
1078
+ adapter: Adapter;
1079
+ queryBuilder: Db;
1080
+ whereQueryBuilder: Query['whereQueryBuilder'];
1081
+ table: Table;
1082
+ shape: Shape;
1083
+ schema: TableSchema<Shape>;
1084
+ type: ColumnShapeOutput<Shape>;
1085
+ inputType: ColumnShapeInput<Shape>;
1086
+ returnType: 'all';
1087
+ then: ThenResult<Pick<ColumnShapeOutput<Shape>, DefaultSelectColumns<Shape>[number]>[]>;
1088
+ query: QueryData;
1089
+ columns: (keyof ColumnShapeOutput<Shape>)[];
1090
+ defaultSelectColumns: DefaultSelectColumns<Shape>;
1091
+ columnsParsers?: ColumnsParsers;
1092
+ result: Pick<Shape, DefaultSelectColumns<Shape>[number]>;
1093
+ hasSelect: false;
1094
+ hasWhere: false;
1095
+ selectable: {
1096
+ [K in keyof Shape]: {
1097
+ as: K;
1098
+ column: Shape[K];
1099
+ };
1100
+ } & {
1101
+ [K in keyof Shape as `${Table}.${StringKey<K>}`]: {
1102
+ as: K;
1103
+ column: Shape[K];
1104
+ };
1105
+ };
1106
+ tableAlias: undefined;
1107
+ windows: PropertyKey[];
1108
+ withData: Query['withData'];
1109
+ joinedTables: Query['joinedTables'];
1110
+ relations: Relations;
1111
+ [defaultsKey]: Query[defaultsKey];
1112
+ }
1113
+ declare class Db<Table extends string | undefined = undefined, Shape extends ColumnsShape = Record<string, never>, Relations extends Query['relations'] = Query['relations']> implements Query {
1114
+ adapter: Adapter;
1115
+ queryBuilder: Db;
1116
+ table: Table;
1117
+ shape: Shape;
1118
+ whereQueryBuilder: typeof WhereQueryBuilder;
1119
+ onQueryBuilder: typeof OnQueryBuilder;
1120
+ constructor(adapter: Adapter, queryBuilder: Db, table: Table, shape: Shape, options: DbTableOptions);
1121
+ }
1122
+ declare type DbResult<CT extends ColumnTypesBase> = Db & {
1123
+ <Table extends string, Shape extends ColumnsShape = ColumnsShape>(table: Table, shape?: ((t: CT) => Shape) | Shape, options?: DbTableOptions): Db<Table, Shape>;
1124
+ adapter: Adapter;
1125
+ destroy: Adapter['destroy'];
1126
+ };
1127
+ declare type DbOptions<CT extends ColumnTypesBase = ColumnTypes> = ({
1128
+ adapter: Adapter;
1129
+ } | Omit<AdapterOptions, 'log'>) & QueryLogOptions & {
1130
+ columnTypes?: CT;
1131
+ };
1132
+ declare const createDb: <CT extends ColumnTypesBase>({ log, logger, columnTypes: ct, ...options }: DbOptions<CT>) => DbResult<CT>;
1133
+
1134
+ declare type WithArgsOptions = Omit<WithOptions, 'columns'> & {
1135
+ columns?: boolean | string[];
1136
+ };
1137
+ declare type WithArgs = [string, ColumnsShape, RawExpression] | [string, WithArgsOptions, ColumnsShape, RawExpression] | [string, Query | ((qb: Db) => Query)] | [string, WithArgsOptions, Query | ((qb: Db) => Query)];
1138
+ declare type WithShape<Args extends WithArgs> = Args[1] extends Query ? Args[1]['result'] : Args[1] extends (qb: Db) => Query ? ReturnType<Args[1]>['result'] : Args[2] extends Query ? Args[2]['result'] : Args[2] extends (qb: Db) => Query ? ReturnType<Args[2]>['result'] : Args[1] extends ColumnsShape ? Args[1] : Args[2] extends ColumnsShape ? Args[2] : Args[2] extends (t: ColumnTypes) => ColumnsShape ? ReturnType<Args[2]> : never;
1139
+ declare type WithResult<T extends Query, Args extends WithArgs, Shape extends ColumnsShape> = AddQueryWith<T, {
1140
+ table: Args[0];
1141
+ shape: Shape;
1142
+ type: ColumnShapeOutput<Shape>;
1143
+ }>;
1144
+ declare class With {
1145
+ with<T extends Query, Args extends WithArgs, Shape extends ColumnsShape = WithShape<Args>>(this: T, ...args: Args): WithResult<T, Args, Shape>;
1146
+ _with<T extends Query, Args extends WithArgs, Shape extends ColumnsShape = WithShape<Args>>(this: T, ...args: Args): WithResult<T, Args, Shape>;
1147
+ }
1148
+
1149
+ declare type UnionArg<T extends Query> = (Omit<Query, 'result'> & {
1150
+ result: T['result'];
1151
+ }) | RawExpression;
1152
+ declare class Union {
1153
+ union<T extends Query>(this: T, args: UnionArg<T>[], wrap?: boolean): T;
1154
+ _union<T extends Query>(this: T, args: UnionArg<T>[], wrap?: boolean): T;
1155
+ unionAll<T extends Query>(this: T, args: UnionArg<T>[], wrap?: boolean): T;
1156
+ _unionAll<T extends Query>(this: T, args: UnionArg<T>[], wrap?: boolean): T;
1157
+ intersect<T extends Query>(this: T, args: UnionArg<T>[], wrap?: boolean): T;
1158
+ _intersect<T extends Query>(this: T, args: UnionArg<T>[], wrap?: boolean): T;
1159
+ intersectAll<T extends Query>(this: T, args: UnionArg<T>[], wrap?: boolean): T;
1160
+ _intersectAll<T extends Query>(this: T, args: UnionArg<T>[], wrap?: boolean): T;
1161
+ except<T extends Query>(this: T, args: UnionArg<T>[], wrap?: boolean): T;
1162
+ _except<T extends Query>(this: T, args: UnionArg<T>[], wrap?: boolean): T;
1163
+ exceptAll<T extends Query>(this: T, args: UnionArg<T>[], wrap?: boolean): T;
1164
+ _exceptAll<T extends Query>(this: T, args: UnionArg<T>[], wrap?: boolean): T;
1165
+ }
1166
+
1167
+ declare type JsonColumnName<T extends Pick<Query, 'selectable'>> = StringKey<{
1168
+ [K in keyof T['selectable']]: T['selectable'][K]['column']['dataType'] extends 'jsonb' ? K : never;
1169
+ }[keyof T['selectable']]>;
1170
+ declare type ColumnOrJsonMethod<T extends Query> = JsonColumnName<T> | JsonItem;
1171
+ declare type JsonSetResult<T extends Query, Column extends ColumnOrJsonMethod<T>, As extends string, Type extends ColumnType = Column extends keyof T['shape'] ? T['shape'][Column] : Column extends JsonItem ? Column['__json'][2] : ColumnType> = JsonItem<As, Type> & (Type extends ColumnType ? AddQuerySelect<T, Record<As, Type>> : T);
1172
+ declare type JsonPathQueryResult<T extends Query, As extends string, Type extends ColumnType> = JsonItem & AddQuerySelect<T, {
1173
+ [K in As]: Type;
1174
+ }>;
1175
+ declare class Json {
1176
+ json<T extends Query>(this: T): SetQueryReturnsValueOptional<T, StringColumn>;
1177
+ _json<T extends Query>(this: T): SetQueryReturnsValueOptional<T, StringColumn>;
1178
+ jsonSet<T extends Query, Column extends ColumnOrJsonMethod<T>, As extends string = Column extends JsonItem ? Column['__json'][1] : Column>(this: T, column: Column, path: Array<string | number>, value: unknown, options?: {
1179
+ as?: As;
1180
+ createIfMissing?: boolean;
1181
+ }): JsonSetResult<T, Column, As>;
1182
+ _jsonSet<T extends Query, Column extends ColumnOrJsonMethod<T>, As extends string = Column extends JsonItem ? Column['__json'][1] : Column>(this: T, column: Column, path: Array<string | number>, value: unknown, options?: {
1183
+ as?: As;
1184
+ createIfMissing?: boolean;
1185
+ }): JsonSetResult<T, Column, As>;
1186
+ jsonInsert<T extends Query, Column extends ColumnOrJsonMethod<T>, As extends string = Column extends JsonItem ? Column['__json'][1] : Column>(this: T, ...args: [
1187
+ column: Column,
1188
+ path: Array<string | number>,
1189
+ value: unknown,
1190
+ options?: {
1191
+ as?: As;
1192
+ insertAfter?: boolean;
1193
+ }
1194
+ ]): JsonSetResult<T, Column, As>;
1195
+ _jsonInsert<T extends Query, Column extends ColumnOrJsonMethod<T>, As extends string = Column extends JsonItem ? Column['__json'][1] : Column>(this: T, column: Column, path: Array<string | number>, value: unknown, options?: {
1196
+ as?: As;
1197
+ insertAfter?: boolean;
1198
+ }): JsonSetResult<T, Column, As>;
1199
+ jsonRemove<T extends Query, Column extends ColumnOrJsonMethod<T>, As extends string = Column extends JsonItem ? Column['__json'][1] : Column>(this: T, ...args: [
1200
+ column: Column,
1201
+ path: Array<string | number>,
1202
+ options?: {
1203
+ as?: As;
1204
+ }
1205
+ ]): JsonSetResult<T, Column, As>;
1206
+ _jsonRemove<T extends Query, Column extends ColumnOrJsonMethod<T>, As extends string = Column extends JsonItem ? Column['__json'][1] : Column>(this: T, column: Column, path: Array<string | number>, options?: {
1207
+ as?: As;
1208
+ }): JsonSetResult<T, Column, As>;
1209
+ jsonPathQuery<T extends Query, As extends string, Type extends ColumnType>(this: T, ...args: [
1210
+ type: Type,
1211
+ column: ColumnOrJsonMethod<T>,
1212
+ path: string,
1213
+ as: As,
1214
+ options?: {
1215
+ vars?: string;
1216
+ silent?: boolean;
1217
+ }
1218
+ ]): JsonPathQueryResult<T, As, Type>;
1219
+ _jsonPathQuery<T extends Query, As extends string, Type extends ColumnType>(this: T, type: Type, column: ColumnOrJsonMethod<T>, path: string, as: As, options?: {
1220
+ vars?: string;
1221
+ silent?: boolean;
1222
+ }): JsonPathQueryResult<T, As, Type>;
1223
+ }
1224
+
1225
+ declare type DeleteArgs<T extends Query> = T['hasWhere'] extends true ? [forceAll?: boolean] : [true];
1226
+ declare type DeleteResult<T extends Query> = T['hasSelect'] extends false ? SetQueryReturnsRowCount<T> : T;
1227
+ declare class Delete {
1228
+ del<T extends Query>(this: T, ...args: DeleteArgs<T>): DeleteResult<T>;
1229
+ _del<T extends Query>(this: T, ...args: DeleteArgs<T>): DeleteResult<T>;
1230
+ delete<T extends Query>(this: T, ...args: DeleteArgs<T>): DeleteResult<T>;
1231
+ _delete<T extends Query>(this: T, ...args: DeleteArgs<T>): DeleteResult<T>;
1232
+ }
1233
+
1234
+ declare class Transaction {
1235
+ transaction<T extends Query, Result>(this: T, cb: (query: T) => Promise<Result>): Promise<Result>;
1236
+ transacting<T extends Query>(this: T, query: Query): T;
1237
+ _transacting<T extends Query>(this: T, query: Query): T;
1238
+ }
1239
+
1240
+ declare type ForQueryBuilder<Q extends Query> = Q & {
1241
+ noWait<T extends ForQueryBuilder<Q>>(this: T): T;
1242
+ _noWait<T extends ForQueryBuilder<Q>>(this: T): T;
1243
+ skipLocked<T extends ForQueryBuilder<Q>>(this: T): T;
1244
+ _skipLocked<T extends ForQueryBuilder<Q>>(this: T): T;
1245
+ };
1246
+ declare class For {
1247
+ forUpdate<T extends Query>(this: T, tableNames?: string[] | RawExpression): ForQueryBuilder<T>;
1248
+ _forUpdate<T extends Query>(this: T, tableNames?: string[] | RawExpression): ForQueryBuilder<T>;
1249
+ forNoKeyUpdate<T extends Query>(this: T, tableNames?: string[] | RawExpression): ForQueryBuilder<T>;
1250
+ _forNoKeyUpdate<T extends Query>(this: T, tableNames?: string[] | RawExpression): ForQueryBuilder<T>;
1251
+ forShare<T extends Query>(this: T, tableNames?: string[] | RawExpression): ForQueryBuilder<T>;
1252
+ _forShare<T extends Query>(this: T, tableNames?: string[] | RawExpression): ForQueryBuilder<T>;
1253
+ forKeyShare<T extends Query>(this: T, tableNames?: string[] | RawExpression): ForQueryBuilder<T>;
1254
+ _forKeyShare<T extends Query>(this: T, tableNames?: string[] | RawExpression): ForQueryBuilder<T>;
1255
+ }
1256
+
1257
+ declare type ColumnInfo = {
1258
+ defaultValue: unknown;
1259
+ type: string;
1260
+ maxLength: number | null;
1261
+ nullable: boolean;
1262
+ };
1263
+ declare class ColumnInfoMethods {
1264
+ columnInfo<T extends Query, Column extends keyof T['shape'] | undefined = undefined>(this: T, column?: Column): SetQueryReturnsColumnInfo<T, Column>;
1265
+ _columnInfo<T extends Query, Column extends keyof T['shape'] | undefined = undefined>(this: T, column?: Column): SetQueryReturnsColumnInfo<T, Column>;
1266
+ }
1267
+
1268
+ declare type ClearStatement = 'with' | 'select' | 'where' | 'union' | 'using' | 'join' | 'group' | 'order' | 'having' | 'limit' | 'offset' | 'counters';
1269
+ declare class Clear {
1270
+ clear<T extends Query>(this: T, ...clears: ClearStatement[]): T;
1271
+ _clear<T extends Query>(this: T, ...clears: ClearStatement[]): T;
1272
+ }
1273
+
1274
+ declare type HavingArgObject<T extends Query, Agg extends keyof Aggregate1ArgumentTypes<T>> = {
1275
+ [Column in Exclude<Aggregate1ArgumentTypes<T>[Agg], RawExpression>]?: T['selectable'][Column]['column']['type'] | (ColumnOperators<T['selectable'], Column> & AggregateOptions<T>);
1276
+ };
1277
+ declare type HavingArg<T extends Query = Query> = ({
1278
+ [Agg in keyof Aggregate1ArgumentTypes<T>]?: HavingArgObject<T, Agg>;
1279
+ } & {
1280
+ count?: number | HavingArgObject<T, 'count'>;
1281
+ }) | Query | RawExpression;
1282
+ declare class Having {
1283
+ having<T extends Query>(this: T, ...args: HavingArg<T>[]): T;
1284
+ _having<T extends Query>(this: T, ...args: HavingArg<T>[]): T;
1285
+ havingOr<T extends Query>(this: T, ...args: HavingArg<T>[]): T;
1286
+ _havingOr<T extends Query>(this: T, ...args: HavingArg<T>[]): T;
1287
+ }
1288
+
1289
+ declare class Window {
1290
+ selectRowNumber<T extends Query, As extends string | undefined = undefined>(this: T, options: WindowFunctionOptions<T, As>): SelectAgg<T, 'row_number', As, IntegerColumn>;
1291
+ _selectRowNumber<T extends Query, As extends string | undefined = undefined>(this: T, options: WindowFunctionOptions<T, As>): SelectAgg<T, 'row_number', As, IntegerColumn>;
1292
+ selectRank<T extends Query, As extends string | undefined = undefined>(this: T, options: WindowFunctionOptions<T, As>): SelectAgg<T, 'rank', As, IntegerColumn>;
1293
+ _selectRank<T extends Query, As extends string | undefined = undefined>(this: T, options: WindowFunctionOptions<T, As>): SelectAgg<T, 'rank', As, IntegerColumn>;
1294
+ selectDenseRank<T extends Query, As extends string | undefined = undefined>(this: T, options: WindowFunctionOptions<T, As>): SelectAgg<T, 'dense_rank', As, IntegerColumn>;
1295
+ _selectDenseRank<T extends Query, As extends string | undefined = undefined>(this: T, options: WindowFunctionOptions<T, As>): SelectAgg<T, 'dense_rank', As, IntegerColumn>;
1296
+ selectPercentRank<T extends Query, As extends string | undefined = undefined>(this: T, options: WindowFunctionOptions<T, As>): SelectAgg<T, 'percent_rank', As, IntegerColumn>;
1297
+ _selectPercentRank<T extends Query, As extends string | undefined = undefined>(this: T, options: WindowFunctionOptions<T, As>): SelectAgg<T, 'percent_rank', As, IntegerColumn>;
1298
+ selectCumeDist<T extends Query, As extends string | undefined = undefined>(this: T, options: WindowFunctionOptions<T, As>): SelectAgg<T, 'cume_dist', As, IntegerColumn>;
1299
+ _selectCumeDist<T extends Query, As extends string | undefined = undefined>(this: T, options: WindowFunctionOptions<T, As>): SelectAgg<T, 'cume_dist', As, IntegerColumn>;
1300
+ }
1301
+
1302
+ declare type UpsertData<T extends Query> = {
1303
+ update: UpdateData<T>;
1304
+ create: InsertData<T>;
1305
+ };
1306
+ declare type UpsertResult<T extends Query> = T['hasSelect'] extends true ? SetQueryReturnsOne<T> : SetQueryReturnsVoid<T>;
1307
+ declare type UpsertThis = WhereResult<Query> & {
1308
+ returnType: 'one' | 'oneOrThrow';
1309
+ };
1310
+ declare class QueryUpsert {
1311
+ upsert<T extends UpsertThis>(this: T, data: UpsertData<T>): UpsertResult<T>;
1312
+ _upsert<T extends UpsertThis>(this: T, data: UpsertData<T>): UpsertResult<T>;
1313
+ }
1314
+
1315
+ declare type WindowArg<T extends Query> = Record<string, WindowArgDeclaration<T> | RawExpression>;
1316
+ declare type WindowArgDeclaration<T extends Query = Query> = {
1317
+ partitionBy?: Expression<T> | Expression<T>[];
1318
+ order?: OrderArg<T>;
1319
+ };
1320
+ declare type WindowResult<T extends Query, W extends WindowArg<T>> = SetQueryWindows<T, PropertyKeyUnionToArray<keyof W>>;
1321
+ declare type OrderArg<T extends Query> = keyof T['selectable'] | {
1322
+ [K in Selectable<T>]?: SortDir | {
1323
+ dir: SortDir;
1324
+ nulls: 'FIRST' | 'LAST';
1325
+ };
1326
+ } | RawExpression;
1327
+ interface QueryMethods extends Aggregate, Select, From, Join, With, Union, Json, Insert, Update, Delete, Transaction, For, ColumnInfoMethods, Where, Clear, Having, Window, Then, QueryLog, QueryCallbacks, QueryUpsert, QueryGet {
1328
+ }
1329
+ declare class QueryMethods {
1330
+ windows: PropertyKey[];
1331
+ __model: Query;
1332
+ all<T extends Query>(this: T): SetQueryReturnsAll<T>;
1333
+ _all<T extends Query>(this: T): SetQueryReturnsAll<T>;
1334
+ take<T extends Query>(this: T): SetQueryReturnsOne<T>;
1335
+ _take<T extends Query>(this: T): SetQueryReturnsOne<T>;
1336
+ takeOptional<T extends Query>(this: T): SetQueryReturnsOneOptional<T>;
1337
+ _takeOptional<T extends Query>(this: T): SetQueryReturnsOneOptional<T>;
1338
+ rows<T extends Query>(this: T): SetQueryReturnsRows<T>;
1339
+ _rows<T extends Query>(this: T): SetQueryReturnsRows<T>;
1340
+ pluck<T extends Query, S extends Expression<T>>(this: T, select: S): SetQueryReturnsPluck<T, S>;
1341
+ _pluck<T extends Query, S extends Expression<T>>(this: T, select: S): SetQueryReturnsPluck<T, S>;
1342
+ exec<T extends Query>(this: T): SetQueryReturnsVoid<T>;
1343
+ _exec<T extends Query>(this: T): SetQueryReturnsVoid<T>;
1344
+ clone<T extends QueryBase>(this: T): T;
1345
+ toSql(this: Query, values?: unknown[]): Sql;
1346
+ distinct<T extends Query>(this: T, ...columns: Expression<T>[]): T;
1347
+ _distinct<T extends Query>(this: T, ...columns: Expression<T>[]): T;
1348
+ find<T extends Query>(this: T, ...args: GetTypesOrRaw<T['schema']['primaryTypes']>): SetQueryReturnsOne<WhereResult<T>>;
1349
+ _find<T extends Query>(this: T, ...args: GetTypesOrRaw<T['schema']['primaryTypes']>): SetQueryReturnsOne<WhereResult<T>>;
1350
+ findOptional<T extends Query>(this: T, ...args: GetTypesOrRaw<T['schema']['primaryTypes']>): SetQueryReturnsOneOptional<WhereResult<T>>;
1351
+ _findOptional<T extends Query>(this: T, ...args: GetTypesOrRaw<T['schema']['primaryTypes']>): SetQueryReturnsOneOptional<WhereResult<T>>;
1352
+ findBy<T extends Query>(this: T, ...args: WhereArg<T>[]): SetQueryReturnsOne<WhereResult<T>>;
1353
+ _findBy<T extends Query>(this: T, ...args: WhereArg<T>[]): SetQueryReturnsOne<WhereResult<T>>;
1354
+ findByOptional<T extends Query>(this: T, ...args: WhereArg<T>[]): SetQueryReturnsOneOptional<WhereResult<T>>;
1355
+ _findByOptional<T extends Query>(this: T, ...args: WhereArg<T>[]): SetQueryReturnsOneOptional<WhereResult<T>>;
1356
+ as<T extends Query, TableAlias extends string>(this: T, tableAlias: TableAlias): SetQueryTableAlias<T, TableAlias>;
1357
+ _as<T extends Query, TableAlias extends string>(this: T, tableAlias: TableAlias): SetQueryTableAlias<T, TableAlias>;
1358
+ withSchema<T extends Query>(this: T, schema: string): T;
1359
+ _withSchema<T extends Query>(this: T, schema: string): T;
1360
+ group<T extends Query>(this: T, ...columns: Expression<T>[]): T;
1361
+ _group<T extends Query>(this: T, ...columns: Expression<T>[]): T;
1362
+ window<T extends Query, W extends WindowArg<T>>(this: T, arg: W): WindowResult<T, W>;
1363
+ _window<T extends Query, W extends WindowArg<T>>(this: T, arg: W): WindowResult<T, W>;
1364
+ wrap<T extends Query, Q extends Query, As extends string = 't'>(this: T, query: Q, as?: As): SetQueryTableAlias<Q, As>;
1365
+ _wrap<T extends Query, Q extends Query, As extends string = 't'>(this: T, query: Q, as?: As): SetQueryTableAlias<Q, As>;
1366
+ order<T extends Query>(this: T, ...args: OrderArg<T>[]): T;
1367
+ _order<T extends Query>(this: T, ...args: OrderArg<T>[]): T;
1368
+ limit<T extends Query>(this: T, arg: number): T;
1369
+ _limit<T extends Query>(this: T, arg: number): T;
1370
+ offset<T extends Query>(this: T, arg: number): T;
1371
+ _offset<T extends Query>(this: T, arg: number): T;
1372
+ exists<T extends Query>(this: T): SetQueryReturnsValueOptional<T, NumberColumn>;
1373
+ _exists<T extends Query>(this: T): SetQueryReturnsValueOptional<T, NumberColumn>;
1374
+ truncate<T extends Query>(this: T, options?: {
1375
+ restartIdentity?: boolean;
1376
+ cascade?: boolean;
1377
+ }): SetQueryReturnsVoid<T>;
1378
+ _truncate<T extends Query>(this: T, options?: {
1379
+ restartIdentity?: boolean;
1380
+ cascade?: boolean;
1381
+ }): SetQueryReturnsVoid<T>;
1382
+ }
1383
+
1384
+ declare type ColumnParser = (input: unknown) => unknown;
1385
+ declare type ColumnsParsers = Record<string | getValueKey, ColumnParser>;
1386
+ declare type SelectableBase = Record<PropertyKey, {
1387
+ as: string;
1388
+ column: ColumnType;
1389
+ }>;
1390
+ declare type WithDataItem = {
1391
+ table: string;
1392
+ shape: ColumnsShape;
1393
+ };
1394
+ declare type WithDataBase = Record<never, WithDataItem>;
1395
+ declare type QueryBase = {
1396
+ query: QueryData;
1397
+ table?: string;
1398
+ tableAlias?: string;
1399
+ clone(): QueryBase;
1400
+ selectable: SelectableBase;
1401
+ __model: Query;
1402
+ relations: RelationsBase;
1403
+ withData: WithDataBase;
1404
+ };
1405
+ declare type defaultsKey = typeof defaultsKey;
1406
+ declare const defaultsKey: unique symbol;
1407
+ declare type Query = QueryMethods & {
1408
+ queryBuilder: Db;
1409
+ whereQueryBuilder: typeof WhereQueryBuilder;
1410
+ onQueryBuilder: typeof OnQueryBuilder;
1411
+ table?: string;
1412
+ shape: ColumnsShape;
1413
+ schema: Omit<TableSchema<ColumnsShape>, 'primaryKeys' | 'primaryTypes'> & {
1414
+ primaryKeys: any[];
1415
+ primaryTypes: any[];
1416
+ };
1417
+ type: Record<string, unknown>;
1418
+ inputType: Record<string, unknown>;
1419
+ query: QueryData;
1420
+ result: ColumnsShape;
1421
+ hasSelect: boolean;
1422
+ hasWhere: boolean;
1423
+ selectable: SelectableBase;
1424
+ returnType: QueryReturnType;
1425
+ then: ThenResult<unknown>;
1426
+ tableAlias: string | undefined;
1427
+ joinedTables: Record<string, Pick<Query, 'result' | 'tableAlias' | 'table'>>;
1428
+ windows: PropertyKey[];
1429
+ defaultSelectColumns: string[];
1430
+ columnsParsers?: ColumnsParsers;
1431
+ relations: RelationsBase;
1432
+ withData: WithDataBase;
1433
+ [defaultsKey]?: string;
1434
+ };
1435
+ declare type Selectable<T extends QueryBase> = StringKey<keyof T['selectable']>;
1436
+ declare type QueryWithTable = Query & {
1437
+ table: string;
1438
+ };
1439
+ declare type DefaultSelectColumns<S extends ColumnsShape> = {
1440
+ [K in keyof S]: S[K]['isHidden'] extends true ? never : K;
1441
+ }[StringKey<keyof S>][];
1442
+ declare type QueryReturnType = 'all' | 'one' | 'oneOrThrow' | 'rows' | 'pluck' | 'value' | 'valueOrThrow' | 'rowCount' | 'void';
1443
+ declare type JoinedTablesBase = Record<string, Pick<Query, 'result' | 'tableAlias' | 'table'>>;
1444
+ declare type QueryThen<ReturnType extends QueryReturnType, Result extends ColumnsShape> = ReturnType extends 'all' ? ThenResult<ColumnShapeOutput<Result>[]> : ReturnType extends 'one' ? ThenResult<ColumnShapeOutput<Result> | undefined> : ReturnType extends 'oneOrThrow' ? ThenResult<ColumnShapeOutput<Result>> : ReturnType extends 'value' ? Result extends {
1445
+ value: ColumnType;
1446
+ } ? ThenResult<Result['value']['type'] | undefined> : never : ReturnType extends 'valueOrThrow' ? Result extends {
1447
+ value: ColumnType;
1448
+ } ? ThenResult<Result['value']['type']> : never : ReturnType extends 'rows' ? ThenResult<ColumnShapeOutput<Result>[keyof Result][][]> : ReturnType extends 'pluck' ? Result extends {
1449
+ pluck: ColumnType;
1450
+ } ? ThenResult<Result['pluck']['type'][]> : never : ReturnType extends 'rowCount' ? ThenResult<number> : ReturnType extends 'void' ? ThenResult<void> : never;
1451
+ declare type AddQuerySelect<T extends Pick<Query, 'hasSelect' | 'result' | 'then' | 'returnType'>, Result extends ColumnsShape> = T['hasSelect'] extends false ? Omit<T, 'hasSelect' | 'result' | 'then'> & {
1452
+ hasSelect: true;
1453
+ result: Result;
1454
+ then: QueryThen<T['returnType'], Result>;
1455
+ } : Omit<T, 'result' | 'then'> & {
1456
+ result: Spread<[T['result'], Result]>;
1457
+ then: QueryThen<T['returnType'], Spread<[T['result'], Result]>>;
1458
+ };
1459
+ declare type QuerySelectAll<T extends Query> = Omit<T, 'hasSelect' | 'result' | 'then'> & {
1460
+ hasSelect: true;
1461
+ result: T['shape'];
1462
+ then: QueryThen<T['returnType'], T['shape']>;
1463
+ };
1464
+ declare type SetQueryReturns<T extends Query, R extends QueryReturnType> = Omit<T, 'returnType' | 'then'> & {
1465
+ returnType: R;
1466
+ then: QueryThen<R, T['result']>;
1467
+ };
1468
+ declare type SetQueryReturnsAll<T extends Query> = SetQueryReturns<T, 'all'>;
1469
+ declare type SetQueryReturnsOneOptional<T extends Query> = SetQueryReturns<T, 'one'>;
1470
+ declare type SetQueryReturnsOne<T extends Query> = SetQueryReturns<T, 'oneOrThrow'>;
1471
+ declare type SetQueryReturnsRows<T extends Query> = SetQueryReturns<T, 'rows'>;
1472
+ declare type SetQueryReturnsPluck<T extends Query, S extends keyof T['selectable'] | RawExpression, C extends ColumnType = S extends keyof T['selectable'] ? T['selectable'][S]['column'] : S extends RawExpression ? S['__column'] : never> = Omit<T, 'hasSelect' | 'result' | 'returnType' | 'then'> & {
1473
+ hasSelect: true;
1474
+ result: {
1475
+ pluck: C;
1476
+ };
1477
+ returnType: 'pluck';
1478
+ then: ThenResult<C['type'][]>;
1479
+ };
1480
+ declare type SetQueryReturnsValueOptional<T extends Query, Arg extends Exclude<GetArg<T>, RawExpression> | ColumnType, Column extends ColumnType = Arg extends ColumnType ? Arg : Arg extends keyof T['selectable'] ? T['selectable'][Arg]['column'] : Arg extends RelationQueryBase ? Arg['result']['value'] : never> = Omit<T, 'hasSelect' | 'result' | 'returnType' | 'then'> & {
1481
+ hasSelect: true;
1482
+ result: {
1483
+ value: Column;
1484
+ };
1485
+ returnType: 'value';
1486
+ then: ThenResult<Column['type'] | undefined>;
1487
+ };
1488
+ declare type SetQueryReturnsValue<T extends Query, Arg extends Exclude<GetArg<T>, RawExpression> | ColumnType, Column extends ColumnType = Arg extends ColumnType ? Arg : Arg extends keyof T['selectable'] ? T['selectable'][Arg]['column'] : Arg extends RelationQueryBase ? Arg['result']['value'] : never> = Omit<T, 'hasSelect' | 'result' | 'returnType' | 'then'> & {
1489
+ hasSelect: true;
1490
+ result: {
1491
+ value: Column;
1492
+ };
1493
+ returnType: 'valueOrThrow';
1494
+ then: ThenResult<Column['type']>;
1495
+ };
1496
+ declare type SetQueryReturnsRowCount<T extends Query> = SetQueryReturns<T, 'rowCount'>;
1497
+ declare type SetQueryReturnsVoid<T extends Query> = SetQueryReturns<T, 'void'>;
1498
+ declare type SetQueryReturnsColumnInfo<T extends Query, Column extends keyof T['shape'] | undefined, Result = Column extends keyof T['shape'] ? ColumnInfo : Record<keyof T['shape'], ColumnInfo>> = Omit<T, 'result' | 'returnType' | 'then'> & {
1499
+ result: {
1500
+ value: ColumnType<Result>;
1501
+ };
1502
+ returnType: 'value';
1503
+ then: ThenResult<Result>;
1504
+ };
1505
+ declare type SetQueryTableAlias<T extends Query, TableAlias extends string> = Omit<T, 'tableAlias' | 'selectable'> & {
1506
+ tableAlias: TableAlias;
1507
+ selectable: Omit<T['selectable'], `${AliasOrTable<T>}.${StringKey<keyof T['shape']>}`> & {
1508
+ [K in keyof T['shape'] as `${TableAlias}.${StringKey<keyof T['shape']>}`]: {
1509
+ as: K;
1510
+ column: T['shape'][K];
1511
+ };
1512
+ };
1513
+ };
1514
+ declare type SetQueryJoinedTables<T extends Query, Selectable extends Record<string, {
1515
+ as: string;
1516
+ column: ColumnType;
1517
+ }>, JoinedTables extends JoinedTablesBase> = Omit<T, 'selectable' | 'joinedTables'> & {
1518
+ selectable: Selectable;
1519
+ joinedTables: JoinedTables;
1520
+ };
1521
+ declare type AddQueryJoinedTable<T extends Query, J extends Pick<Query, 'result' | 'tableAlias' | 'table'>> = SetQueryJoinedTables<T, T['selectable'] & {
1522
+ [K in keyof J['result'] as `${AliasOrTable<J>}.${StringKey<K>}`]: {
1523
+ as: K;
1524
+ column: J['result'][K];
1525
+ };
1526
+ }, string extends keyof T['joinedTables'] ? Record<AliasOrTable<J>, J> : Spread<[T['joinedTables'], Record<AliasOrTable<J>, J>]>>;
1527
+ declare type SetQueryWith<T extends Query, WithData extends Record<string, WithDataItem>> = Omit<T, 'withData'> & {
1528
+ withData: WithData;
1529
+ };
1530
+ declare type AddQueryWith<T extends Query, With extends WithDataItem> = SetQueryWith<T, Spread<[T['withData'], {
1531
+ [K in With['table']]: With;
1532
+ }]>>;
1533
+ declare type SetQueryWindows<T extends Query, W extends PropertyKey[]> = Omit<T, 'windows'> & {
1534
+ windows: W;
1535
+ };
1536
+
1537
+ declare type Fn<T> = (key: string, value: T, values: unknown[]) => string;
1538
+ declare type Operator<T> = Fn<T> & {
1539
+ type: T;
1540
+ };
1541
+ declare const createOperator: <T>(fn: Fn<T>) => Fn<T> & {
1542
+ type: T;
1543
+ };
1544
+ declare type Operators = Record<string, Operator<any>>;
1545
+ declare const Operators: {
1546
+ any: {
1547
+ equals: Fn<any> & {
1548
+ type: any;
1549
+ };
1550
+ not: Fn<any> & {
1551
+ type: any;
1552
+ };
1553
+ in: Fn<any[] | Query | RawExpression<ColumnType<unknown, Operators, unknown>>> & {
1554
+ type: any[] | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
1555
+ };
1556
+ notIn: Fn<any[] | Query | RawExpression<ColumnType<unknown, Operators, unknown>>> & {
1557
+ type: any[] | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
1558
+ };
1559
+ };
1560
+ boolean: {
1561
+ equals: Fn<boolean | Query | RawExpression<ColumnType<unknown, Operators, unknown>>> & {
1562
+ type: boolean | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
1563
+ };
1564
+ not: Fn<boolean | Query | RawExpression<ColumnType<unknown, Operators, unknown>>> & {
1565
+ type: boolean | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
1566
+ };
1567
+ in: Fn<Query | RawExpression<ColumnType<unknown, Operators, unknown>> | boolean[]> & {
1568
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | boolean[];
1569
+ };
1570
+ notIn: Fn<Query | RawExpression<ColumnType<unknown, Operators, unknown>> | boolean[]> & {
1571
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | boolean[];
1572
+ };
1573
+ };
1574
+ number: {
1575
+ lt: Fn<number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>> & {
1576
+ type: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
1577
+ };
1578
+ lte: Fn<number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>> & {
1579
+ type: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
1580
+ };
1581
+ gt: Fn<number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>> & {
1582
+ type: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
1583
+ };
1584
+ gte: Fn<number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>> & {
1585
+ type: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
1586
+ };
1587
+ between: Fn<[number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>]> & {
1588
+ type: [number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>];
1589
+ };
1590
+ equals: Fn<number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>> & {
1591
+ type: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
1592
+ };
1593
+ not: Fn<number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>> & {
1594
+ type: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
1595
+ };
1596
+ in: Fn<Query | RawExpression<ColumnType<unknown, Operators, unknown>> | number[]> & {
1597
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | number[];
1598
+ };
1599
+ notIn: Fn<Query | RawExpression<ColumnType<unknown, Operators, unknown>> | number[]> & {
1600
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | number[];
1601
+ };
1602
+ };
1603
+ date: {
1604
+ lt: Fn<Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date> & {
1605
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date;
1606
+ };
1607
+ lte: Fn<Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date> & {
1608
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date;
1609
+ };
1610
+ gt: Fn<Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date> & {
1611
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date;
1612
+ };
1613
+ gte: Fn<Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date> & {
1614
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date;
1615
+ };
1616
+ between: Fn<[Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date, Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date]> & {
1617
+ type: [Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date, Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date];
1618
+ };
1619
+ equals: Fn<Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date> & {
1620
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date;
1621
+ };
1622
+ not: Fn<Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date> & {
1623
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date;
1624
+ };
1625
+ in: Fn<Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date[]> & {
1626
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date[];
1627
+ };
1628
+ notIn: Fn<Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date[]> & {
1629
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date[];
1630
+ };
1631
+ };
1632
+ time: {
1633
+ lt: Fn<Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date> & {
1634
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date;
1635
+ };
1636
+ lte: Fn<Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date> & {
1637
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date;
1638
+ };
1639
+ gt: Fn<Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date> & {
1640
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date;
1641
+ };
1642
+ gte: Fn<Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date> & {
1643
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date;
1644
+ };
1645
+ between: Fn<[Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date, Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date]> & {
1646
+ type: [Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date, Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date];
1647
+ };
1648
+ equals: Fn<Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date> & {
1649
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date;
1650
+ };
1651
+ not: Fn<Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date> & {
1652
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date;
1653
+ };
1654
+ in: Fn<Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date[]> & {
1655
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date[];
1656
+ };
1657
+ notIn: Fn<Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date[]> & {
1658
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date[];
1659
+ };
1660
+ };
1661
+ text: {
1662
+ contains: Fn<string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>> & {
1663
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
1664
+ };
1665
+ containsInsensitive: Fn<string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>> & {
1666
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
1667
+ };
1668
+ startsWith: Fn<string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>> & {
1669
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
1670
+ };
1671
+ startsWithInsensitive: Fn<string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>> & {
1672
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
1673
+ };
1674
+ endsWith: Fn<string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>> & {
1675
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
1676
+ };
1677
+ endsWithInsensitive: Fn<string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>> & {
1678
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
1679
+ };
1680
+ equals: Fn<string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>> & {
1681
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
1682
+ };
1683
+ not: Fn<string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>> & {
1684
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
1685
+ };
1686
+ in: Fn<Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[]> & {
1687
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
1688
+ };
1689
+ notIn: Fn<Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[]> & {
1690
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
1691
+ };
1692
+ };
1693
+ json: {
1694
+ jsonPath: Fn<[path: string, op: string, value: unknown]> & {
1695
+ type: [path: string, op: string, value: unknown];
1696
+ };
1697
+ jsonSupersetOf: Fn<unknown> & {
1698
+ type: unknown;
1699
+ };
1700
+ jsonSubsetOf: Fn<unknown> & {
1701
+ type: unknown;
1702
+ };
1703
+ equals: Fn<unknown> & {
1704
+ type: unknown;
1705
+ };
1706
+ not: Fn<unknown> & {
1707
+ type: unknown;
1708
+ };
1709
+ in: Fn<Query | unknown[] | RawExpression<ColumnType<unknown, Operators, unknown>>> & {
1710
+ type: Query | unknown[] | RawExpression<ColumnType<unknown, Operators, unknown>>;
1711
+ };
1712
+ notIn: Fn<Query | unknown[] | RawExpression<ColumnType<unknown, Operators, unknown>>> & {
1713
+ type: Query | unknown[] | RawExpression<ColumnType<unknown, Operators, unknown>>;
1714
+ };
1715
+ };
1716
+ array: {
1717
+ equals: Fn<any> & {
1718
+ type: any;
1719
+ };
1720
+ not: Fn<any> & {
1721
+ type: any;
1722
+ };
1723
+ in: Fn<any[] | Query | RawExpression<ColumnType<unknown, Operators, unknown>>> & {
1724
+ type: any[] | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
1725
+ };
1726
+ notIn: Fn<any[] | Query | RawExpression<ColumnType<unknown, Operators, unknown>>> & {
1727
+ type: any[] | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
1728
+ };
1729
+ };
1730
+ };
1731
+
1732
+ declare type JSONOptional<T extends JSONTypeAny> = Omit<T, 'type' | 'data'> & {
1733
+ type: T['type'] | undefined;
1734
+ data: T['data'] & {
1735
+ optional: true;
1736
+ };
1737
+ };
1738
+ declare type JSONRequired<T extends JSONTypeAny> = Omit<T, 'type' | 'data'> & {
1739
+ type: Exclude<T['type'], undefined>;
1740
+ data: Omit<T['data'], 'optional'>;
1741
+ };
1742
+
1743
+ declare type JSONNullable<T extends JSONTypeAny> = Omit<T, 'type' | 'data'> & {
1744
+ type: T['type'] | null;
1745
+ data: T['data'] & {
1746
+ nullable: true;
1747
+ };
1748
+ };
1749
+ declare type JSONNotNullable<T extends JSONTypeAny> = Omit<T, 'type' | 'data'> & {
1750
+ type: Exclude<T['type'], null>;
1751
+ data: Omit<T['data'], 'nullable'>;
1752
+ };
1753
+
1754
+ declare type JSONNullish<T extends JSONTypeAny> = Omit<T, 'type' | 'data'> & {
1755
+ type: T['type'] | undefined | null;
1756
+ data: T['data'] & {
1757
+ nullable: true;
1758
+ optional: true;
1759
+ };
1760
+ };
1761
+ declare type JSONNotNullish<T extends JSONTypeAny> = Omit<T, 'type' | 'data'> & {
1762
+ type: Exclude<T['type'], undefined | null>;
1763
+ data: Omit<T['data'], 'nullable'>;
1764
+ };
1765
+
1766
+ declare type JSONIntersection<Left extends JSONTypeAny, Right extends JSONTypeAny> = JSONType<Left['type'] & Right['type'], 'intersection'> & {
1767
+ left: Left;
1768
+ right: Right;
1769
+ };
1770
+
1771
+ declare function min<T extends {
1772
+ data: {
1773
+ min?: number;
1774
+ };
1775
+ }, Value extends number>(this: T, value: Value): Omit<T, "data"> & {
1776
+ data: Omit<T["data"], "min"> & {
1777
+ min: Value;
1778
+ };
1779
+ };
1780
+ declare function max<T extends {
1781
+ data: {
1782
+ max?: number;
1783
+ };
1784
+ }, Value extends number>(this: T, value: Value): Omit<T, "data"> & {
1785
+ data: Omit<T["data"], "max"> & {
1786
+ max: Value;
1787
+ };
1788
+ };
1789
+ declare function length<T extends {
1790
+ data: {
1791
+ length?: number;
1792
+ };
1793
+ }, Value extends number>(this: T, value: Value): Omit<T, "data"> & {
1794
+ data: Omit<T["data"], "length"> & {
1795
+ length: Value;
1796
+ };
1797
+ };
1798
+ declare function size<T extends {
1799
+ data: {
1800
+ size?: number;
1801
+ };
1802
+ }, Value extends number>(this: T, value: Value): Omit<T, "data"> & {
1803
+ data: Omit<T["data"], "size"> & {
1804
+ size: Value;
1805
+ };
1806
+ };
1807
+ declare function nonempty<T extends {
1808
+ data: {
1809
+ min?: number;
1810
+ };
1811
+ }>(this: T): Omit<T, "data"> & {
1812
+ data: Omit<T["data"], "min"> & {
1813
+ min: number;
1814
+ };
1815
+ };
1816
+ declare type ArrayMethods$1 = typeof arrayMethods;
1817
+ declare const arrayMethods: {
1818
+ min: typeof min;
1819
+ max: typeof max;
1820
+ length: typeof length;
1821
+ nonempty: typeof nonempty;
1822
+ };
1823
+ declare type SetMethods = typeof setMethods;
1824
+ declare const setMethods: {
1825
+ min: typeof min;
1826
+ max: typeof max;
1827
+ size: typeof size;
1828
+ nonempty: typeof nonempty;
1829
+ };
1830
+ declare const numberTypeMethods: {
1831
+ lt<T extends {
1832
+ data: {
1833
+ lt?: number;
1834
+ };
1835
+ }, Value extends number>(this: T, value: Value): Omit<T, "data"> & {
1836
+ data: Omit<T["data"], "lt"> & {
1837
+ lt: Value;
1838
+ };
1839
+ };
1840
+ lte<T_1 extends {
1841
+ data: {
1842
+ lte?: number;
1843
+ };
1844
+ }, Value_1 extends number>(this: T_1, value: Value_1): Omit<T_1, "data"> & {
1845
+ data: Omit<T_1["data"], "lte"> & {
1846
+ lte: Value_1;
1847
+ };
1848
+ };
1849
+ max<T_2 extends {
1850
+ data: {
1851
+ lte?: number;
1852
+ };
1853
+ }, Value_2 extends number>(this: T_2, value: Value_2): Omit<T_2, "data"> & {
1854
+ data: Omit<T_2["data"], "lte"> & {
1855
+ lte: Value_2;
1856
+ };
1857
+ };
1858
+ gt<T_3 extends {
1859
+ data: {
1860
+ gt?: number;
1861
+ };
1862
+ }, Value_3 extends number>(this: T_3, value: Value_3): Omit<T_3, "data"> & {
1863
+ data: Omit<T_3["data"], "gt"> & {
1864
+ gt: Value_3;
1865
+ };
1866
+ };
1867
+ gte<T_4 extends {
1868
+ data: {
1869
+ gte?: number;
1870
+ };
1871
+ }, Value_4 extends number>(this: T_4, value: Value_4): Omit<T_4, "data"> & {
1872
+ data: Omit<T_4["data"], "gte"> & {
1873
+ gte: Value_4;
1874
+ };
1875
+ };
1876
+ min<T_5 extends {
1877
+ data: {
1878
+ gte?: number;
1879
+ };
1880
+ }, Value_5 extends number>(this: T_5, value: Value_5): Omit<T_5, "data"> & {
1881
+ data: Omit<T_5["data"], "gte"> & {
1882
+ gte: Value_5;
1883
+ };
1884
+ };
1885
+ positive<T_6 extends {
1886
+ data: {
1887
+ gt?: number;
1888
+ };
1889
+ }>(this: T_6): Omit<T_6, "data"> & {
1890
+ data: Omit<T_6["data"], "gt"> & {
1891
+ gt: number;
1892
+ };
1893
+ };
1894
+ nonNegative<T_7 extends {
1895
+ data: {
1896
+ gte?: number;
1897
+ };
1898
+ }>(this: T_7): Omit<T_7, "data"> & {
1899
+ data: Omit<T_7["data"], "gte"> & {
1900
+ gte: number;
1901
+ };
1902
+ };
1903
+ negative<T_8 extends {
1904
+ data: {
1905
+ lt?: number;
1906
+ };
1907
+ }>(this: T_8): Omit<T_8, "data"> & {
1908
+ data: Omit<T_8["data"], "lt"> & {
1909
+ lt: number;
1910
+ };
1911
+ };
1912
+ nonPositive<T_9 extends {
1913
+ data: {
1914
+ lte?: number;
1915
+ };
1916
+ }>(this: T_9): Omit<T_9, "data"> & {
1917
+ data: Omit<T_9["data"], "lte"> & {
1918
+ lte: number;
1919
+ };
1920
+ };
1921
+ multipleOf<T_10 extends {
1922
+ data: {
1923
+ multipleOf?: number;
1924
+ };
1925
+ }, Value_6 extends number>(this: T_10, value: Value_6): Omit<T_10, "data"> & {
1926
+ data: Omit<T_10["data"], "multipleOf"> & {
1927
+ multipleOf: any;
1928
+ };
1929
+ };
1930
+ step<T_11 extends {
1931
+ data: {
1932
+ multipleOf?: number;
1933
+ };
1934
+ }, Value_7 extends number>(this: T_11, value: Value_7): Omit<T_11, "data"> & {
1935
+ data: Omit<T_11["data"], "multipleOf"> & {
1936
+ multipleOf: any;
1937
+ };
1938
+ };
1939
+ int<T_12 extends {
1940
+ data: {
1941
+ int?: boolean;
1942
+ };
1943
+ }>(this: T_12): Omit<T_12, "data"> & {
1944
+ data: Omit<T_12["data"], "int"> & {
1945
+ int: boolean;
1946
+ };
1947
+ };
1948
+ };
1949
+ declare const dateTypeMethods: {
1950
+ min<T extends {
1951
+ data: {
1952
+ min?: Date;
1953
+ };
1954
+ }, Value extends Date>(this: T, value: Value): Omit<T, "data"> & {
1955
+ data: Omit<T["data"], "min"> & {
1956
+ min: any;
1957
+ };
1958
+ };
1959
+ max<T_1 extends {
1960
+ data: {
1961
+ max?: Date;
1962
+ };
1963
+ }, Value_1 extends Date>(this: T_1, value: Value_1): Omit<T_1, "data"> & {
1964
+ data: Omit<T_1["data"], "max"> & {
1965
+ max: any;
1966
+ };
1967
+ };
1968
+ };
1969
+
1970
+ declare type ArrayCardinality = 'many' | 'atLeastOne';
1971
+ declare type arrayOutputType<T extends JSONTypeAny, Cardinality extends ArrayCardinality = 'many'> = Cardinality extends 'atLeastOne' ? [T['type'], ...T['type'][]] : T['type'][];
1972
+ interface JSONArray<Type extends JSONTypeAny, Cardinality extends ArrayCardinality = 'many'> extends JSONType<arrayOutputType<Type, Cardinality>, 'array'>, ArrayMethods$1 {
1973
+ data: JSONTypeData & {
1974
+ min?: number;
1975
+ max?: number;
1976
+ length?: number;
1977
+ };
1978
+ element: Type;
1979
+ deepPartial(): JSONArray<DeepPartial<Type>, Cardinality>;
1980
+ nonEmpty(this: JSONArray<Type>): JSONArray<Type, 'atLeastOne'> & {
1981
+ data: {
1982
+ min: 1;
1983
+ };
1984
+ };
1985
+ }
1986
+
1987
+ declare type JSONTypeAny = JSONType<any, string>;
1988
+ declare type DeepPartial<T extends JSONTypeAny> = ReturnType<JSONTypeAny['deepPartial']> extends ReturnType<T['deepPartial']> ? T : ReturnType<T['deepPartial']>;
1989
+ declare type JSONTypeData = ColumnData & {
1990
+ optional?: true;
1991
+ nullable?: true;
1992
+ };
1993
+ declare type Primitive = string | number | bigint | boolean | null | undefined;
1994
+ declare type JSONType<Type, DataType extends string = string> = {
1995
+ type: Type;
1996
+ data: JSONTypeData;
1997
+ dataType: DataType;
1998
+ chain: (['transform', (input: unknown, ctx: ValidationContext) => unknown] | ['to', (input: unknown) => JSONTypeAny | undefined, JSONTypeAny] | ['refine', (input: unknown) => unknown] | ['superRefine', (input: unknown, ctx: ValidationContext) => unknown])[];
1999
+ optional<T extends JSONTypeAny>(this: T): JSONOptional<T>;
2000
+ required<T extends JSONTypeAny>(this: T): JSONRequired<T>;
2001
+ nullable<T extends JSONTypeAny>(this: T): JSONNullable<T>;
2002
+ notNullable<T extends JSONTypeAny>(this: T): JSONNotNullable<T>;
2003
+ nullish<T extends JSONTypeAny>(this: T): JSONNullish<T>;
2004
+ notNullish<T extends JSONTypeAny>(this: T): JSONNotNullish<T>;
2005
+ deepPartial(): JSONTypeAny;
2006
+ transform<T extends JSONTypeAny, Transformed>(this: T, fn: (input: T['type'], ctx: ValidationContext) => Transformed): JSONType<Transformed extends PromiseLike<unknown> ? Awaited<Transformed> : Transformed, T['dataType']>;
2007
+ to<T extends JSONTypeAny, ToType extends JSONTypeAny>(this: T, fn: (input: T['type']) => ToType['type'] | undefined, type: ToType): ToType;
2008
+ refine<T extends JSONTypeAny, RefinedOutput extends T['type']>(this: T, check: (arg: T['type']) => unknown): T & {
2009
+ type: RefinedOutput;
2010
+ };
2011
+ superRefine<T extends JSONTypeAny, RefinedOutput extends T['type']>(this: T, check: (arg: T['type'], ctx: ValidationContext) => unknown): T & {
2012
+ type: RefinedOutput;
2013
+ };
2014
+ and<A extends JSONTypeAny, B extends JSONTypeAny>(this: A, type: B): JSONIntersection<A, B>;
2015
+ or<T extends JSONTypeAny, U extends [JSONTypeAny, ...JSONTypeAny[]]>(this: T, ...types: U): T | U[number];
2016
+ default<T extends JSONTypeAny>(this: T, value: T['type'] | (() => T['type'])): JSONNotNullish<T>;
2017
+ array<T extends JSONTypeAny>(this: T): JSONArray<T>;
2018
+ };
2019
+
2020
+ declare type ColumnsShape = Record<string, ColumnType>;
2021
+ declare type ColumnShapeOutput<Shape extends ColumnsShape> = {
2022
+ [K in keyof Shape]: ColumnOutput<Shape[K]>;
2023
+ };
2024
+ declare type ColumnShapeInput<Shape extends ColumnsShape> = {
2025
+ [K in keyof Shape]: ColumnInput<Shape[K]>;
2026
+ };
2027
+ declare class ColumnsObject<Shape extends ColumnsShape> extends ColumnType<{
2028
+ [K in keyof Shape]: Shape[K]['type'];
2029
+ }, typeof Operators.any> {
2030
+ shape: Shape;
2031
+ dataType: string;
2032
+ operators: {
2033
+ equals: ((key: string, value: any, values: unknown[]) => string) & {
2034
+ type: any;
2035
+ };
2036
+ not: ((key: string, value: any, values: unknown[]) => string) & {
2037
+ type: any;
2038
+ };
2039
+ in: ((key: string, value: any[] | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2040
+ type: any[] | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2041
+ };
2042
+ notIn: ((key: string, value: any[] | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2043
+ type: any[] | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2044
+ };
2045
+ };
2046
+ constructor(shape: Shape);
2047
+ }
2048
+ declare class ArrayOfColumnsObjects<Shape extends ColumnsShape> extends ColumnType<{
2049
+ [K in keyof Shape]: Shape[K]['type'];
2050
+ }[], typeof Operators.any> {
2051
+ shape: Shape;
2052
+ dataType: string;
2053
+ operators: {
2054
+ equals: ((key: string, value: any, values: unknown[]) => string) & {
2055
+ type: any;
2056
+ };
2057
+ not: ((key: string, value: any, values: unknown[]) => string) & {
2058
+ type: any;
2059
+ };
2060
+ in: ((key: string, value: any[] | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2061
+ type: any[] | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2062
+ };
2063
+ notIn: ((key: string, value: any[] | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2064
+ type: any[] | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2065
+ };
2066
+ };
2067
+ constructor(shape: Shape);
2068
+ }
2069
+ declare type UnionKeyofToOvlds<S, U> = UnionToIntersection<U extends keyof S ? (f: U) => void : never>;
2070
+ declare type PopKeyofColumnShapeUnion<S extends ColumnsShape, U extends keyof S> = UnionKeyofToOvlds<S, U> extends (a: infer A extends keyof S) => void ? A : never;
2071
+ declare type IsUnion<T> = [T] extends [UnionToIntersection<T>] ? false : true;
2072
+ declare type UnionToArray<S extends ColumnsShape, T extends keyof S, A extends [...(keyof S)[]] = []> = IsUnion<T> extends true ? UnionToArray<S, Exclude<T, PopKeyofColumnShapeUnion<S, T>>, [
2073
+ PopKeyofColumnShapeUnion<S, T>,
2074
+ ...A
2075
+ ]> : [T, ...A];
2076
+ declare type GetPrimaryKeys<S extends ColumnsShape> = UnionToArray<S, {
2077
+ [K in keyof S]: S[K] extends {
2078
+ isPrimaryKey: true;
2079
+ } ? K : never;
2080
+ }[keyof S]>;
2081
+ declare type GetPrimaryTypes<S extends ColumnsShape, Keys extends [...(keyof S | string)[]] = GetPrimaryKeys<S>> = GetTypesFromKeys<S, Keys>;
2082
+ declare type GetTypesFromKeys<S extends ColumnsShape, T extends [...(keyof S)[]]> = T extends [
2083
+ infer Head extends keyof S,
2084
+ ...infer Tail extends [...(keyof S)[]]
2085
+ ] ? [GetTypeFromKey<S, Head>, ...GetTypesFromKeys<S, Tail>] : [];
2086
+ declare type GetTypeFromKey<S extends ColumnsShape, T extends keyof S> = S[T]['type'];
2087
+ declare class TableSchema<Shape extends ColumnsShape> {
2088
+ shape: Shape;
2089
+ primaryKeys: string extends keyof Shape ? string[] : GetPrimaryKeys<Shape>;
2090
+ primaryTypes: GetPrimaryTypes<Shape>;
2091
+ constructor(shape: Shape);
2092
+ }
2093
+
2094
+ declare type ColumnOutput<T extends ColumnType> = T['type'];
2095
+ declare type ColumnInput<T extends ColumnType> = T['inputType'];
2096
+ declare type NullableColumn<T extends ColumnType> = Omit<T, 'type' | 'inputType' | 'operators'> & {
2097
+ type: T['type'] | null;
2098
+ inputType: T['inputType'] | null;
2099
+ isNullable: true;
2100
+ operators: Omit<T['operators'], 'equals' | 'not'> & {
2101
+ equals: Operator<T['type'] | null>;
2102
+ not: Operator<T['type'] | null>;
2103
+ };
2104
+ };
2105
+ declare type AnyColumnType = ColumnType<any, Record<string, Operator<any>>>;
2106
+ declare type AnyColumnTypeCreator = (...args: any[]) => AnyColumnType | {};
2107
+ declare type ColumnTypesBase = Record<string, AnyColumnTypeCreator>;
2108
+ declare type ValidationContext = any;
2109
+ declare type ColumnData = {
2110
+ default?: unknown;
2111
+ validationDefault?: unknown;
2112
+ index?: Omit<SingleColumnIndexOptions, 'column'>;
2113
+ comment?: string;
2114
+ collate?: string;
2115
+ compression?: string;
2116
+ foreignKey?: ForeignKey<string, string[]>;
2117
+ };
2118
+ declare type ForeignKeyMatch = 'FULL' | 'PARTIAL' | 'SIMPLE';
2119
+ declare type ForeignKeyAction = 'NO ACTION' | 'RESTRICT' | 'CASCADE' | 'SET NULL' | 'SET DEFAULT';
2120
+ declare type ForeignKey<Table extends string, Columns extends string[]> = ({
2121
+ fn(): new () => {
2122
+ table: Table;
2123
+ };
2124
+ } | {
2125
+ table: Table;
2126
+ }) & {
2127
+ columns: Columns;
2128
+ } & ForeignKeyOptions;
2129
+ declare type DropMode = 'CASCADE' | 'RESTRICT';
2130
+ declare type ForeignKeyOptions = {
2131
+ name?: string;
2132
+ match?: ForeignKeyMatch;
2133
+ onUpdate?: ForeignKeyAction;
2134
+ onDelete?: ForeignKeyAction;
2135
+ dropMode?: DropMode;
2136
+ };
2137
+ declare type IndexColumnOptions = {
2138
+ column: string;
2139
+ expression?: number | string;
2140
+ collate?: string;
2141
+ operator?: string;
2142
+ order?: string;
2143
+ };
2144
+ declare type IndexOptions = {
2145
+ name?: string;
2146
+ unique?: boolean;
2147
+ using?: string;
2148
+ include?: MaybeArray<string>;
2149
+ with?: string;
2150
+ tablespace?: string;
2151
+ where?: string;
2152
+ dropMode?: 'CASCADE' | 'RESTRICT';
2153
+ };
2154
+ declare type SingleColumnIndexOptions = IndexColumnOptions & IndexOptions;
2155
+ declare type ForeignKeyModel = new () => {
2156
+ table: string;
2157
+ };
2158
+ declare type ForeignKeyModelWithColumns = new () => {
2159
+ table: string;
2160
+ columns: {
2161
+ shape: ColumnsShape;
2162
+ };
2163
+ };
2164
+ declare type ColumnNameOfModel<Model extends ForeignKeyModelWithColumns> = StringKey<keyof InstanceType<Model>['columns']['shape']>;
2165
+ declare abstract class ColumnType<Type = unknown, Ops extends Operators = Operators, InputType = Type> {
2166
+ abstract dataType: string;
2167
+ abstract operators: Ops;
2168
+ type: Type;
2169
+ inputType: InputType;
2170
+ data: ColumnData;
2171
+ isPrimaryKey: boolean;
2172
+ isHidden: boolean;
2173
+ isNullable: boolean;
2174
+ encodeFn?: (input: any) => unknown;
2175
+ parseFn?: (input: unknown) => unknown;
2176
+ parseItem?: (input: string) => unknown;
2177
+ chain: (["transform", (input: unknown, ctx: ValidationContext) => unknown] | ["to", (input: unknown) => JSONTypeAny | undefined, JSONTypeAny] | ["refine", (input: unknown) => unknown] | ["superRefine", (input: unknown, ctx: ValidationContext) => unknown])[];
2178
+ primaryKey<T extends ColumnType>(this: T): T & {
2179
+ isPrimaryKey: true;
2180
+ };
2181
+ foreignKey<T extends ColumnType, Model extends ForeignKeyModelWithColumns, Column extends ColumnNameOfModel<Model>>(this: T, fn: () => Model, column: Column, options?: ForeignKeyOptions): Omit<T, 'foreignKeyData'> & {
2182
+ foreignKeyData: ForeignKey<InstanceType<Model>['table'], [Column]>;
2183
+ };
2184
+ foreignKey<T extends ColumnType, Table extends string, Column extends string>(this: T, table: Table, column: Column, options?: ForeignKeyOptions): Omit<T, 'foreignKeyData'> & {
2185
+ foreignKeyData: ForeignKey<Table, [Column]>;
2186
+ };
2187
+ hidden<T extends ColumnType>(this: T): T & {
2188
+ isHidden: true;
2189
+ };
2190
+ nullable<T extends ColumnType>(this: T): NullableColumn<T>;
2191
+ encode<T extends ColumnType, Input>(this: T, fn: (input: Input) => unknown): Omit<T, 'inputType'> & {
2192
+ inputType: Input;
2193
+ };
2194
+ parse<T extends ColumnType, Output>(this: T, fn: (input: T['type']) => Output): Omit<T, 'type'> & {
2195
+ type: Output;
2196
+ };
2197
+ toSQL(): string;
2198
+ default<T extends ColumnType>(this: T, value: T['type'] | RawExpression): T;
2199
+ index<T extends ColumnType>(this: T, options?: Omit<SingleColumnIndexOptions, 'column'>): any;
2200
+ unique<T extends ColumnType>(this: T, options?: Omit<SingleColumnIndexOptions, 'column' | 'unique'>): T;
2201
+ comment<T extends ColumnType>(this: T, comment: string): T;
2202
+ validationDefault<T extends ColumnType>(this: T, value: T['type']): T;
2203
+ compression<T extends ColumnType>(this: T, compression: string): T;
2204
+ collate<T extends ColumnType>(this: T, collate: string): T;
2205
+ transform<T extends ColumnType, Transformed>(this: T, fn: (input: T['type'], ctx: ValidationContext) => Transformed): Omit<T, 'type'> & {
2206
+ type: Transformed;
2207
+ };
2208
+ to<T extends ColumnType, ToType extends ColumnType>(this: T, fn: (input: T['type']) => ToType['type'] | undefined, type: ToType): ToType;
2209
+ refine<T extends ColumnType, RefinedOutput extends T['type']>(this: T, check: (arg: T['type']) => unknown): T & {
2210
+ type: RefinedOutput;
2211
+ };
2212
+ superRefine<T extends ColumnType, RefinedOutput extends T['type']>(this: T, check: (arg: T['type'], ctx: ValidationContext) => unknown): T & {
2213
+ type: RefinedOutput;
2214
+ };
2215
+ }
2216
+
2217
+ declare type BaseNumberData = ColumnData & {
2218
+ lt?: number;
2219
+ lte?: number;
2220
+ gt?: number;
2221
+ gte?: number;
2222
+ multipleOf?: number;
2223
+ int?: boolean;
2224
+ };
2225
+ declare type NumberColumn = ColumnType<number>;
2226
+ declare type NumberColumnData = BaseNumberData;
2227
+ declare type NumberMethods = typeof numberTypeMethods;
2228
+ interface NumberBaseColumn extends ColumnType<number, typeof Operators.number>, NumberMethods {
2229
+ }
2230
+ declare abstract class NumberBaseColumn extends ColumnType<number, typeof Operators.number> {
2231
+ data: BaseNumberData;
2232
+ operators: {
2233
+ lt: ((key: string, value: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2234
+ type: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2235
+ };
2236
+ lte: ((key: string, value: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2237
+ type: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2238
+ };
2239
+ gt: ((key: string, value: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2240
+ type: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2241
+ };
2242
+ gte: ((key: string, value: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2243
+ type: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2244
+ };
2245
+ between: ((key: string, value: [number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>], values: unknown[]) => string) & {
2246
+ type: [number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>];
2247
+ };
2248
+ equals: ((key: string, value: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2249
+ type: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2250
+ };
2251
+ not: ((key: string, value: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2252
+ type: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2253
+ };
2254
+ in: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | number[], values: unknown[]) => string) & {
2255
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | number[];
2256
+ };
2257
+ notIn: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | number[], values: unknown[]) => string) & {
2258
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | number[];
2259
+ };
2260
+ };
2261
+ }
2262
+ declare abstract class IntegerBaseColumn extends NumberBaseColumn {
2263
+ data: BaseNumberData;
2264
+ }
2265
+ declare abstract class NumberAsStringBaseColumn extends ColumnType<string, typeof Operators.number> {
2266
+ data: {};
2267
+ operators: {
2268
+ lt: ((key: string, value: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2269
+ type: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2270
+ };
2271
+ lte: ((key: string, value: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2272
+ type: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2273
+ };
2274
+ gt: ((key: string, value: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2275
+ type: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2276
+ };
2277
+ gte: ((key: string, value: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2278
+ type: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2279
+ };
2280
+ between: ((key: string, value: [number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>], values: unknown[]) => string) & {
2281
+ type: [number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>];
2282
+ };
2283
+ equals: ((key: string, value: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2284
+ type: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2285
+ };
2286
+ not: ((key: string, value: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2287
+ type: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2288
+ };
2289
+ in: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | number[], values: unknown[]) => string) & {
2290
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | number[];
2291
+ };
2292
+ notIn: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | number[], values: unknown[]) => string) & {
2293
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | number[];
2294
+ };
2295
+ };
2296
+ }
2297
+ declare type DecimalColumnData = ColumnData & {
2298
+ precision?: number;
2299
+ scale?: number;
2300
+ };
2301
+ declare class DecimalBaseColumn<Precision extends number | undefined = undefined, Scale extends number | undefined = undefined> extends ColumnType<string, typeof Operators.number> {
2302
+ data: DecimalColumnData & {
2303
+ precision: Precision;
2304
+ scale: Scale;
2305
+ };
2306
+ operators: {
2307
+ lt: ((key: string, value: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2308
+ type: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2309
+ };
2310
+ lte: ((key: string, value: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2311
+ type: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2312
+ };
2313
+ gt: ((key: string, value: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2314
+ type: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2315
+ };
2316
+ gte: ((key: string, value: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2317
+ type: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2318
+ };
2319
+ between: ((key: string, value: [number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>], values: unknown[]) => string) & {
2320
+ type: [number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>];
2321
+ };
2322
+ equals: ((key: string, value: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2323
+ type: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2324
+ };
2325
+ not: ((key: string, value: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2326
+ type: number | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2327
+ };
2328
+ in: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | number[], values: unknown[]) => string) & {
2329
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | number[];
2330
+ };
2331
+ notIn: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | number[], values: unknown[]) => string) & {
2332
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | number[];
2333
+ };
2334
+ };
2335
+ dataType: "decimal";
2336
+ constructor(precision?: Precision, scale?: Scale);
2337
+ toSQL(): string;
2338
+ }
2339
+ declare class SmallIntColumn extends IntegerBaseColumn {
2340
+ dataType: "smallint";
2341
+ parseItem: typeof parseInt;
2342
+ }
2343
+ declare class IntegerColumn extends IntegerBaseColumn {
2344
+ dataType: "integer";
2345
+ parseItem: typeof parseInt;
2346
+ }
2347
+ declare class BigIntColumn extends NumberAsStringBaseColumn {
2348
+ dataType: "bigint";
2349
+ }
2350
+ declare class DecimalColumn<Precision extends number | undefined = undefined, Scale extends number | undefined = undefined> extends DecimalBaseColumn<Precision, Scale> {
2351
+ }
2352
+ declare class RealColumn extends NumberBaseColumn {
2353
+ dataType: "real";
2354
+ parseItem: typeof parseFloat;
2355
+ }
2356
+ declare class DoublePrecisionColumn extends NumberAsStringBaseColumn {
2357
+ dataType: "double precision";
2358
+ }
2359
+ declare class SmallSerialColumn extends IntegerBaseColumn {
2360
+ dataType: "smallserial";
2361
+ parseItem: typeof parseInt;
2362
+ }
2363
+ declare class SerialColumn extends IntegerBaseColumn {
2364
+ dataType: "serial";
2365
+ parseItem: typeof parseInt;
2366
+ }
2367
+ declare class BigSerialColumn extends NumberAsStringBaseColumn {
2368
+ dataType: "bigserial";
2369
+ }
2370
+
2371
+ declare type BaseStringData = ColumnData & {
2372
+ min?: number;
2373
+ max?: number;
2374
+ length?: number;
2375
+ email?: boolean;
2376
+ url?: boolean;
2377
+ uuid?: boolean;
2378
+ cuid?: boolean;
2379
+ regex?: RegExp;
2380
+ startsWith?: string;
2381
+ endsWith?: string;
2382
+ trim?: boolean;
2383
+ };
2384
+ declare type StringColumn = ColumnType<string>;
2385
+ declare type TextColumnData = BaseStringData;
2386
+ declare type TextMethods = typeof textMethods;
2387
+ declare const textMethods: {
2388
+ email<T extends {
2389
+ data: {
2390
+ email?: boolean | undefined;
2391
+ };
2392
+ }>(this: T): Omit<T, "data"> & {
2393
+ data: Omit<T["data"], "email"> & {
2394
+ email: boolean;
2395
+ };
2396
+ };
2397
+ url<T_1 extends {
2398
+ data: {
2399
+ url?: boolean | undefined;
2400
+ };
2401
+ }>(this: T_1): Omit<T_1, "data"> & {
2402
+ data: Omit<T_1["data"], "url"> & {
2403
+ url: boolean;
2404
+ };
2405
+ };
2406
+ uuid<T_2 extends {
2407
+ data: {
2408
+ uuid?: boolean | undefined;
2409
+ };
2410
+ }>(this: T_2): Omit<T_2, "data"> & {
2411
+ data: Omit<T_2["data"], "uuid"> & {
2412
+ uuid: boolean;
2413
+ };
2414
+ };
2415
+ cuid<T_3 extends {
2416
+ data: {
2417
+ cuid?: boolean | undefined;
2418
+ };
2419
+ }>(this: T_3): Omit<T_3, "data"> & {
2420
+ data: Omit<T_3["data"], "cuid"> & {
2421
+ cuid: boolean;
2422
+ };
2423
+ };
2424
+ regex<T_4 extends {
2425
+ data: {
2426
+ regex?: RegExp | undefined;
2427
+ };
2428
+ }, Value extends RegExp>(this: T_4, value: Value): Omit<T_4, "data"> & {
2429
+ data: Omit<T_4["data"], "regex"> & {
2430
+ regex: Value;
2431
+ };
2432
+ };
2433
+ startsWith<T_5 extends {
2434
+ data: {
2435
+ startsWith?: string | undefined;
2436
+ };
2437
+ }, Value_1 extends string>(this: T_5, value: Value_1): Omit<T_5, "data"> & {
2438
+ data: Omit<T_5["data"], "startsWith"> & {
2439
+ startsWith: Value_1;
2440
+ };
2441
+ };
2442
+ endsWith<T_6 extends {
2443
+ data: {
2444
+ endsWith?: string | undefined;
2445
+ };
2446
+ }, Value_2 extends string>(this: T_6, value: Value_2): Omit<T_6, "data"> & {
2447
+ data: Omit<T_6["data"], "endsWith"> & {
2448
+ endsWith: Value_2;
2449
+ };
2450
+ };
2451
+ trim<T_7 extends {
2452
+ data: {
2453
+ trim?: boolean | undefined;
2454
+ };
2455
+ }>(this: T_7): Omit<T_7, "data"> & {
2456
+ data: Omit<T_7["data"], "trim"> & {
2457
+ trim: boolean;
2458
+ };
2459
+ };
2460
+ min: <T_8 extends {
2461
+ data: {
2462
+ min?: number | undefined;
2463
+ };
2464
+ }, Value_3 extends number>(this: T_8, value: Value_3) => Omit<T_8, "data"> & {
2465
+ data: Omit<T_8["data"], "min"> & {
2466
+ min: Value_3;
2467
+ };
2468
+ };
2469
+ max: <T_9 extends {
2470
+ data: {
2471
+ max?: number | undefined;
2472
+ };
2473
+ }, Value_4 extends number>(this: T_9, value: Value_4) => Omit<T_9, "data"> & {
2474
+ data: Omit<T_9["data"], "max"> & {
2475
+ max: Value_4;
2476
+ };
2477
+ };
2478
+ length: <T_10 extends {
2479
+ data: {
2480
+ length?: number | undefined;
2481
+ };
2482
+ }, Value_5 extends number>(this: T_10, value: Value_5) => Omit<T_10, "data"> & {
2483
+ data: Omit<T_10["data"], "length"> & {
2484
+ length: Value_5;
2485
+ };
2486
+ };
2487
+ nonempty: <T_11 extends {
2488
+ data: {
2489
+ min?: number | undefined;
2490
+ };
2491
+ }>(this: T_11) => Omit<T_11, "data"> & {
2492
+ data: Omit<T_11["data"], "min"> & {
2493
+ min: number;
2494
+ };
2495
+ };
2496
+ };
2497
+ interface TextBaseColumn extends ColumnType<string, typeof Operators.text>, TextMethods {
2498
+ }
2499
+ declare abstract class TextBaseColumn extends ColumnType<string, typeof Operators.text> {
2500
+ data: BaseStringData;
2501
+ operators: {
2502
+ contains: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2503
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2504
+ };
2505
+ containsInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2506
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2507
+ };
2508
+ startsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2509
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2510
+ };
2511
+ startsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2512
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2513
+ };
2514
+ endsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2515
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2516
+ };
2517
+ endsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2518
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2519
+ };
2520
+ equals: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2521
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2522
+ };
2523
+ not: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2524
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2525
+ };
2526
+ in: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
2527
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
2528
+ };
2529
+ notIn: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
2530
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
2531
+ };
2532
+ };
2533
+ }
2534
+ declare abstract class LimitedTextBaseColumn<Limit extends number | undefined = undefined> extends TextBaseColumn {
2535
+ data: TextColumnData & {
2536
+ max: Limit;
2537
+ };
2538
+ constructor(limit?: Limit);
2539
+ toSQL(): string;
2540
+ }
2541
+ declare class VarCharColumn<Limit extends number | undefined = undefined> extends LimitedTextBaseColumn<Limit> {
2542
+ dataType: "varchar";
2543
+ }
2544
+ declare class CharColumn<Limit extends number | undefined = undefined> extends LimitedTextBaseColumn<Limit> {
2545
+ dataType: "char";
2546
+ }
2547
+ declare class TextColumn extends TextBaseColumn {
2548
+ dataType: "text";
2549
+ operators: {
2550
+ contains: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2551
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2552
+ };
2553
+ containsInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2554
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2555
+ };
2556
+ startsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2557
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2558
+ };
2559
+ startsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2560
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2561
+ };
2562
+ endsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2563
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2564
+ };
2565
+ endsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2566
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2567
+ };
2568
+ equals: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2569
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2570
+ };
2571
+ not: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2572
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2573
+ };
2574
+ in: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
2575
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
2576
+ };
2577
+ notIn: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
2578
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
2579
+ };
2580
+ };
2581
+ }
2582
+ declare class ByteaColumn extends ColumnType<Buffer, typeof Operators.text> {
2583
+ dataType: "bytea";
2584
+ operators: {
2585
+ contains: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2586
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2587
+ };
2588
+ containsInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2589
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2590
+ };
2591
+ startsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2592
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2593
+ };
2594
+ startsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2595
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2596
+ };
2597
+ endsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2598
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2599
+ };
2600
+ endsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2601
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2602
+ };
2603
+ equals: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2604
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2605
+ };
2606
+ not: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2607
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2608
+ };
2609
+ in: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
2610
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
2611
+ };
2612
+ notIn: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
2613
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
2614
+ };
2615
+ };
2616
+ }
2617
+ declare class PointColumn extends ColumnType<string, typeof Operators.text> {
2618
+ dataType: "point";
2619
+ operators: {
2620
+ contains: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2621
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2622
+ };
2623
+ containsInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2624
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2625
+ };
2626
+ startsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2627
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2628
+ };
2629
+ startsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2630
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2631
+ };
2632
+ endsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2633
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2634
+ };
2635
+ endsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2636
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2637
+ };
2638
+ equals: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2639
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2640
+ };
2641
+ not: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2642
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2643
+ };
2644
+ in: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
2645
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
2646
+ };
2647
+ notIn: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
2648
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
2649
+ };
2650
+ };
2651
+ }
2652
+ declare class LineColumn extends ColumnType<string, typeof Operators.text> {
2653
+ dataType: "point";
2654
+ operators: {
2655
+ contains: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2656
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2657
+ };
2658
+ containsInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2659
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2660
+ };
2661
+ startsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2662
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2663
+ };
2664
+ startsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2665
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2666
+ };
2667
+ endsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2668
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2669
+ };
2670
+ endsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2671
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2672
+ };
2673
+ equals: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2674
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2675
+ };
2676
+ not: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2677
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2678
+ };
2679
+ in: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
2680
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
2681
+ };
2682
+ notIn: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
2683
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
2684
+ };
2685
+ };
2686
+ }
2687
+ declare class LsegColumn extends ColumnType<string, typeof Operators.text> {
2688
+ dataType: "point";
2689
+ operators: {
2690
+ contains: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2691
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2692
+ };
2693
+ containsInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2694
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2695
+ };
2696
+ startsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2697
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2698
+ };
2699
+ startsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2700
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2701
+ };
2702
+ endsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2703
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2704
+ };
2705
+ endsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2706
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2707
+ };
2708
+ equals: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2709
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2710
+ };
2711
+ not: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2712
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2713
+ };
2714
+ in: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
2715
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
2716
+ };
2717
+ notIn: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
2718
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
2719
+ };
2720
+ };
2721
+ }
2722
+ declare class BoxColumn extends ColumnType<string, typeof Operators.text> {
2723
+ dataType: "point";
2724
+ operators: {
2725
+ contains: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2726
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2727
+ };
2728
+ containsInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2729
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2730
+ };
2731
+ startsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2732
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2733
+ };
2734
+ startsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2735
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2736
+ };
2737
+ endsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2738
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2739
+ };
2740
+ endsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2741
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2742
+ };
2743
+ equals: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2744
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2745
+ };
2746
+ not: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2747
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2748
+ };
2749
+ in: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
2750
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
2751
+ };
2752
+ notIn: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
2753
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
2754
+ };
2755
+ };
2756
+ }
2757
+ declare class PathColumn extends ColumnType<string, typeof Operators.text> {
2758
+ dataType: "point";
2759
+ operators: {
2760
+ contains: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2761
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2762
+ };
2763
+ containsInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2764
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2765
+ };
2766
+ startsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2767
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2768
+ };
2769
+ startsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2770
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2771
+ };
2772
+ endsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2773
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2774
+ };
2775
+ endsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2776
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2777
+ };
2778
+ equals: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2779
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2780
+ };
2781
+ not: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2782
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2783
+ };
2784
+ in: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
2785
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
2786
+ };
2787
+ notIn: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
2788
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
2789
+ };
2790
+ };
2791
+ }
2792
+ declare class PolygonColumn extends ColumnType<string, typeof Operators.text> {
2793
+ dataType: "point";
2794
+ operators: {
2795
+ contains: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2796
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2797
+ };
2798
+ containsInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2799
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2800
+ };
2801
+ startsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2802
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2803
+ };
2804
+ startsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2805
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2806
+ };
2807
+ endsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2808
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2809
+ };
2810
+ endsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2811
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2812
+ };
2813
+ equals: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2814
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2815
+ };
2816
+ not: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2817
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2818
+ };
2819
+ in: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
2820
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
2821
+ };
2822
+ notIn: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
2823
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
2824
+ };
2825
+ };
2826
+ }
2827
+ declare class CircleColumn extends ColumnType<string, typeof Operators.text> {
2828
+ dataType: "point";
2829
+ operators: {
2830
+ contains: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2831
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2832
+ };
2833
+ containsInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2834
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2835
+ };
2836
+ startsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2837
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2838
+ };
2839
+ startsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2840
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2841
+ };
2842
+ endsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2843
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2844
+ };
2845
+ endsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2846
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2847
+ };
2848
+ equals: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2849
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2850
+ };
2851
+ not: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2852
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2853
+ };
2854
+ in: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
2855
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
2856
+ };
2857
+ notIn: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
2858
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
2859
+ };
2860
+ };
2861
+ }
2862
+ declare class MoneyColumn extends NumberBaseColumn {
2863
+ dataType: "money";
2864
+ parseFn: (input: unknown) => number;
2865
+ }
2866
+ declare class CidrColumn extends ColumnType<string, typeof Operators.text> {
2867
+ dataType: "cidr";
2868
+ operators: {
2869
+ contains: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2870
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2871
+ };
2872
+ containsInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2873
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2874
+ };
2875
+ startsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2876
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2877
+ };
2878
+ startsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2879
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2880
+ };
2881
+ endsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2882
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2883
+ };
2884
+ endsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2885
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2886
+ };
2887
+ equals: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2888
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2889
+ };
2890
+ not: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2891
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2892
+ };
2893
+ in: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
2894
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
2895
+ };
2896
+ notIn: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
2897
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
2898
+ };
2899
+ };
2900
+ }
2901
+ declare class InetColumn extends ColumnType<string, typeof Operators.text> {
2902
+ dataType: "inet";
2903
+ operators: {
2904
+ contains: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2905
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2906
+ };
2907
+ containsInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2908
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2909
+ };
2910
+ startsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2911
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2912
+ };
2913
+ startsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2914
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2915
+ };
2916
+ endsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2917
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2918
+ };
2919
+ endsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2920
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2921
+ };
2922
+ equals: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2923
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2924
+ };
2925
+ not: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2926
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2927
+ };
2928
+ in: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
2929
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
2930
+ };
2931
+ notIn: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
2932
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
2933
+ };
2934
+ };
2935
+ }
2936
+ declare class MacAddrColumn extends ColumnType<string, typeof Operators.text> {
2937
+ dataType: "macaddr";
2938
+ operators: {
2939
+ contains: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2940
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2941
+ };
2942
+ containsInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2943
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2944
+ };
2945
+ startsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2946
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2947
+ };
2948
+ startsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2949
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2950
+ };
2951
+ endsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2952
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2953
+ };
2954
+ endsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2955
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2956
+ };
2957
+ equals: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2958
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2959
+ };
2960
+ not: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2961
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2962
+ };
2963
+ in: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
2964
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
2965
+ };
2966
+ notIn: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
2967
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
2968
+ };
2969
+ };
2970
+ }
2971
+ declare class MacAddr8Column extends ColumnType<string, typeof Operators.text> {
2972
+ dataType: "macaddr8";
2973
+ operators: {
2974
+ contains: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2975
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2976
+ };
2977
+ containsInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2978
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2979
+ };
2980
+ startsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2981
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2982
+ };
2983
+ startsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2984
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2985
+ };
2986
+ endsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2987
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2988
+ };
2989
+ endsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2990
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2991
+ };
2992
+ equals: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2993
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2994
+ };
2995
+ not: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
2996
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
2997
+ };
2998
+ in: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
2999
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
3000
+ };
3001
+ notIn: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
3002
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
3003
+ };
3004
+ };
3005
+ }
3006
+ declare class BitColumn<Length extends number> extends ColumnType<string, typeof Operators.text> {
3007
+ dataType: "bit";
3008
+ operators: {
3009
+ contains: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3010
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3011
+ };
3012
+ containsInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3013
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3014
+ };
3015
+ startsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3016
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3017
+ };
3018
+ startsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3019
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3020
+ };
3021
+ endsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3022
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3023
+ };
3024
+ endsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3025
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3026
+ };
3027
+ equals: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3028
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3029
+ };
3030
+ not: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3031
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3032
+ };
3033
+ in: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
3034
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
3035
+ };
3036
+ notIn: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
3037
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
3038
+ };
3039
+ };
3040
+ data: ColumnData & {
3041
+ length: Length;
3042
+ };
3043
+ constructor(length: Length);
3044
+ toSQL(): string;
3045
+ }
3046
+ declare class BitVaryingColumn<Length extends number | undefined = undefined> extends ColumnType<string, typeof Operators.text> {
3047
+ dataType: "bit varying";
3048
+ operators: {
3049
+ contains: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3050
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3051
+ };
3052
+ containsInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3053
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3054
+ };
3055
+ startsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3056
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3057
+ };
3058
+ startsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3059
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3060
+ };
3061
+ endsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3062
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3063
+ };
3064
+ endsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3065
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3066
+ };
3067
+ equals: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3068
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3069
+ };
3070
+ not: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3071
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3072
+ };
3073
+ in: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
3074
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
3075
+ };
3076
+ notIn: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
3077
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
3078
+ };
3079
+ };
3080
+ data: ColumnData & {
3081
+ length: Length;
3082
+ };
3083
+ constructor(length: Length);
3084
+ toSQL(): string;
3085
+ }
3086
+ declare class TsVectorColumn extends ColumnType<string, typeof Operators.text> {
3087
+ dataType: "tsvector";
3088
+ operators: {
3089
+ contains: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3090
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3091
+ };
3092
+ containsInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3093
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3094
+ };
3095
+ startsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3096
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3097
+ };
3098
+ startsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3099
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3100
+ };
3101
+ endsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3102
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3103
+ };
3104
+ endsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3105
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3106
+ };
3107
+ equals: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3108
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3109
+ };
3110
+ not: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3111
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3112
+ };
3113
+ in: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
3114
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
3115
+ };
3116
+ notIn: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
3117
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
3118
+ };
3119
+ };
3120
+ }
3121
+ declare class TsQueryColumn extends ColumnType<string, typeof Operators.text> {
3122
+ dataType: "tsquery";
3123
+ operators: {
3124
+ contains: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3125
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3126
+ };
3127
+ containsInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3128
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3129
+ };
3130
+ startsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3131
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3132
+ };
3133
+ startsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3134
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3135
+ };
3136
+ endsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3137
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3138
+ };
3139
+ endsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3140
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3141
+ };
3142
+ equals: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3143
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3144
+ };
3145
+ not: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3146
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3147
+ };
3148
+ in: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
3149
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
3150
+ };
3151
+ notIn: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
3152
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
3153
+ };
3154
+ };
3155
+ }
3156
+ declare class UUIDColumn extends ColumnType<string, typeof Operators.text> {
3157
+ dataType: "uuid";
3158
+ operators: {
3159
+ contains: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3160
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3161
+ };
3162
+ containsInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3163
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3164
+ };
3165
+ startsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3166
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3167
+ };
3168
+ startsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3169
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3170
+ };
3171
+ endsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3172
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3173
+ };
3174
+ endsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3175
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3176
+ };
3177
+ equals: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3178
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3179
+ };
3180
+ not: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3181
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3182
+ };
3183
+ in: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
3184
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
3185
+ };
3186
+ notIn: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
3187
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
3188
+ };
3189
+ };
3190
+ }
3191
+ declare class XMLColumn extends ColumnType<string, typeof Operators.text> {
3192
+ dataType: "xml";
3193
+ operators: {
3194
+ contains: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3195
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3196
+ };
3197
+ containsInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3198
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3199
+ };
3200
+ startsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3201
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3202
+ };
3203
+ startsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3204
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3205
+ };
3206
+ endsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3207
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3208
+ };
3209
+ endsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3210
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3211
+ };
3212
+ equals: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3213
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3214
+ };
3215
+ not: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3216
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3217
+ };
3218
+ in: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
3219
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
3220
+ };
3221
+ notIn: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
3222
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
3223
+ };
3224
+ };
3225
+ }
3226
+
3227
+ declare type DateColumnData = ColumnData & {
3228
+ min?: Date;
3229
+ max?: Date;
3230
+ };
3231
+ declare type DateMethods = typeof dateTypeMethods;
3232
+ interface DateBaseColumn extends ColumnType<string, typeof Operators.date, string | Date>, DateMethods {
3233
+ }
3234
+ declare abstract class DateBaseColumn extends ColumnType<string, typeof Operators.date, string | Date> {
3235
+ data: DateColumnData;
3236
+ operators: {
3237
+ lt: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date, values: unknown[]) => string) & {
3238
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date;
3239
+ };
3240
+ lte: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date, values: unknown[]) => string) & {
3241
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date;
3242
+ };
3243
+ gt: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date, values: unknown[]) => string) & {
3244
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date;
3245
+ };
3246
+ gte: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date, values: unknown[]) => string) & {
3247
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date;
3248
+ };
3249
+ between: ((key: string, value: [Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date, Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date], values: unknown[]) => string) & {
3250
+ type: [Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date, Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date];
3251
+ };
3252
+ equals: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date, values: unknown[]) => string) & {
3253
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date;
3254
+ };
3255
+ not: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date, values: unknown[]) => string) & {
3256
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date;
3257
+ };
3258
+ in: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date[], values: unknown[]) => string) & {
3259
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date[];
3260
+ };
3261
+ notIn: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date[], values: unknown[]) => string) & {
3262
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date[];
3263
+ };
3264
+ };
3265
+ }
3266
+ declare class DateColumn extends DateBaseColumn {
3267
+ dataType: "date";
3268
+ }
3269
+ declare type DateTimeColumnData = DateColumnData & {
3270
+ precision?: number;
3271
+ };
3272
+ declare abstract class DateTimeBaseClass<Precision extends number | undefined = undefined> extends DateBaseColumn {
3273
+ data: DateTimeColumnData & {
3274
+ precision: Precision;
3275
+ };
3276
+ constructor(precision?: Precision);
3277
+ toSQL(): string;
3278
+ }
3279
+ declare abstract class DateTimeWithTimeZoneBaseClass<Precision extends number | undefined = undefined> extends DateTimeBaseClass<Precision> {
3280
+ abstract baseDataType: string;
3281
+ toSQL(): string;
3282
+ }
3283
+ declare class TimestampColumn<Precision extends number | undefined = undefined> extends DateTimeBaseClass<Precision> {
3284
+ dataType: "timestamp";
3285
+ }
3286
+ declare class TimestampWithTimeZoneColumn<Precision extends number | undefined = undefined> extends DateTimeWithTimeZoneBaseClass<Precision> {
3287
+ dataType: "timestamp with time zone";
3288
+ baseDataType: "timestamp";
3289
+ }
3290
+ declare class TimeColumn<Precision extends number | undefined = undefined> extends DateTimeBaseClass<Precision> {
3291
+ dataType: "time";
3292
+ }
3293
+ declare class TimeWithTimeZoneColumn<Precision extends number | undefined = undefined> extends DateTimeWithTimeZoneBaseClass<Precision> {
3294
+ dataType: "time with time zone";
3295
+ baseDataType: "time";
3296
+ }
3297
+ declare type TimeInterval = {
3298
+ years?: number;
3299
+ months?: number;
3300
+ days?: number;
3301
+ hours?: number;
3302
+ minutes?: number;
3303
+ seconds?: number;
3304
+ };
3305
+ declare class IntervalColumn<Fields extends string | undefined = undefined, Precision extends number | undefined = undefined> extends ColumnType<TimeInterval, typeof Operators.date> {
3306
+ dataType: "interval";
3307
+ data: DateTimeColumnData & {
3308
+ fields: Fields;
3309
+ precision: Precision;
3310
+ };
3311
+ operators: {
3312
+ lt: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date, values: unknown[]) => string) & {
3313
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date;
3314
+ };
3315
+ lte: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date, values: unknown[]) => string) & {
3316
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date;
3317
+ };
3318
+ gt: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date, values: unknown[]) => string) & {
3319
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date;
3320
+ };
3321
+ gte: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date, values: unknown[]) => string) & {
3322
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date;
3323
+ };
3324
+ between: ((key: string, value: [Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date, Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date], values: unknown[]) => string) & {
3325
+ type: [Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date, Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date];
3326
+ };
3327
+ equals: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date, values: unknown[]) => string) & {
3328
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date;
3329
+ };
3330
+ not: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date, values: unknown[]) => string) & {
3331
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date;
3332
+ };
3333
+ in: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date[], values: unknown[]) => string) & {
3334
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date[];
3335
+ };
3336
+ notIn: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date[], values: unknown[]) => string) & {
3337
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | Date[];
3338
+ };
3339
+ };
3340
+ constructor(fields?: Fields, precision?: Precision);
3341
+ toSQL(): string;
3342
+ }
3343
+
3344
+ declare class BooleanColumn extends ColumnType<boolean, typeof Operators.boolean> {
3345
+ dataType: "boolean";
3346
+ operators: {
3347
+ equals: ((key: string, value: boolean | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3348
+ type: boolean | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3349
+ };
3350
+ not: ((key: string, value: boolean | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3351
+ type: boolean | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3352
+ };
3353
+ in: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | boolean[], values: unknown[]) => string) & {
3354
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | boolean[];
3355
+ };
3356
+ notIn: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | boolean[], values: unknown[]) => string) & {
3357
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | boolean[];
3358
+ };
3359
+ };
3360
+ parseItem: (input: string) => boolean;
3361
+ }
3362
+
3363
+ declare class EnumColumn<U extends string = string, T extends [U, ...U[]] = [U]> extends ColumnType<T[number], typeof Operators.any> {
3364
+ enumName: string;
3365
+ options: T;
3366
+ operators: {
3367
+ equals: ((key: string, value: any, values: unknown[]) => string) & {
3368
+ type: any;
3369
+ };
3370
+ not: ((key: string, value: any, values: unknown[]) => string) & {
3371
+ type: any;
3372
+ };
3373
+ in: ((key: string, value: any[] | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3374
+ type: any[] | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3375
+ };
3376
+ notIn: ((key: string, value: any[] | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3377
+ type: any[] | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3378
+ };
3379
+ };
3380
+ dataType: string;
3381
+ constructor(enumName: string, options: T);
3382
+ toSql(): string;
3383
+ }
3384
+
3385
+ declare type JSONObjectShape = Record<string, JSONTypeAny>;
3386
+ declare type UnknownKeysParam = 'passthrough' | 'strict' | 'strip';
3387
+ declare type FullyPartial<T extends JSONObjectShape> = {
3388
+ [K in keyof T]: JSONOptional<T[K]>;
3389
+ };
3390
+ declare type PartiallyPartial<T extends JSONObjectShape, P extends keyof T> = {
3391
+ [K in keyof T]: K extends P ? JSONOptional<T[K]> : T[K];
3392
+ };
3393
+ declare type identity<T> = T;
3394
+ declare type flatten<T extends object> = identity<{
3395
+ [k in keyof T]: T[k];
3396
+ }>;
3397
+ declare type optionalKeys<T extends object> = {
3398
+ [k in keyof T]: undefined extends T[k] ? k : never;
3399
+ }[keyof T];
3400
+ declare type requiredKeys<T extends object> = {
3401
+ [k in keyof T]: undefined extends T[k] ? never : k;
3402
+ }[keyof T];
3403
+ declare type addQuestionMarks<T extends object> = Partial<Pick<T, optionalKeys<T>>> & Pick<T, requiredKeys<T>>;
3404
+ declare type baseObjectOutputType<Shape extends JSONObjectShape> = flatten<addQuestionMarks<{
3405
+ [k in keyof Shape]: Shape[k]['type'];
3406
+ }>>;
3407
+ declare type objectOutputType<Shape extends JSONObjectShape, Catchall extends JSONTypeAny> = JSONTypeAny extends Catchall ? baseObjectOutputType<Shape> : flatten<baseObjectOutputType<Shape> & {
3408
+ [k: string]: Catchall['type'];
3409
+ }>;
3410
+ declare type IsEqual<T, U> = (<G>() => G extends T ? 1 : 2) extends <G>() => G extends U ? 1 : 2 ? true : false;
3411
+ declare type Filter<KeyType, ExcludeType> = IsEqual<KeyType, ExcludeType> extends true ? never : KeyType extends ExcludeType ? never : KeyType;
3412
+ declare type Except<ObjectType, KeysType extends keyof ObjectType> = {
3413
+ [KeyType in keyof ObjectType as Filter<KeyType, KeysType>]: ObjectType[KeyType];
3414
+ };
3415
+ declare type Merge<FirstType, SecondType> = Except<FirstType, Extract<keyof FirstType, keyof SecondType>> & SecondType;
3416
+ interface JSONObject<T extends JSONObjectShape, UnknownKeys extends UnknownKeysParam = 'strip', Catchall extends JSONTypeAny = JSONTypeAny, Output = objectOutputType<T, Catchall>> extends JSONType<Output, 'object'> {
3417
+ shape: T;
3418
+ unknownKeys: UnknownKeys;
3419
+ catchAllType: Catchall;
3420
+ extend<S extends JSONObjectShape>(shape: S): JSONObject<Merge<T, S>, UnknownKeys, Catchall>;
3421
+ merge<S extends JSONObjectShape, U extends UnknownKeysParam, C extends JSONTypeAny>(obj: JSONObject<S, U, C>): JSONObject<Merge<T, S>, U, C>;
3422
+ pick<K extends keyof T>(...arr: K[]): JSONObject<Pick<T, K>, UnknownKeys, Catchall>;
3423
+ omit<K extends keyof T>(...arr: K[]): JSONObject<Omit<T, K>, UnknownKeys, Catchall>;
3424
+ partial(): JSONObject<FullyPartial<T>, UnknownKeys, Catchall>;
3425
+ partial<P extends keyof T>(...arr: P[]): JSONObject<PartiallyPartial<T, P>, UnknownKeys, Catchall>;
3426
+ deepPartial(): JSONObject<{
3427
+ [k in keyof T]: JSONOptional<DeepPartial<T[k]>>;
3428
+ }, UnknownKeys, Catchall>;
3429
+ passthrough(): JSONObject<T, 'passthrough', Catchall>;
3430
+ strict(): JSONObject<T, 'strict', Catchall>;
3431
+ strip(): JSONObject<T, 'strip', Catchall>;
3432
+ catchAll<C extends JSONTypeAny>(type: C): JSONObject<T, UnknownKeys, C>;
3433
+ }
3434
+
3435
+ interface JSONNativeEnum<T extends EnumLike> extends JSONType<T[keyof T], 'nativeEnum'> {
3436
+ dataType: 'nativeEnum';
3437
+ enum: T;
3438
+ options: (number | string)[];
3439
+ }
3440
+ declare type EnumLike = {
3441
+ [k: string]: string | number;
3442
+ [nu: number]: string;
3443
+ };
3444
+
3445
+ interface JSONMap<Key extends JSONTypeAny, Value extends JSONTypeAny> extends JSONType<Map<Key['type'], Value['type']>, 'map'> {
3446
+ keyType: Key;
3447
+ valueType: Value;
3448
+ deepPartial(): JSONMap<ReturnType<Key['deepPartial']>, ReturnType<Value['deepPartial']>>;
3449
+ }
3450
+
3451
+ interface JSONLiteral<T extends Primitive> extends JSONType<T, 'literal'> {
3452
+ value: Primitive;
3453
+ }
3454
+
3455
+ interface JSONLazy<T extends JSONTypeAny> extends JSONType<T['type'], 'lazy'> {
3456
+ typeCache?: T;
3457
+ getter(): T;
3458
+ deepPartial(): JSONLazy<ReturnType<T['deepPartial']>>;
3459
+ }
3460
+
3461
+ interface JSONInstanceOf<T extends Class> extends JSONType<T, 'instanceOf'> {
3462
+ class: T;
3463
+ }
3464
+ declare type Class = new (...args: any[]) => any;
3465
+
3466
+ interface JSONEnum<U extends string = string, T extends [U, ...U[]] = [U]> extends JSONType<T[number], 'enum'> {
3467
+ enum: {
3468
+ [k in T[number]]: k;
3469
+ };
3470
+ options: T;
3471
+ }
3472
+
3473
+ interface JSONDiscriminatedUnion<Discriminator extends string, DiscriminatorValue extends Primitive, Option extends JSONDiscriminatedObject<Discriminator, DiscriminatorValue>> extends JSONType<Option['type'], 'discriminatedUnion'> {
3474
+ discriminator: Discriminator;
3475
+ discriminatorValue: DiscriminatorValue;
3476
+ options: Map<DiscriminatorValue, Option>;
3477
+ _option: Option;
3478
+ }
3479
+ declare type JSONDiscriminatedObject<Discriminator extends string, DiscriminatorValue extends Primitive> = JSONObject<{
3480
+ [K in Discriminator]: JSONLiteral<DiscriminatorValue>;
3481
+ } & JSONObjectShape, any>;
3482
+
3483
+ declare type JSONAny = JSONTypeAny & {
3484
+ dataType: 'any';
3485
+ };
3486
+ declare type JSONBigInt = JSONType<bigint, 'bigint'> & {
3487
+ data: BaseNumberData;
3488
+ } & typeof bigIntMethods;
3489
+ declare const bigIntMethods: {
3490
+ lt<T extends {
3491
+ data: {
3492
+ lt?: number | undefined;
3493
+ };
3494
+ }, Value extends number>(this: T, value: Value): Omit<T, "data"> & {
3495
+ data: Omit<T["data"], "lt"> & {
3496
+ lt: Value;
3497
+ };
3498
+ };
3499
+ lte<T_1 extends {
3500
+ data: {
3501
+ lte?: number | undefined;
3502
+ };
3503
+ }, Value_1 extends number>(this: T_1, value: Value_1): Omit<T_1, "data"> & {
3504
+ data: Omit<T_1["data"], "lte"> & {
3505
+ lte: Value_1;
3506
+ };
3507
+ };
3508
+ max<T_2 extends {
3509
+ data: {
3510
+ lte?: number | undefined;
3511
+ };
3512
+ }, Value_2 extends number>(this: T_2, value: Value_2): Omit<T_2, "data"> & {
3513
+ data: Omit<T_2["data"], "lte"> & {
3514
+ lte: Value_2;
3515
+ };
3516
+ };
3517
+ gt<T_3 extends {
3518
+ data: {
3519
+ gt?: number | undefined;
3520
+ };
3521
+ }, Value_3 extends number>(this: T_3, value: Value_3): Omit<T_3, "data"> & {
3522
+ data: Omit<T_3["data"], "gt"> & {
3523
+ gt: Value_3;
3524
+ };
3525
+ };
3526
+ gte<T_4 extends {
3527
+ data: {
3528
+ gte?: number | undefined;
3529
+ };
3530
+ }, Value_4 extends number>(this: T_4, value: Value_4): Omit<T_4, "data"> & {
3531
+ data: Omit<T_4["data"], "gte"> & {
3532
+ gte: Value_4;
3533
+ };
3534
+ };
3535
+ min<T_5 extends {
3536
+ data: {
3537
+ gte?: number | undefined;
3538
+ };
3539
+ }, Value_5 extends number>(this: T_5, value: Value_5): Omit<T_5, "data"> & {
3540
+ data: Omit<T_5["data"], "gte"> & {
3541
+ gte: Value_5;
3542
+ };
3543
+ };
3544
+ positive<T_6 extends {
3545
+ data: {
3546
+ gt?: number | undefined;
3547
+ };
3548
+ }>(this: T_6): Omit<T_6, "data"> & {
3549
+ data: Omit<T_6["data"], "gt"> & {
3550
+ gt: number;
3551
+ };
3552
+ };
3553
+ nonNegative<T_7 extends {
3554
+ data: {
3555
+ gte?: number | undefined;
3556
+ };
3557
+ }>(this: T_7): Omit<T_7, "data"> & {
3558
+ data: Omit<T_7["data"], "gte"> & {
3559
+ gte: number;
3560
+ };
3561
+ };
3562
+ negative<T_8 extends {
3563
+ data: {
3564
+ lt?: number | undefined;
3565
+ };
3566
+ }>(this: T_8): Omit<T_8, "data"> & {
3567
+ data: Omit<T_8["data"], "lt"> & {
3568
+ lt: number;
3569
+ };
3570
+ };
3571
+ nonPositive<T_9 extends {
3572
+ data: {
3573
+ lte?: number | undefined;
3574
+ };
3575
+ }>(this: T_9): Omit<T_9, "data"> & {
3576
+ data: Omit<T_9["data"], "lte"> & {
3577
+ lte: number;
3578
+ };
3579
+ };
3580
+ multipleOf<T_10 extends {
3581
+ data: {
3582
+ multipleOf?: number | undefined;
3583
+ };
3584
+ }, Value_6 extends number>(this: T_10, value: Value_6): Omit<T_10, "data"> & {
3585
+ data: Omit<T_10["data"], "multipleOf"> & {
3586
+ multipleOf: any;
3587
+ };
3588
+ };
3589
+ step<T_11 extends {
3590
+ data: {
3591
+ multipleOf?: number | undefined;
3592
+ };
3593
+ }, Value_7 extends number>(this: T_11, value: Value_7): Omit<T_11, "data"> & {
3594
+ data: Omit<T_11["data"], "multipleOf"> & {
3595
+ multipleOf: any;
3596
+ };
3597
+ };
3598
+ int<T_12 extends {
3599
+ data: {
3600
+ int?: boolean | undefined;
3601
+ };
3602
+ }>(this: T_12): Omit<T_12, "data"> & {
3603
+ data: Omit<T_12["data"], "int"> & {
3604
+ int: boolean;
3605
+ };
3606
+ };
3607
+ dataType: "bigint";
3608
+ };
3609
+ declare type JSONBoolean = JSONType<boolean, 'boolean'>;
3610
+ declare type JSONNaN = JSONType<number, 'nan'>;
3611
+ declare type JSONNever = JSONType<unknown, 'never'>;
3612
+ declare type JSONNull = JSONType<null, 'null'>;
3613
+ declare type JSONNumber = JSONType<number, 'number'> & {
3614
+ data: BaseNumberData;
3615
+ } & typeof numberMethods;
3616
+ declare const numberMethods: {
3617
+ dataType: "number";
3618
+ lt<T extends {
3619
+ data: {
3620
+ lt?: number | undefined;
3621
+ };
3622
+ }, Value extends number>(this: T, value: Value): Omit<T, "data"> & {
3623
+ data: Omit<T["data"], "lt"> & {
3624
+ lt: Value;
3625
+ };
3626
+ };
3627
+ lte<T_1 extends {
3628
+ data: {
3629
+ lte?: number | undefined;
3630
+ };
3631
+ }, Value_1 extends number>(this: T_1, value: Value_1): Omit<T_1, "data"> & {
3632
+ data: Omit<T_1["data"], "lte"> & {
3633
+ lte: Value_1;
3634
+ };
3635
+ };
3636
+ max<T_2 extends {
3637
+ data: {
3638
+ lte?: number | undefined;
3639
+ };
3640
+ }, Value_2 extends number>(this: T_2, value: Value_2): Omit<T_2, "data"> & {
3641
+ data: Omit<T_2["data"], "lte"> & {
3642
+ lte: Value_2;
3643
+ };
3644
+ };
3645
+ gt<T_3 extends {
3646
+ data: {
3647
+ gt?: number | undefined;
3648
+ };
3649
+ }, Value_3 extends number>(this: T_3, value: Value_3): Omit<T_3, "data"> & {
3650
+ data: Omit<T_3["data"], "gt"> & {
3651
+ gt: Value_3;
3652
+ };
3653
+ };
3654
+ gte<T_4 extends {
3655
+ data: {
3656
+ gte?: number | undefined;
3657
+ };
3658
+ }, Value_4 extends number>(this: T_4, value: Value_4): Omit<T_4, "data"> & {
3659
+ data: Omit<T_4["data"], "gte"> & {
3660
+ gte: Value_4;
3661
+ };
3662
+ };
3663
+ min<T_5 extends {
3664
+ data: {
3665
+ gte?: number | undefined;
3666
+ };
3667
+ }, Value_5 extends number>(this: T_5, value: Value_5): Omit<T_5, "data"> & {
3668
+ data: Omit<T_5["data"], "gte"> & {
3669
+ gte: Value_5;
3670
+ };
3671
+ };
3672
+ positive<T_6 extends {
3673
+ data: {
3674
+ gt?: number | undefined;
3675
+ };
3676
+ }>(this: T_6): Omit<T_6, "data"> & {
3677
+ data: Omit<T_6["data"], "gt"> & {
3678
+ gt: number;
3679
+ };
3680
+ };
3681
+ nonNegative<T_7 extends {
3682
+ data: {
3683
+ gte?: number | undefined;
3684
+ };
3685
+ }>(this: T_7): Omit<T_7, "data"> & {
3686
+ data: Omit<T_7["data"], "gte"> & {
3687
+ gte: number;
3688
+ };
3689
+ };
3690
+ negative<T_8 extends {
3691
+ data: {
3692
+ lt?: number | undefined;
3693
+ };
3694
+ }>(this: T_8): Omit<T_8, "data"> & {
3695
+ data: Omit<T_8["data"], "lt"> & {
3696
+ lt: number;
3697
+ };
3698
+ };
3699
+ nonPositive<T_9 extends {
3700
+ data: {
3701
+ lte?: number | undefined;
3702
+ };
3703
+ }>(this: T_9): Omit<T_9, "data"> & {
3704
+ data: Omit<T_9["data"], "lte"> & {
3705
+ lte: number;
3706
+ };
3707
+ };
3708
+ multipleOf<T_10 extends {
3709
+ data: {
3710
+ multipleOf?: number | undefined;
3711
+ };
3712
+ }, Value_6 extends number>(this: T_10, value: Value_6): Omit<T_10, "data"> & {
3713
+ data: Omit<T_10["data"], "multipleOf"> & {
3714
+ multipleOf: any;
3715
+ };
3716
+ };
3717
+ step<T_11 extends {
3718
+ data: {
3719
+ multipleOf?: number | undefined;
3720
+ };
3721
+ }, Value_7 extends number>(this: T_11, value: Value_7): Omit<T_11, "data"> & {
3722
+ data: Omit<T_11["data"], "multipleOf"> & {
3723
+ multipleOf: any;
3724
+ };
3725
+ };
3726
+ int<T_12 extends {
3727
+ data: {
3728
+ int?: boolean | undefined;
3729
+ };
3730
+ }>(this: T_12): Omit<T_12, "data"> & {
3731
+ data: Omit<T_12["data"], "int"> & {
3732
+ int: boolean;
3733
+ };
3734
+ };
3735
+ };
3736
+ declare type JSONDate = JSONType<Date, 'date'> & {
3737
+ data: DateColumnData;
3738
+ } & typeof dateTypeMethods;
3739
+ declare type JSONString = JSONType<string, 'string'> & {
3740
+ data: BaseStringData;
3741
+ } & typeof stringMethods;
3742
+ declare const stringMethods: {
3743
+ dataType: "string";
3744
+ email<T extends {
3745
+ data: {
3746
+ email?: boolean | undefined;
3747
+ };
3748
+ }>(this: T): Omit<T, "data"> & {
3749
+ data: Omit<T["data"], "email"> & {
3750
+ email: boolean;
3751
+ };
3752
+ };
3753
+ url<T_1 extends {
3754
+ data: {
3755
+ url?: boolean | undefined;
3756
+ };
3757
+ }>(this: T_1): Omit<T_1, "data"> & {
3758
+ data: Omit<T_1["data"], "url"> & {
3759
+ url: boolean;
3760
+ };
3761
+ };
3762
+ uuid<T_2 extends {
3763
+ data: {
3764
+ uuid?: boolean | undefined;
3765
+ };
3766
+ }>(this: T_2): Omit<T_2, "data"> & {
3767
+ data: Omit<T_2["data"], "uuid"> & {
3768
+ uuid: boolean;
3769
+ };
3770
+ };
3771
+ cuid<T_3 extends {
3772
+ data: {
3773
+ cuid?: boolean | undefined;
3774
+ };
3775
+ }>(this: T_3): Omit<T_3, "data"> & {
3776
+ data: Omit<T_3["data"], "cuid"> & {
3777
+ cuid: boolean;
3778
+ };
3779
+ };
3780
+ regex<T_4 extends {
3781
+ data: {
3782
+ regex?: RegExp | undefined;
3783
+ };
3784
+ }, Value extends RegExp>(this: T_4, value: Value): Omit<T_4, "data"> & {
3785
+ data: Omit<T_4["data"], "regex"> & {
3786
+ regex: Value;
3787
+ };
3788
+ };
3789
+ startsWith<T_5 extends {
3790
+ data: {
3791
+ startsWith?: string | undefined;
3792
+ };
3793
+ }, Value_1 extends string>(this: T_5, value: Value_1): Omit<T_5, "data"> & {
3794
+ data: Omit<T_5["data"], "startsWith"> & {
3795
+ startsWith: Value_1;
3796
+ };
3797
+ };
3798
+ endsWith<T_6 extends {
3799
+ data: {
3800
+ endsWith?: string | undefined;
3801
+ };
3802
+ }, Value_2 extends string>(this: T_6, value: Value_2): Omit<T_6, "data"> & {
3803
+ data: Omit<T_6["data"], "endsWith"> & {
3804
+ endsWith: Value_2;
3805
+ };
3806
+ };
3807
+ trim<T_7 extends {
3808
+ data: {
3809
+ trim?: boolean | undefined;
3810
+ };
3811
+ }>(this: T_7): Omit<T_7, "data"> & {
3812
+ data: Omit<T_7["data"], "trim"> & {
3813
+ trim: boolean;
3814
+ };
3815
+ };
3816
+ min: <T_8 extends {
3817
+ data: {
3818
+ min?: number | undefined;
3819
+ };
3820
+ }, Value_3 extends number>(this: T_8, value: Value_3) => Omit<T_8, "data"> & {
3821
+ data: Omit<T_8["data"], "min"> & {
3822
+ min: Value_3;
3823
+ };
3824
+ };
3825
+ max: <T_9 extends {
3826
+ data: {
3827
+ max?: number | undefined;
3828
+ };
3829
+ }, Value_4 extends number>(this: T_9, value: Value_4) => Omit<T_9, "data"> & {
3830
+ data: Omit<T_9["data"], "max"> & {
3831
+ max: Value_4;
3832
+ };
3833
+ };
3834
+ length: <T_10 extends {
3835
+ data: {
3836
+ length?: number | undefined;
3837
+ };
3838
+ }, Value_5 extends number>(this: T_10, value: Value_5) => Omit<T_10, "data"> & {
3839
+ data: Omit<T_10["data"], "length"> & {
3840
+ length: Value_5;
3841
+ };
3842
+ };
3843
+ nonempty: <T_11 extends {
3844
+ data: {
3845
+ min?: number | undefined;
3846
+ };
3847
+ }>(this: T_11) => Omit<T_11, "data"> & {
3848
+ data: Omit<T_11["data"], "min"> & {
3849
+ min: number;
3850
+ };
3851
+ };
3852
+ };
3853
+ declare type JSONUndefined = JSONType<undefined, 'undefined'>;
3854
+ declare type JSONUnknown = JSONType<unknown, 'unknown'>;
3855
+ declare type JSONVoid = JSONType<void, 'void'>;
3856
+
3857
+ interface JSONUnion<T extends [JSONTypeAny, JSONTypeAny, ...JSONTypeAny[]]> extends JSONType<T[number]['type'], 'union'> {
3858
+ types: T;
3859
+ }
3860
+
3861
+ interface JSONTuple<T extends JSONTupleItems | [] = JSONTupleItems, Rest extends JSONTypeAny | null = null> extends JSONType<OutputTypeOfTupleWithRest<T, Rest>, 'tuple'> {
3862
+ items: T;
3863
+ restType: Rest;
3864
+ rest<Rest extends JSONTypeAny | null>(rest: Rest): JSONTuple<T, Rest>;
3865
+ deepPartial(): {
3866
+ [k in keyof T]: T[k] extends JSONTypeAny ? DeepPartial<T[k]> : never;
3867
+ } extends infer PI ? PI extends JSONTupleItems ? JSONTuple<PI> : never : never;
3868
+ }
3869
+ declare type JSONTupleItems = [JSONTypeAny, ...JSONTypeAny[]];
3870
+ declare type AssertArray<T> = T extends unknown[] ? T : never;
3871
+ declare type OutputTypeOfTuple<T extends JSONTupleItems | []> = AssertArray<{
3872
+ [k in keyof T]: T[k] extends JSONTypeAny ? T[k]['type'] : never;
3873
+ }>;
3874
+ declare type OutputTypeOfTupleWithRest<T extends JSONTupleItems | [], Rest extends JSONTypeAny | null = null> = Rest extends JSONTypeAny ? [...OutputTypeOfTuple<T>, ...Rest['type'][]] : OutputTypeOfTuple<T>;
3875
+
3876
+ interface JSONSet<Value extends JSONTypeAny> extends JSONType<Set<Value['type']>, 'set'>, SetMethods {
3877
+ data: JSONTypeData & {
3878
+ min?: number;
3879
+ max?: number;
3880
+ size?: number;
3881
+ };
3882
+ valueType: Value;
3883
+ deepPartial(): JSONSet<ReturnType<Value['deepPartial']>>;
3884
+ nonEmpty(this: JSONSet<Value>): JSONSet<Value> & {
3885
+ data: {
3886
+ min: 1;
3887
+ };
3888
+ };
3889
+ }
3890
+
3891
+ interface JSONRecord<Key extends JSONRecordKeyType, Value extends JSONTypeAny> extends JSONType<Record<Key['type'], Value['type']>, 'record'> {
3892
+ keyType: Key;
3893
+ valueType: Value;
3894
+ deepPartial(): JSONRecord<Key, ReturnType<Value['deepPartial']>>;
3895
+ }
3896
+ declare type JSONRecordKeyType = JSONType<string | number, 'string' | 'number'>;
3897
+ declare type Args<Key extends JSONRecordKeyType, Value extends JSONTypeAny> = Args2<Key, Value> | Args1<Key>;
3898
+ declare type Args2<Key extends JSONRecordKeyType, Value extends JSONTypeAny> = [
3899
+ key: Key,
3900
+ value: Value
3901
+ ];
3902
+ declare type Args1<Value extends JSONTypeAny> = [value: Value];
3903
+ declare function record<KeyType extends JSONString | JSONNumber, ValueType extends JSONTypeAny>(...args: Args<KeyType, ValueType>): JSONRecord<KeyType, ValueType>;
3904
+
3905
+ declare type JSONTypes = typeof jsonTypes;
3906
+ declare const jsonTypes: {
3907
+ set: <Value extends JSONTypeAny>(valueType: Value) => JSONSet<Value>;
3908
+ tuple: <T extends [] | JSONTupleItems, Rest extends JSONTypeAny | null = null>(items: T, rest?: Rest) => JSONTuple<T, Rest>;
3909
+ union: <T_1 extends [JSONTypeAny, JSONTypeAny, ...JSONTypeAny[]]>(types: T_1) => JSONUnion<T_1>;
3910
+ any: () => JSONAny;
3911
+ bigint: () => JSONBigInt;
3912
+ boolean: () => JSONBoolean;
3913
+ date: () => JSONDate;
3914
+ nan: () => JSONNaN;
3915
+ never: () => JSONNever;
3916
+ null: () => JSONNull;
3917
+ number: () => JSONNumber;
3918
+ string: () => JSONString;
3919
+ undefined: () => JSONUndefined;
3920
+ unknown: () => JSONUnknown;
3921
+ void: () => JSONVoid;
3922
+ array: <Type extends JSONTypeAny>(element: Type) => JSONArray<Type, "many">;
3923
+ discriminatedUnion: <Discriminator extends string, DiscriminatorValue extends Primitive, Types extends [JSONDiscriminatedObject<Discriminator, DiscriminatorValue>, JSONDiscriminatedObject<Discriminator, DiscriminatorValue>, ...JSONDiscriminatedObject<Discriminator, DiscriminatorValue>[]]>(discriminator: Discriminator, options: Types) => JSONDiscriminatedUnion<Discriminator, DiscriminatorValue, Types[number]>;
3924
+ enum: <U extends string, T_2 extends [U, ...U[]]>(options: T_2) => JSONEnum<U, T_2>;
3925
+ instanceOf: <T_3 extends new (...args: any[]) => any>(cls: T_3) => JSONInstanceOf<T_3>;
3926
+ intersection: <Left extends JSONTypeAny, Right extends JSONTypeAny>(left: Left, right: Right) => JSONIntersection<Left, Right>;
3927
+ lazy: <T_4 extends JSONTypeAny>(fn: () => T_4) => JSONLazy<T_4>;
3928
+ literal: <T_5 extends Primitive>(value: T_5) => JSONLiteral<T_5>;
3929
+ map: <Key extends JSONTypeAny, Value_1 extends JSONTypeAny>(keyType: Key, valueType: Value_1) => JSONMap<Key, Value_1>;
3930
+ nativeEnum: <T_6 extends EnumLike>(givenEnum: T_6) => JSONNativeEnum<T_6>;
3931
+ nullable: <T_7 extends JSONTypeAny>(type: T_7) => JSONNullable<T_7>;
3932
+ nullish: <T_8 extends JSONTypeAny>(type: T_8) => JSONNullish<T_8>;
3933
+ object: <T_9 extends JSONObjectShape, UnknownKeys extends UnknownKeysParam = "strip", Catchall extends JSONTypeAny = JSONTypeAny>(shape: T_9) => JSONObject<T_9, UnknownKeys, Catchall, JSONTypeAny extends Catchall ? addQuestionMarks<{ [k_1 in keyof T_9]: T_9[k_1]["type"]; }> extends infer T_10 ? { [k in keyof T_10]: addQuestionMarks<{ [k_1 in keyof T_9]: T_9[k_1]["type"]; }>[k]; } : never : (addQuestionMarks<{ [k_1 in keyof T_9]: T_9[k_1]["type"]; }> extends infer T_10 ? { [k in keyof T_10]: addQuestionMarks<{ [k_1 in keyof T_9]: T_9[k_1]["type"]; }>[k]; } : never) & {
3934
+ [k: string]: Catchall["type"];
3935
+ } extends infer T_11 ? { [k_2 in keyof T_11]: ((addQuestionMarks<{ [k_1 in keyof T_9]: T_9[k_1]["type"]; }> extends infer T_10 ? { [k in keyof T_10]: addQuestionMarks<{ [k_1 in keyof T_9]: T_9[k_1]["type"]; }>[k]; } : never) & {
3936
+ [k: string]: Catchall["type"];
3937
+ })[k_2]; } : never>;
3938
+ optional: <T_12 extends JSONTypeAny>(type: T_12) => JSONOptional<T_12>;
3939
+ record: typeof record;
3940
+ };
3941
+ declare class JSONColumn<Type extends JSONTypeAny = JSONTypeAny> extends ColumnType<Type['type'], typeof Operators.json> {
3942
+ dataType: "jsonb";
3943
+ operators: {
3944
+ jsonPath: ((key: string, value: [path: string, op: string, value: unknown], values: unknown[]) => string) & {
3945
+ type: [path: string, op: string, value: unknown];
3946
+ };
3947
+ jsonSupersetOf: ((key: string, value: unknown, values: unknown[]) => string) & {
3948
+ type: unknown;
3949
+ };
3950
+ jsonSubsetOf: ((key: string, value: unknown, values: unknown[]) => string) & {
3951
+ type: unknown;
3952
+ };
3953
+ equals: ((key: string, value: unknown, values: unknown[]) => string) & {
3954
+ type: unknown;
3955
+ };
3956
+ not: ((key: string, value: unknown, values: unknown[]) => string) & {
3957
+ type: unknown;
3958
+ };
3959
+ in: ((key: string, value: Query | unknown[] | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3960
+ type: Query | unknown[] | RawExpression<ColumnType<unknown, Operators, unknown>>;
3961
+ };
3962
+ notIn: ((key: string, value: Query | unknown[] | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3963
+ type: Query | unknown[] | RawExpression<ColumnType<unknown, Operators, unknown>>;
3964
+ };
3965
+ };
3966
+ data: ColumnData & {
3967
+ schema: Type;
3968
+ };
3969
+ constructor(schemaOrFn: Type | ((j: JSONTypes) => Type));
3970
+ }
3971
+ declare class JSONTextColumn extends ColumnType<string, typeof Operators.text> {
3972
+ dataType: "json";
3973
+ operators: {
3974
+ contains: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3975
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3976
+ };
3977
+ containsInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3978
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3979
+ };
3980
+ startsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3981
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3982
+ };
3983
+ startsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3984
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3985
+ };
3986
+ endsWith: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3987
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3988
+ };
3989
+ endsWithInsensitive: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3990
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3991
+ };
3992
+ equals: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3993
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3994
+ };
3995
+ not: ((key: string, value: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
3996
+ type: string | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
3997
+ };
3998
+ in: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
3999
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
4000
+ };
4001
+ notIn: ((key: string, value: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[], values: unknown[]) => string) & {
4002
+ type: Query | RawExpression<ColumnType<unknown, Operators, unknown>> | string[];
4003
+ };
4004
+ };
4005
+ }
4006
+
4007
+ declare type ArrayData<Item extends ColumnType> = ColumnData & {
4008
+ item: Item;
4009
+ min?: number;
4010
+ max?: number;
4011
+ length?: number;
4012
+ };
4013
+ declare type ArrayMethods = typeof arrayMethods;
4014
+ interface ArrayColumn<Item extends ColumnType> extends ColumnType<Item['type'][], typeof Operators.array>, ArrayMethods {
4015
+ }
4016
+ declare class ArrayColumn<Item extends ColumnType> extends ColumnType<Item['type'][], typeof Operators.array> {
4017
+ dataType: "array";
4018
+ operators: {
4019
+ equals: ((key: string, value: any, values: unknown[]) => string) & {
4020
+ type: any;
4021
+ };
4022
+ not: ((key: string, value: any, values: unknown[]) => string) & {
4023
+ type: any;
4024
+ };
4025
+ in: ((key: string, value: any[] | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
4026
+ type: any[] | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
4027
+ };
4028
+ notIn: ((key: string, value: any[] | Query | RawExpression<ColumnType<unknown, Operators, unknown>>, values: unknown[]) => string) & {
4029
+ type: any[] | Query | RawExpression<ColumnType<unknown, Operators, unknown>>;
4030
+ };
4031
+ };
4032
+ data: ArrayData<Item>;
4033
+ constructor(item: Item);
4034
+ toSQL(): string;
4035
+ parseFn: (input: unknown) => unknown[];
4036
+ }
4037
+
4038
+ declare type ColumnTypes = typeof columnTypes;
4039
+ declare type TableData = {
4040
+ primaryKey?: {
4041
+ columns: string[];
4042
+ options?: {
4043
+ name?: string;
4044
+ };
4045
+ };
4046
+ indexes: {
4047
+ columns: IndexColumnOptions[];
4048
+ options: IndexOptions;
4049
+ }[];
4050
+ foreignKeys: {
4051
+ columns: string[];
4052
+ fnOrTable: (() => ForeignKeyModel) | string;
4053
+ foreignColumns: string[];
4054
+ options: ForeignKeyOptions;
4055
+ }[];
4056
+ };
4057
+ declare const newTableData: () => TableData;
4058
+ declare const getTableData: () => TableData;
4059
+ declare const resetTableData: (data?: TableData) => void;
4060
+ declare const getColumnTypes: <CT extends ColumnTypesBase, Shape extends ColumnsShape>(types: CT, fn: (t: CT) => Shape, data?: TableData) => Shape;
4061
+ declare const columnTypes: {
4062
+ smallint: () => SmallIntColumn;
4063
+ integer: () => IntegerColumn;
4064
+ bigint: () => BigIntColumn;
4065
+ numeric: <Precision extends number | undefined = undefined, Scale extends number | undefined = undefined>(precision?: Precision | undefined, scale?: Scale | undefined) => DecimalColumn<Precision, Scale>;
4066
+ decimal: <Precision_1 extends number | undefined = undefined, Scale_1 extends number | undefined = undefined>(precision?: Precision_1 | undefined, scale?: Scale_1 | undefined) => DecimalColumn<Precision_1, Scale_1>;
4067
+ real: () => RealColumn;
4068
+ doublePrecision: () => DoublePrecisionColumn;
4069
+ smallSerial: () => SmallSerialColumn;
4070
+ serial: () => SerialColumn;
4071
+ bigSerial: () => BigSerialColumn;
4072
+ money: () => MoneyColumn;
4073
+ varchar: <Limit extends number | undefined = undefined>(limit?: Limit | undefined) => VarCharColumn<Limit>;
4074
+ char: <Limit_1 extends number | undefined = undefined>(limit?: Limit_1 | undefined) => CharColumn<Limit_1>;
4075
+ text: () => TextColumn;
4076
+ string: () => TextColumn;
4077
+ bytea: () => ByteaColumn;
4078
+ date: () => DateColumn;
4079
+ timestamp: <Precision_2 extends number | undefined = undefined>(precision?: Precision_2 | undefined) => TimestampColumn<Precision_2>;
4080
+ timestampWithTimeZone: <Precision_3 extends number | undefined = undefined>(precision?: Precision_3 | undefined) => TimestampWithTimeZoneColumn<Precision_3>;
4081
+ time: <Precision_4 extends number | undefined = undefined>(precision?: Precision_4 | undefined) => TimeColumn<Precision_4>;
4082
+ timeWithTimeZone: <Precision_5 extends number | undefined = undefined>(precision?: Precision_5 | undefined) => TimeWithTimeZoneColumn<Precision_5>;
4083
+ interval: <Fields extends string | undefined = undefined, Precision_6 extends number | undefined = undefined>(fields?: Fields | undefined, precision?: Precision_6 | undefined) => IntervalColumn<Fields, Precision_6>;
4084
+ boolean: () => BooleanColumn;
4085
+ enum: <U extends string, T extends [U, ...U[]]>(dataType: string, type: T) => EnumColumn<U, T>;
4086
+ point: () => PointColumn;
4087
+ line: () => LineColumn;
4088
+ lseg: () => LsegColumn;
4089
+ box: () => BoxColumn;
4090
+ path: () => PathColumn;
4091
+ polygon: () => PolygonColumn;
4092
+ circle: () => CircleColumn;
4093
+ cidr: () => CidrColumn;
4094
+ inet: () => InetColumn;
4095
+ macaddr: () => MacAddrColumn;
4096
+ macaddr8: () => MacAddr8Column;
4097
+ bit: <Length extends number>(length: Length) => BitColumn<Length>;
4098
+ bitVarying: <Length_1 extends number | undefined = undefined>(length?: Length_1 | undefined) => BitVaryingColumn<Length_1 | undefined>;
4099
+ tsvector: () => TsVectorColumn;
4100
+ tsquery: () => TsQueryColumn;
4101
+ uuid: () => UUIDColumn;
4102
+ xml: () => XMLColumn;
4103
+ json: <Type extends JSONTypeAny>(schemaOrFn: Type | ((j: JSONTypes) => Type)) => JSONColumn<Type>;
4104
+ jsonText: () => JSONTextColumn;
4105
+ array: <Item extends ColumnType<unknown, Operators, unknown>>(item: Item) => ArrayColumn<Item>;
4106
+ timestamps: () => {
4107
+ createdAt: TimestampColumn<undefined>;
4108
+ updatedAt: TimestampColumn<undefined>;
4109
+ };
4110
+ primaryKey(columns: string[], options?: {
4111
+ name?: string;
4112
+ }): {};
4113
+ index(columns: MaybeArray<string | IndexColumnOptions>, options?: IndexOptions): {};
4114
+ unique(columns: MaybeArray<string | IndexColumnOptions>, options?: IndexOptions): {};
4115
+ foreignKey: typeof foreignKey;
4116
+ };
4117
+ declare function foreignKey<Model extends ForeignKeyModelWithColumns, Columns extends [ColumnNameOfModel<Model>, ...ColumnNameOfModel<Model>[]]>(columns: string[], fn: () => Model, foreignColumns: Columns, options?: ForeignKeyOptions): EmptyObject;
4118
+ declare function foreignKey<Table extends string, Columns extends [string, ...string[]]>(columns: string[], table: Table, foreignColumns: Columns, options?: ForeignKeyOptions): EmptyObject;
4119
+
4120
+ declare const cloneInstance: <T>(instance: T) => T;
4121
+ declare const assignMethodsToClass: <Methods extends Record<string, unknown>>(klass: {
4122
+ prototype: unknown;
4123
+ }, methods: Methods) => void;
4124
+
4125
+ declare const utils_cloneInstance: typeof cloneInstance;
4126
+ declare const utils_assignMethodsToClass: typeof assignMethodsToClass;
4127
+ declare namespace utils {
4128
+ export {
4129
+ utils_cloneInstance as cloneInstance,
4130
+ utils_assignMethodsToClass as assignMethodsToClass,
4131
+ };
4132
+ }
4133
+
4134
+ declare type Value = any;
4135
+ declare const quote: (value: Value) => string;
4136
+
4137
+ declare const removeFromQuery: <T extends Query>(q: T, key: string) => T;
4138
+ declare const pushQueryArray: <T extends {
4139
+ query: QueryData;
4140
+ }>(q: T, key: string, value: unknown) => T;
4141
+ declare const pushQueryValue: <T extends {
4142
+ query: QueryData;
4143
+ }>(q: T, key: string, value: unknown) => T;
4144
+ declare const setQueryObjectValue: <T extends {
4145
+ query: QueryData;
4146
+ }>(q: T, object: string, key: string, value: unknown) => T;
4147
+
4148
+ declare class NotFoundError extends Error {
4149
+ constructor(message?: string);
4150
+ }
4151
+ declare class MoreThanOneRowError extends Error {
4152
+ }
4153
+
4154
+ export { Adapter, AdapterOptions, AddQueryJoinedTable, AddQuerySelect, AddQueryWith, AfterCallback, Aggregate, Aggregate1ArgumentTypes, AggregateArg, AggregateItem, AggregateItemArg, AggregateItemOptions, AggregateOptions, AliasOrTable, AnyColumnType, AnyColumnTypeCreator, ArrayColumn, ArrayData, ArrayOfColumnsObjects, BaseNumberData, BaseRelation, BaseStringData, BeforeCallback, BelongsToNestedInsert, BelongsToNestedUpdate, BelongsToRelation, BigIntColumn, BigSerialColumn, BitColumn, BitVaryingColumn, BooleanColumn, BooleanExpression, BoxColumn, ByteaColumn, CharColumn, CidrColumn, CircleColumn, Clear, ClearStatement, CoalesceString, ColumnData, ColumnInfo, ColumnInfoMethods, ColumnInfoQueryData, ColumnInput, ColumnNameOfModel, ColumnOperators, ColumnOutput, ColumnParser, ColumnShapeInput, ColumnShapeOutput, ColumnType, ColumnTypes, ColumnTypesBase, ColumnsObject, ColumnsParsers, ColumnsShape, CommonQueryData, DateBaseColumn, DateColumn, DateColumnData, DateTimeBaseClass, DateTimeColumnData, DateTimeWithTimeZoneBaseClass, Db, DbOptions, DbTableOptions, DecimalBaseColumn, DecimalColumn, DecimalColumnData, DefaultSelectColumns, Delete, DeleteQueryData, DoublePrecisionColumn, DropMode, EMPTY_OBJECT, EmptyObject, EnumColumn, Expression, ExpressionOfType, ExpressionOutput, FilterTuple, For, ForeignKey, ForeignKeyModel, ForeignKeyModelWithColumns, ForeignKeyOptions, From, GetArg, GetTypeOrRaw, GetTypesOrRaw, HasAndBelongsToManyRelation, HasManyNestedInsert, HasManyNestedUpdate, HasManyRelation, HasOneNestedInsert, HasOneNestedUpdate, HasOneRelation, Having, HavingArg, HavingItem, IndexColumnOptions, IndexOptions, InetColumn, Insert, InsertData, InsertQueryData, IntegerBaseColumn, IntegerColumn, IntervalColumn, JSONColumn, JSONTextColumn, JSONTypes, Join, JoinArgs, JoinCallback, JoinCallbackArg, JoinItem, JoinedTablesBase, Json, JsonItem, LimitedTextBaseColumn, LineColumn, LsegColumn, MacAddr8Column, MacAddrColumn, MaybeArray, MoneyColumn, MoreThanOneRowError, NestedInsertItem, NestedInsertManyItems, NestedInsertOneItem, NestedUpdateItem, NestedUpdateManyItems, NestedUpdateOneItem, NotFoundError, NullableColumn, NumberAsStringBaseColumn, NumberBaseColumn, NumberColumn, NumberColumnData, NumberExpression, OnConflictItem, OnConflictMergeUpdate, OnConflictQueryBuilder, OnQueryBuilder, Operator, Operators, OptionalKeys, OrderArg, OrderItem, PathColumn, PointColumn, PolygonColumn, PropertyKeyUnionToArray, Query, QueryArraysResult, QueryBase, QueryCallbacks, QueryData, QueryGet, QueryInput, QueryLog, QueryLogObject, QueryLogOptions, QueryLogger, QueryMethods, QueryResult, QueryResultRow, QueryReturnType, QuerySelectAll, QueryUpsert, QueryWithTable, RawExpression, RealColumn, Relation, RelationQuery, RelationQueryBase, RelationsBase, Select, SelectAgg, SelectArg, SelectFunctionItem, SelectItem, SelectQueryData, Selectable, SelectableBase, SerialColumn, SetOptional, SetQueryJoinedTables, SetQueryReturns, SetQueryReturnsAll, SetQueryReturnsColumnInfo, SetQueryReturnsOne, SetQueryReturnsOneOptional, SetQueryReturnsPluck, SetQueryReturnsRowCount, SetQueryReturnsRows, SetQueryReturnsValue, SetQueryReturnsValueOptional, SetQueryReturnsVoid, SetQueryTableAlias, SetQueryWindows, SetQueryWith, SimpleSpread, SingleColumnIndexOptions, SmallIntColumn, SmallSerialColumn, SortDir, Spread, Sql, StringColumn, StringExpression, StringKey, TableData, TableSchema, TextBaseColumn, TextColumn, TextColumnData, Then, ThenResult, TimeColumn, TimeInterval, TimeWithTimeZoneColumn, TimestampColumn, TimestampWithTimeZoneColumn, Transaction, TransactionAdapter, TruncateQueryData, TsQueryColumn, TsVectorColumn, TypeParsers, UUIDColumn, Union, UnionArg, UnionItem, UnionToArray, UnionToIntersection, UnionToOvlds, Update, UpdateData, UpdateQueryData, UpsertData, UpsertResult, UpsertThis, ValidationContext, VarCharColumn, Where, WhereArg, WhereInArg, WhereInColumn, WhereInItem, WhereInValues, WhereItem, WhereJsonPathEqualsItem, WhereOnItem, WhereQueryBuilder, WhereResult, WindowArg, WindowArgDeclaration, WindowDeclaration, WindowFunctionOptions, WindowItem, With, WithDataBase, WithDataItem, WithItem, WithOptions, XMLColumn, addOr, addOrNot, addParserForRawExpression, addParserForSelectItem, addParserToQuery, addQueryOn, addQueryOrOn, addWhere, addWhereIn, addWhereNot, aggregate1FunctionNames, applyMixins, columnTypes, utils as columnUtils, createDb, createOperator, defaultsKey, emptyObject, getClonedQueryData, getColumnTypes, getQueryAs, getQueryParsers, getRaw, getTableData, getValueKey, handleResult, isRaw, isRequiredRelationKey, joinTruthy, jsonTypes, logColors, logParamToLogObject, newTableData, noop, parseRecord, parseResult, processSelectArg, pushQueryArray, pushQueryOn, pushQueryOrOn, pushQueryValue, queryKeysOfNotSimpleQuery, queryMethodByReturnType, quote, raw, relationQueryKey, removeFromQuery, resetTableData, setQueryObjectValue, toArray, toSql };