bun-query-builder 0.1.12 → 0.1.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -468
- package/dist/__tests__/type-narrowing-compile.d.ts +1 -0
- package/dist/__tests__/type-narrowing.test.d.ts +1 -0
- package/dist/actions/benchmark.d.ts +1 -1
- package/dist/actions/cache.d.ts +1 -1
- package/dist/actions/console.d.ts +1 -1
- package/dist/actions/data.d.ts +2 -1
- package/dist/actions/db-info.d.ts +1 -1
- package/dist/actions/db-optimize.d.ts +1 -1
- package/dist/actions/db-wipe.d.ts +1 -1
- package/dist/actions/explain.d.ts +1 -1
- package/dist/actions/file.d.ts +1 -1
- package/dist/actions/index.d.ts +1 -1
- package/dist/actions/inspect.d.ts +1 -1
- package/dist/actions/introspect.d.ts +1 -1
- package/dist/actions/make-model.d.ts +1 -1
- package/dist/actions/migrate-generate.d.ts +1 -1
- package/dist/actions/migrate-rollback.d.ts +1 -1
- package/dist/actions/migrate-status.d.ts +1 -1
- package/dist/actions/migrate.d.ts +1 -1
- package/dist/actions/model-show.d.ts +1 -1
- package/dist/actions/ping.d.ts +1 -1
- package/dist/actions/query-explain-all.d.ts +1 -1
- package/dist/actions/relation-diagram.d.ts +1 -1
- package/dist/actions/seed.d.ts +1 -1
- package/dist/actions/sql.d.ts +1 -1
- package/dist/actions/unsafe.d.ts +1 -1
- package/dist/actions/validate.d.ts +1 -1
- package/dist/actions/wait-ready.d.ts +1 -1
- package/dist/bin/cli.js +25785 -0
- package/dist/browser.d.ts +118 -44
- package/dist/client.d.ts +22 -56
- package/dist/config.d.ts +16 -3
- package/dist/db.d.ts +5 -4
- package/dist/drivers/dynamodb.d.ts +3 -13
- package/dist/drivers/index.d.ts +2 -1
- package/dist/drivers/mysql.d.ts +3 -9
- package/dist/drivers/postgres.d.ts +3 -9
- package/dist/drivers/sqlite.d.ts +3 -9
- package/dist/dynamodb/client.d.ts +1 -5
- package/dist/dynamodb/index.d.ts +7 -28
- package/dist/dynamodb/migration-driver.d.ts +2 -23
- package/dist/dynamodb/migration-tracker.d.ts +4 -6
- package/dist/dynamodb/migrations.d.ts +4 -1
- package/dist/dynamodb/model.d.ts +5 -13
- package/dist/dynamodb-client.d.ts +3 -23
- package/dist/dynamodb-single-table.d.ts +22 -26
- package/dist/dynamodb-tooling-adapter.d.ts +2 -33
- package/dist/factory.d.ts +3 -3
- package/dist/index.d.ts +24 -1
- package/dist/loader.d.ts +1 -1
- package/dist/meta.d.ts +1 -1
- package/dist/migrations.d.ts +4 -4
- package/dist/model.d.ts +61 -3
- package/dist/orm.d.ts +130 -82
- package/dist/schema.d.ts +32 -25
- package/dist/seeder.d.ts +3 -1
- package/dist/src/browser.js +824 -0
- package/dist/src/dynamodb/index.js +2301 -0
- package/dist/{index.js → src/index.js} +21466 -20710
- package/dist/type-inference.d.ts +326 -0
- package/dist/types.d.ts +1 -5
- package/package.json +3 -7
package/dist/browser.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { BrowserConfig } from './types';
|
|
2
2
|
import type { Faker } from 'ts-mocker';
|
|
3
|
+
// Export types for external use
|
|
3
4
|
export type { BrowserModelInstance, BrowserModelQueryBuilder };
|
|
4
5
|
/**
|
|
5
6
|
* Configure the browser query client
|
|
@@ -55,28 +56,38 @@ export declare function createBrowserDb<Tables extends Record<string, any>>(): {
|
|
|
55
56
|
export declare function createBrowserModel<const TDef extends BrowserModelDefinition>(definition: TDef): void;
|
|
56
57
|
/**
|
|
57
58
|
* Auth helpers for browser
|
|
59
|
+
* @defaultValue
|
|
60
|
+
* ```ts
|
|
61
|
+
* {
|
|
62
|
+
* async login: (credentials: { email: string, password: string }) => unknown,
|
|
63
|
+
* async register: (data: { name: string, email: string, password: string }) => unknown,
|
|
64
|
+
* async logout: () => unknown,
|
|
65
|
+
* async user: () => unknown,
|
|
66
|
+
* async check: () => unknown
|
|
67
|
+
* }
|
|
68
|
+
* ```
|
|
58
69
|
*/
|
|
59
70
|
export declare const browserAuth: {
|
|
60
71
|
/**
|
|
61
72
|
* Login and store token
|
|
62
73
|
*/
|
|
63
|
-
async login(credentials: { email: string, password: string })
|
|
74
|
+
async login: (credentials: { email: string, password: string }) => unknown;
|
|
64
75
|
/**
|
|
65
76
|
* Register a new user
|
|
66
77
|
*/
|
|
67
|
-
async register(data: { name: string, email: string, password: string })
|
|
78
|
+
async register: (data: { name: string, email: string, password: string }) => unknown;
|
|
68
79
|
/**
|
|
69
80
|
* Logout and clear token
|
|
70
81
|
*/
|
|
71
|
-
async logout()
|
|
82
|
+
async logout: () => unknown;
|
|
72
83
|
/**
|
|
73
84
|
* Get current authenticated user
|
|
74
85
|
*/
|
|
75
|
-
async user()
|
|
86
|
+
async user: () => unknown;
|
|
76
87
|
/**
|
|
77
88
|
* Check if user is authenticated
|
|
78
89
|
*/
|
|
79
|
-
async check()
|
|
90
|
+
async check: () => unknown;
|
|
80
91
|
/**
|
|
81
92
|
* Get the current token
|
|
82
93
|
*/
|
|
@@ -100,22 +111,54 @@ export declare interface BrowserTypedAttribute<T = unknown> {
|
|
|
100
111
|
}
|
|
101
112
|
// Base model definition for browser
|
|
102
113
|
export declare interface BrowserModelDefinition {
|
|
103
|
-
name: string
|
|
104
|
-
table: string
|
|
105
|
-
primaryKey?: string
|
|
106
|
-
traits?: {
|
|
114
|
+
readonly name: string
|
|
115
|
+
readonly table: string
|
|
116
|
+
readonly primaryKey?: string
|
|
117
|
+
readonly traits?: {
|
|
107
118
|
readonly useUuid?: boolean
|
|
108
|
-
readonly useTimestamps?: boolean
|
|
109
|
-
readonly
|
|
110
|
-
readonly
|
|
111
|
-
|
|
119
|
+
readonly useTimestamps?: boolean | object
|
|
120
|
+
readonly timestampable?: boolean | object
|
|
121
|
+
readonly useSoftDeletes?: boolean | object
|
|
122
|
+
readonly softDeletable?: boolean | object
|
|
123
|
+
readonly useApi?: boolean | {
|
|
124
|
+
readonly uri?: string
|
|
112
125
|
readonly routes?: readonly string[]
|
|
126
|
+
readonly middleware?: readonly string[]
|
|
113
127
|
}
|
|
128
|
+
readonly useAuth?: boolean | object
|
|
129
|
+
readonly billable?: boolean | object
|
|
130
|
+
readonly useSearch?: boolean | object
|
|
131
|
+
readonly useSeeder?: boolean | object
|
|
132
|
+
readonly seedable?: boolean | object
|
|
133
|
+
readonly authenticatable?: boolean | object
|
|
134
|
+
readonly observe?: boolean | readonly string[]
|
|
135
|
+
readonly likeable?: boolean | object
|
|
136
|
+
readonly taggable?: boolean
|
|
137
|
+
readonly categorizable?: boolean
|
|
138
|
+
readonly commentables?: boolean
|
|
139
|
+
readonly useActivityLog?: boolean | object
|
|
140
|
+
readonly useSocials?: readonly string[]
|
|
114
141
|
}
|
|
115
|
-
|
|
142
|
+
readonly belongsTo?: readonly string[] | Readonly<Record<string, string>>
|
|
143
|
+
readonly hasMany?: readonly string[] | Readonly<Record<string, string>>
|
|
144
|
+
readonly hasOne?: readonly string[] | Readonly<Record<string, string>>
|
|
145
|
+
readonly belongsToMany?: readonly (string | object)[] | Readonly<Record<string, string | object>>
|
|
146
|
+
readonly hasOneThrough?: readonly (string | object)[] | Readonly<Record<string, string | object>>
|
|
147
|
+
readonly hasManyThrough?: readonly (string | object)[] | Readonly<Record<string, string | object>>
|
|
148
|
+
readonly attributes: {
|
|
116
149
|
readonly [key: string]: BrowserTypedAttribute<unknown>
|
|
117
150
|
}
|
|
118
151
|
}
|
|
152
|
+
declare interface WhereClause {
|
|
153
|
+
column: string
|
|
154
|
+
operator: WhereOperator
|
|
155
|
+
value: unknown
|
|
156
|
+
boolean: 'and' | 'or'
|
|
157
|
+
}
|
|
158
|
+
declare interface OrderByClause {
|
|
159
|
+
column: string
|
|
160
|
+
direction: 'asc' | 'desc'
|
|
161
|
+
}
|
|
119
162
|
declare interface QueryState {
|
|
120
163
|
table: string
|
|
121
164
|
wheres: WhereClause[]
|
|
@@ -137,13 +180,13 @@ declare type PrimitiveTypeMap = {
|
|
|
137
180
|
declare type InferType<T> = T extends keyof PrimitiveTypeMap ? PrimitiveTypeMap[T] :
|
|
138
181
|
T extends readonly (infer U)[] ? U :
|
|
139
182
|
T extends (infer U)[] ? U :
|
|
140
|
-
unknown
|
|
183
|
+
unknown;
|
|
141
184
|
// Extract attribute keys from definition
|
|
142
|
-
declare type BrowserAttributeKeys<TDef extends BrowserModelDefinition> = keyof TDef['attributes'] & string
|
|
185
|
+
declare type BrowserAttributeKeys<TDef extends BrowserModelDefinition> = keyof TDef['attributes'] & string;
|
|
143
186
|
// Infer single attribute type
|
|
144
187
|
declare type InferBrowserAttributeType<TAttr> = TAttr extends { type: infer T } ? InferType<T> :
|
|
145
188
|
TAttr extends { factory: (faker: unknown) => infer R } ? R :
|
|
146
|
-
unknown
|
|
189
|
+
unknown;
|
|
147
190
|
// Build the full attributes type from definition
|
|
148
191
|
declare type InferBrowserModelAttributes<TDef extends BrowserModelDefinition> = {
|
|
149
192
|
[K in BrowserAttributeKeys<TDef>]: InferBrowserAttributeType<TDef['attributes'][K]>
|
|
@@ -151,26 +194,69 @@ declare type InferBrowserModelAttributes<TDef extends BrowserModelDefinition> =
|
|
|
151
194
|
// System fields added by traits
|
|
152
195
|
declare type BrowserSystemFields<TDef extends BrowserModelDefinition> = { id: number } &
|
|
153
196
|
(TDef['traits'] extends { useUuid: true } ? { uuid: string } : {}) &
|
|
154
|
-
(TDef['traits'] extends { useTimestamps: true } ? { created_at: string; updated_at: string } : {}) &
|
|
155
|
-
(TDef['traits'] extends {
|
|
197
|
+
(TDef['traits'] extends { useTimestamps: true } ? { created_at: string; updated_at: string | null } : {}) &
|
|
198
|
+
(TDef['traits'] extends { timestampable: true | object } ? { created_at: string; updated_at: string | null } : {}) &
|
|
199
|
+
(TDef['traits'] extends { useSoftDeletes: true } ? { deleted_at: string | null } : {}) &
|
|
200
|
+
(TDef['traits'] extends { softDeletable: true | object } ? { deleted_at: string | null } : {}) &
|
|
201
|
+
(TDef['traits'] extends { useAuth: true | object } ? { two_factor_secret: string | null; public_key: string | null } : {}) &
|
|
202
|
+
(TDef['traits'] extends { billable: true | object } ? { stripe_id: string | null } : {});
|
|
156
203
|
// Complete model type
|
|
157
|
-
declare type BrowserModelAttributes<TDef extends BrowserModelDefinition> = InferBrowserModelAttributes<TDef> & BrowserSystemFields<TDef
|
|
204
|
+
declare type BrowserModelAttributes<TDef extends BrowserModelDefinition> = InferBrowserModelAttributes<TDef> & BrowserSystemFields<TDef>;
|
|
158
205
|
// All valid column names
|
|
159
206
|
declare type BrowserColumnName<TDef extends BrowserModelDefinition> = | BrowserAttributeKeys<TDef>
|
|
160
207
|
| 'id'
|
|
161
208
|
| (TDef['traits'] extends { useUuid: true } ? 'uuid' : never)
|
|
162
209
|
| (TDef['traits'] extends { useTimestamps: true } ? 'created_at' | 'updated_at' : never)
|
|
210
|
+
| (TDef['traits'] extends { timestampable: true | object } ? 'created_at' | 'updated_at' : never)
|
|
163
211
|
| (TDef['traits'] extends { useSoftDeletes: true } ? 'deleted_at' : never)
|
|
212
|
+
| (TDef['traits'] extends { softDeletable: true | object } ? 'deleted_at' : never)
|
|
213
|
+
| (TDef['traits'] extends { useAuth: true | object } ? 'two_factor_secret' | 'public_key' : never)
|
|
214
|
+
| (TDef['traits'] extends { billable: true | object } ? 'stripe_id' : never);
|
|
164
215
|
// Hidden fields
|
|
165
216
|
declare type BrowserHiddenKeys<TDef extends BrowserModelDefinition> = {
|
|
166
217
|
[K in BrowserAttributeKeys<TDef>]: TDef['attributes'][K] extends { hidden: true } ? K : never
|
|
167
|
-
}[BrowserAttributeKeys<TDef>]
|
|
218
|
+
}[BrowserAttributeKeys<TDef>];
|
|
168
219
|
// Fillable fields
|
|
169
220
|
declare type BrowserFillableKeys<TDef extends BrowserModelDefinition> = {
|
|
170
221
|
[K in BrowserAttributeKeys<TDef>]: TDef['attributes'][K] extends { fillable: true } ? K : never
|
|
171
|
-
}[BrowserAttributeKeys<TDef>]
|
|
222
|
+
}[BrowserAttributeKeys<TDef>];
|
|
223
|
+
// Numeric columns — constrains aggregate-like column parameters
|
|
224
|
+
declare type BrowserNumericColumns<TDef extends BrowserModelDefinition> = {
|
|
225
|
+
[K in BrowserAttributeKeys<TDef>]: TDef['attributes'][K] extends { type: 'number' } ? K : never
|
|
226
|
+
}[BrowserAttributeKeys<TDef>];
|
|
227
|
+
// Relation name inference for browser models (supports both array and object syntax)
|
|
228
|
+
declare type BrowserBelongsToNames<TDef> = (TDef extends { belongsTo: readonly (infer R)[] }
|
|
229
|
+
? R extends string ? Lowercase<R> : never : never)
|
|
230
|
+
| (TDef extends { belongsTo: Readonly<Record<infer K, unknown>> }
|
|
231
|
+
? K extends string ? K : never : never);
|
|
232
|
+
declare type BrowserHasManyNames<TDef> = (TDef extends { hasMany: readonly (infer R)[] }
|
|
233
|
+
? R extends string ? Lowercase<R> : never : never)
|
|
234
|
+
| (TDef extends { hasMany: Readonly<Record<infer K, unknown>> }
|
|
235
|
+
? K extends string ? K : never : never);
|
|
236
|
+
declare type BrowserHasOneNames<TDef> = (TDef extends { hasOne: readonly (infer R)[] }
|
|
237
|
+
? R extends string ? Lowercase<R> : never : never)
|
|
238
|
+
| (TDef extends { hasOne: Readonly<Record<infer K, unknown>> }
|
|
239
|
+
? K extends string ? K : never : never);
|
|
240
|
+
declare type BrowserBelongsToManyNames<TDef> = (TDef extends { belongsToMany: readonly (infer R)[] }
|
|
241
|
+
? R extends string ? Lowercase<R> : R extends { model: infer M extends string } ? Lowercase<M> : never : never)
|
|
242
|
+
| (TDef extends { belongsToMany: Readonly<Record<infer K, unknown>> }
|
|
243
|
+
? K extends string ? K : never : never);
|
|
244
|
+
declare type BrowserHasOneThroughNames<TDef> = (TDef extends { hasOneThrough: readonly (infer R)[] }
|
|
245
|
+
? R extends string ? Lowercase<R> : R extends { model: infer M extends string } ? Lowercase<M> : never : never)
|
|
246
|
+
| (TDef extends { hasOneThrough: Readonly<Record<infer K, unknown>> }
|
|
247
|
+
? K extends string ? K : never : never);
|
|
248
|
+
declare type BrowserHasManyThroughNames<TDef> = (TDef extends { hasManyThrough: readonly (infer R)[] }
|
|
249
|
+
? R extends string ? Lowercase<R> : R extends { model: infer M extends string } ? Lowercase<M> : never : never)
|
|
250
|
+
| (TDef extends { hasManyThrough: Readonly<Record<infer K, unknown>> }
|
|
251
|
+
? K extends string ? K : never : never);
|
|
252
|
+
declare type BrowserRelationNames<TDef> = | BrowserBelongsToNames<TDef>
|
|
253
|
+
| BrowserHasManyNames<TDef>
|
|
254
|
+
| BrowserHasOneNames<TDef>
|
|
255
|
+
| BrowserBelongsToManyNames<TDef>
|
|
256
|
+
| BrowserHasOneThroughNames<TDef>
|
|
257
|
+
| BrowserHasManyThroughNames<TDef>;
|
|
172
258
|
// Types for query building
|
|
173
|
-
export type WhereOperator = '=' | '!=' | '<' | '>' | '<=' | '>=' | 'like' | 'in' | 'not in' | 'is' | 'is not'
|
|
259
|
+
export type WhereOperator = '=' | '!=' | '<' | '>' | '<=' | '>=' | 'like' | 'in' | 'not in' | 'is' | 'is not';
|
|
174
260
|
/**
|
|
175
261
|
* Custom error class for browser query errors
|
|
176
262
|
*/
|
|
@@ -183,9 +269,8 @@ export declare class BrowserQueryError extends Error {
|
|
|
183
269
|
* Fluent API that builds queries and executes them via fetch
|
|
184
270
|
*/
|
|
185
271
|
export declare class BrowserQueryBuilder<T = any> {
|
|
186
|
-
private state: QueryState;
|
|
187
272
|
constructor(table: string);
|
|
188
|
-
select(columns: string[]): this;
|
|
273
|
+
select(...columns: string[]): this;
|
|
189
274
|
where(column: string, operatorOrValue: WhereOperator | any, value?: any): this;
|
|
190
275
|
orWhere(column: string, operatorOrValue: WhereOperator | any, value?: any): this;
|
|
191
276
|
andWhere(column: string, operatorOrValue: WhereOperator | any, value?: any): this;
|
|
@@ -201,9 +286,7 @@ export declare class BrowserQueryBuilder<T = any> {
|
|
|
201
286
|
offset(count: number): this;
|
|
202
287
|
skip(count: number): this;
|
|
203
288
|
take(count: number): this;
|
|
204
|
-
with(relations: string[]): this;
|
|
205
|
-
private buildQueryParams(): URLSearchParams;
|
|
206
|
-
private buildUrl(path?: string | number): string;
|
|
289
|
+
with(...relations: string[]): this;
|
|
207
290
|
get(): Promise<T[]>;
|
|
208
291
|
first(): Promise<T | null>;
|
|
209
292
|
firstOrFail(): Promise<T>;
|
|
@@ -229,26 +312,18 @@ export declare class BrowserQueryBuilder<T = any> {
|
|
|
229
312
|
* Browser Model Instance - represents a single record with type-safe access
|
|
230
313
|
*/
|
|
231
314
|
declare class BrowserModelInstance<TDef extends BrowserModelDefinition, TSelected extends BrowserColumnName<TDef> = BrowserColumnName<TDef>> {
|
|
232
|
-
private _attributes: Record<string, unknown>;
|
|
233
|
-
private _definition: TDef;
|
|
234
315
|
constructor(definition: TDef, attributes?: Partial<BrowserModelAttributes<TDef>>);
|
|
235
316
|
get<K extends TSelected>(key: K): K extends keyof BrowserModelAttributes<TDef> ? BrowserModelAttributes<TDef>[K] : never;
|
|
236
317
|
set<K extends BrowserAttributeKeys<TDef>>(key: K, value: BrowserModelAttributes<TDef>[K]): void;
|
|
318
|
+
get attributes(): Pick<BrowserModelAttributes<TDef>, TSelected & keyof BrowserModelAttributes<TDef>>;
|
|
319
|
+
get id(): number;
|
|
237
320
|
toJSON(): Omit<Pick<BrowserModelAttributes<TDef>, TSelected & keyof BrowserModelAttributes<TDef>>, BrowserHiddenKeys<TDef>>;
|
|
238
321
|
}
|
|
239
322
|
/**
|
|
240
323
|
* Typed Browser Query Builder with precise type narrowing
|
|
241
324
|
*/
|
|
242
325
|
declare class BrowserModelQueryBuilder<TDef extends BrowserModelDefinition, TSelected extends BrowserColumnName<TDef> = BrowserColumnName<TDef>> {
|
|
243
|
-
private _definition: TDef;
|
|
244
|
-
private _wheres: { column: string; operator: WhereOperator; value: unknown; boolean: 'and' | 'or' }[];
|
|
245
|
-
private _orderBy: { column: string; direction: 'asc' | 'desc' }[];
|
|
246
|
-
private _limit?: number;
|
|
247
|
-
private _offset?: number;
|
|
248
|
-
private _select: string[];
|
|
249
|
-
private _withRelations: string[];
|
|
250
326
|
constructor(definition: TDef);
|
|
251
|
-
private getTablePath(): string;
|
|
252
327
|
where<K extends BrowserColumnName<TDef>>(column: K, operatorOrValue: WhereOperator | (K extends keyof BrowserModelAttributes<TDef> ? BrowserModelAttributes<TDef>[K] : unknown), value?: K extends keyof BrowserModelAttributes<TDef> ? BrowserModelAttributes<TDef>[K] : unknown): BrowserModelQueryBuilder<TDef, TSelected>;
|
|
253
328
|
orWhere<K extends BrowserColumnName<TDef>>(column: K, operatorOrValue: WhereOperator | (K extends keyof BrowserModelAttributes<TDef> ? BrowserModelAttributes<TDef>[K] : unknown), value?: K extends keyof BrowserModelAttributes<TDef> ? BrowserModelAttributes<TDef>[K] : unknown): BrowserModelQueryBuilder<TDef, TSelected>;
|
|
254
329
|
whereIn<K extends BrowserColumnName<TDef>>(column: K, values: (K extends keyof BrowserModelAttributes<TDef> ? BrowserModelAttributes<TDef>[K] : unknown)[]): BrowserModelQueryBuilder<TDef, TSelected>;
|
|
@@ -263,12 +338,10 @@ declare class BrowserModelQueryBuilder<TDef extends BrowserModelDefinition, TSel
|
|
|
263
338
|
take(count: number): BrowserModelQueryBuilder<TDef, TSelected>;
|
|
264
339
|
offset(count: number): BrowserModelQueryBuilder<TDef, TSelected>;
|
|
265
340
|
skip(count: number): BrowserModelQueryBuilder<TDef, TSelected>;
|
|
266
|
-
select<K extends BrowserColumnName<TDef>>(columns: K[]): BrowserModelQueryBuilder<TDef, K>;
|
|
267
|
-
with(relations:
|
|
341
|
+
select<K extends BrowserColumnName<TDef>>(...columns: K[]): BrowserModelQueryBuilder<TDef, K>;
|
|
342
|
+
with<R extends BrowserRelationNames<TDef> extends never ? string : BrowserRelationNames<TDef>>(...relations: R[]): BrowserModelQueryBuilder<TDef, TSelected>;
|
|
268
343
|
latest(column?: BrowserColumnName<TDef>): BrowserModelQueryBuilder<TDef, TSelected>;
|
|
269
344
|
oldest(column?: BrowserColumnName<TDef>): BrowserModelQueryBuilder<TDef, TSelected>;
|
|
270
|
-
private buildQueryParams(): URLSearchParams;
|
|
271
|
-
private buildUrl(path?: string | number): string;
|
|
272
345
|
get(): Promise<BrowserModelInstance<TDef, TSelected>[]>;
|
|
273
346
|
first(): Promise<BrowserModelInstance<TDef, TSelected> | null>;
|
|
274
347
|
firstOrFail(): Promise<BrowserModelInstance<TDef, TSelected>>;
|
|
@@ -277,7 +350,7 @@ declare class BrowserModelQueryBuilder<TDef extends BrowserModelDefinition, TSel
|
|
|
277
350
|
count(): Promise<number>;
|
|
278
351
|
exists(): Promise<boolean>;
|
|
279
352
|
pluck<K extends BrowserColumnName<TDef>>(column: K): Promise<(K extends keyof BrowserModelAttributes<TDef> ? BrowserModelAttributes<TDef>[K] : unknown)[]>;
|
|
280
|
-
paginate(page?:
|
|
353
|
+
paginate(page?: number, perPage?: number): Promise<{
|
|
281
354
|
data: BrowserModelInstance<TDef, TSelected>[]
|
|
282
355
|
total: number
|
|
283
356
|
page: number
|
|
@@ -285,4 +358,5 @@ declare class BrowserModelQueryBuilder<TDef extends BrowserModelDefinition, TSel
|
|
|
285
358
|
lastPage: number
|
|
286
359
|
}>;
|
|
287
360
|
}
|
|
288
|
-
|
|
361
|
+
// Export for convenience
|
|
362
|
+
export default browserQuery;
|
package/dist/client.d.ts
CHANGED
|
@@ -28,7 +28,7 @@ export declare function setQueryCacheMaxSize(size: number): void;
|
|
|
28
28
|
export declare interface WhereRaw {
|
|
29
29
|
raw: any
|
|
30
30
|
}
|
|
31
|
-
export declare interface BaseSelectQueryBuilder<DB extends DatabaseSchema<any>, TTable extends keyof DB & string, TSelected, TJoined extends string = TTable
|
|
31
|
+
export declare interface BaseSelectQueryBuilder<DB extends DatabaseSchema<any>, TTable extends keyof DB & string, TSelected, TJoined extends string = TTable,> {
|
|
32
32
|
distinct: () => SelectQueryBuilder<DB, TTable, TSelected, TJoined>
|
|
33
33
|
distinctOn: (...columns: (keyof DB[TTable]['columns'] & string | string)[]) => SelectQueryBuilder<DB, TTable, TSelected, TJoined>
|
|
34
34
|
selectRaw: (fragment: any) => SelectQueryBuilder<DB, TTable, TSelected, TJoined>
|
|
@@ -126,29 +126,7 @@ export declare interface BaseSelectQueryBuilder<DB extends DatabaseSchema<any>,
|
|
|
126
126
|
withRecursive: (name: string, sub: { toSQL: () => any }) => SelectQueryBuilder<DB, TTable, TSelected, TJoined>
|
|
127
127
|
value: <K extends keyof TSelected & string>(column: K) => Promise<SelectedRow<DB, TTable, TSelected>[K]>
|
|
128
128
|
pluck: {
|
|
129
|
-
/**
|
|
130
|
-
* # `pluck(column)`
|
|
131
|
-
*
|
|
132
|
-
* Returns an array of values for a single column.
|
|
133
|
-
*
|
|
134
|
-
* @example
|
|
135
|
-
* ```ts
|
|
136
|
-
* const names = await db.selectFrom('users').pluck('name')
|
|
137
|
-
* const ids = await db.selectFrom('users').orderBy('id').pluck('id')
|
|
138
|
-
* ```
|
|
139
|
-
*/
|
|
140
129
|
<K extends keyof TSelected & string>(column: K): Promise<SelectedRow<DB, TTable, TSelected>[K][]>
|
|
141
|
-
/**
|
|
142
|
-
* # `pluck(column, key)`
|
|
143
|
-
*
|
|
144
|
-
* Returns an object keyed by the given key column.
|
|
145
|
-
*
|
|
146
|
-
* @example
|
|
147
|
-
* ```ts
|
|
148
|
-
* const byId = await db.selectFrom('users').pluck('email', 'id')
|
|
149
|
-
* const map = await db.selectFrom('users').pluck('name', 'email')
|
|
150
|
-
* ```
|
|
151
|
-
*/
|
|
152
130
|
<K extends keyof TSelected & string, K2 extends keyof TSelected & string>(column: K, key: K2): Promise<Record<string, SelectedRow<DB, TTable, TSelected>[K]>>
|
|
153
131
|
}
|
|
154
132
|
exists: () => Promise<boolean>
|
|
@@ -184,8 +162,8 @@ export declare interface BaseSelectQueryBuilder<DB extends DatabaseSchema<any>,
|
|
|
184
162
|
sum: (column: keyof DB[TTable]['columns'] & string) => Promise<number>
|
|
185
163
|
max: (column: keyof DB[TTable]['columns'] & string) => Promise<any>
|
|
186
164
|
min: (column: keyof DB[TTable]['columns'] & string) => Promise<any>
|
|
187
|
-
rows: TSelected[]
|
|
188
|
-
row: TSelected
|
|
165
|
+
readonly rows: TSelected[]
|
|
166
|
+
readonly row: TSelected
|
|
189
167
|
values: () => Promise<any[][]>
|
|
190
168
|
toParams?: () => any[]
|
|
191
169
|
raw: () => Promise<any[][]>
|
|
@@ -354,6 +332,8 @@ declare interface InternalState {
|
|
|
354
332
|
schema?: any
|
|
355
333
|
txDefaults?: TransactionOptions
|
|
356
334
|
}
|
|
335
|
+
declare interface TxBackoff { baseMs?: number, maxMs?: number, factor?: number, jitter?: boolean }
|
|
336
|
+
declare interface TxLoggerEvent { type: 'start' | 'retry' | 'commit' | 'rollback' | 'error', attempt: number, error?: any, durationMs?: number }
|
|
357
337
|
export declare interface TransactionOptions {
|
|
358
338
|
retries?: number
|
|
359
339
|
isolation?: TransactionIsolation
|
|
@@ -366,51 +346,39 @@ export declare interface TransactionOptions {
|
|
|
366
346
|
onRollback?: (error: any) => void
|
|
367
347
|
afterRollback?: () => void
|
|
368
348
|
}
|
|
369
|
-
declare interface TxBackoff {
|
|
370
|
-
baseMs?: number
|
|
371
|
-
maxMs?: number
|
|
372
|
-
factor?: number
|
|
373
|
-
jitter?: boolean
|
|
374
|
-
}
|
|
375
|
-
declare interface TxLoggerEvent {
|
|
376
|
-
type: 'start' | 'retry' | 'commit' | 'rollback' | 'error'
|
|
377
|
-
attempt: number
|
|
378
|
-
error?: any
|
|
379
|
-
durationMs?: number
|
|
380
|
-
}
|
|
381
349
|
// Where condition helpers
|
|
382
|
-
declare type Primitive = string | number | boolean | bigint | Date | null | undefined
|
|
383
|
-
declare type ValueOrRef = Primitive
|
|
384
|
-
export type WhereOperator = '=' | '!=' | '<' | '>' | '<=' | '>=' | 'like' | 'in' | 'not in' | 'is' | 'is not'
|
|
350
|
+
declare type Primitive = string | number | boolean | bigint | Date | null | undefined;
|
|
351
|
+
declare type ValueOrRef = Primitive;
|
|
352
|
+
export type WhereOperator = '=' | '!=' | '<' | '>' | '<=' | '>=' | 'like' | 'in' | 'not in' | 'is' | 'is not';
|
|
385
353
|
export type WhereExpression<TableColumns> = | Partial<{ [K in keyof TableColumns & string]: ValueOrRef | ValueOrRef[] }>
|
|
386
354
|
| [key: keyof TableColumns & string, op: WhereOperator, value: ValueOrRef | ValueOrRef[]]
|
|
387
|
-
| WhereRaw
|
|
388
|
-
export type QueryResult = any
|
|
355
|
+
| WhereRaw;
|
|
356
|
+
export type QueryResult = any;
|
|
389
357
|
/**
|
|
390
358
|
* # `SortDirection`
|
|
391
359
|
*
|
|
392
360
|
* The direction used when ordering query results.
|
|
393
361
|
*/
|
|
394
|
-
export type SortDirection = 'asc' | 'desc'
|
|
362
|
+
export type SortDirection = 'asc' | 'desc';
|
|
395
363
|
/**
|
|
396
364
|
* # `ColumnName<DB, TTable>`
|
|
397
365
|
*
|
|
398
366
|
* Helper type extracting a string union of column names for a given table.
|
|
399
367
|
*/
|
|
400
|
-
export type ColumnName<DB extends DatabaseSchema<any>, TTable extends keyof DB & string> = keyof DB[TTable]['columns'] & string
|
|
368
|
+
export type ColumnName<DB extends DatabaseSchema<any>, TTable extends keyof DB & string> = keyof DB[TTable]['columns'] & string;
|
|
401
369
|
// Named row alias to improve IDE hover readability
|
|
402
|
-
export type SelectedRow<DB extends DatabaseSchema<any>, _TTable extends keyof DB & string, TSelected
|
|
370
|
+
export type SelectedRow<DB extends DatabaseSchema<any>, _TTable extends keyof DB & string, TSelected,> = Readonly<TSelected>;
|
|
403
371
|
declare type JoinColumn<DB extends DatabaseSchema<any>, TTables extends string> = TTables extends any
|
|
404
372
|
? `${TTables}.${keyof DB[TTables]['columns'] & string}`
|
|
405
|
-
: never
|
|
373
|
+
: never;
|
|
406
374
|
// Convert snake_case to PascalCase at the type level (e.g. created_at -> CreatedAt)
|
|
407
375
|
declare type SnakeToPascal<S extends string> = S extends `${infer H}_${infer T}`
|
|
408
376
|
? `${Capitalize<H>}${SnakeToPascal<T>}`
|
|
409
|
-
: Capitalize<S
|
|
377
|
+
: Capitalize<S>;
|
|
410
378
|
// Typed SQL builder (type-level only). We piggy-back on the runtime builder but
|
|
411
379
|
// thread a phantom TSql string through method signatures so hovers can show the
|
|
412
380
|
// composed SQL at compile-time for common operations.
|
|
413
|
-
declare type _TypedDynamicWhereMethods<DB extends DatabaseSchema<any>, TTable extends keyof DB & string, TSelected, TJoined extends string, TSql extends string
|
|
381
|
+
declare type _TypedDynamicWhereMethods<DB extends DatabaseSchema<any>, TTable extends keyof DB & string, TSelected, TJoined extends string, TSql extends string,> = {
|
|
414
382
|
[K in keyof DB[TTable]['columns'] & string as `where${SnakeToPascal<K>}`]: (
|
|
415
383
|
value: DB[TTable]['columns'][K],
|
|
416
384
|
) => TypedSelectQueryBuilder<DB, TTable, TSelected, TJoined, `${TSql} WHERE ${K} = ?`>
|
|
@@ -423,7 +391,7 @@ declare type _TypedDynamicWhereMethods<DB extends DatabaseSchema<any>, TTable ex
|
|
|
423
391
|
value: DB[TTable]['columns'][K],
|
|
424
392
|
) => TypedSelectQueryBuilder<DB, TTable, TSelected, TJoined, `${TSql} AND ${K} = ?`>
|
|
425
393
|
}
|
|
426
|
-
export type TypedSelectQueryBuilder<DB extends DatabaseSchema<any>, TTable extends keyof DB & string, TSelected, TJoined extends string = TTable, TSql extends string = `SELECT * FROM ${TTable}
|
|
394
|
+
export type TypedSelectQueryBuilder<DB extends DatabaseSchema<any>, TTable extends keyof DB & string, TSelected, TJoined extends string = TTable, TSql extends string = `SELECT * FROM ${TTable}`,> = Omit<
|
|
427
395
|
BaseSelectQueryBuilder<DB, TTable, TSelected, TJoined>,
|
|
428
396
|
'toSQL' | 'where' | 'andWhere' | 'orWhere' | 'orderBy' | 'limit'
|
|
429
397
|
> & DynamicWhereMethods<DB, TTable, TSelected, TJoined>
|
|
@@ -463,16 +431,16 @@ export type TypedSelectQueryBuilder<DB extends DatabaseSchema<any>, TTable exten
|
|
|
463
431
|
) => TypedSelectQueryBuilder<DB, TTable, TSelected, TJoined, `${TSql} ORDER BY ${C} ${D}`>
|
|
464
432
|
limit: <N extends number>(n: N) => TypedSelectQueryBuilder<DB, TTable, TSelected, TJoined, `${TSql} LIMIT ${N}`>
|
|
465
433
|
}
|
|
466
|
-
declare type DynamicWhereMethods<DB extends DatabaseSchema<any>, TTable extends keyof DB & string, TSelected, TJoined extends string = TTable
|
|
434
|
+
declare type DynamicWhereMethods<DB extends DatabaseSchema<any>, TTable extends keyof DB & string, TSelected, TJoined extends string = TTable,> = {
|
|
467
435
|
[K in keyof DB[TTable]['columns'] & string as `where${SnakeToPascal<K>}`]: (value: DB[TTable]['columns'][K]) => SelectQueryBuilder<DB, TTable, TSelected, TJoined>
|
|
468
436
|
} & {
|
|
469
437
|
[K in keyof DB[TTable]['columns'] & string as `orWhere${SnakeToPascal<K>}`]: (value: DB[TTable]['columns'][K]) => SelectQueryBuilder<DB, TTable, TSelected, TJoined>
|
|
470
438
|
} & {
|
|
471
439
|
[K in keyof DB[TTable]['columns'] & string as `andWhere${SnakeToPascal<K>}`]: (value: DB[TTable]['columns'][K]) => SelectQueryBuilder<DB, TTable, TSelected, TJoined>
|
|
472
440
|
}
|
|
473
|
-
export type SelectQueryBuilder<DB extends DatabaseSchema<any>, TTable extends keyof DB & string, TSelected, TJoined extends string = TTable
|
|
441
|
+
export type SelectQueryBuilder<DB extends DatabaseSchema<any>, TTable extends keyof DB & string, TSelected, TJoined extends string = TTable,> = BaseSelectQueryBuilder<DB, TTable, TSelected, TJoined> & DynamicWhereMethods<DB, TTable, TSelected, TJoined>;
|
|
474
442
|
// Typed INSERT builder to expose a structured SQL literal in hovers
|
|
475
|
-
export type TypedInsertQueryBuilder<DB extends DatabaseSchema<any>, TTable extends keyof DB & string, TSql extends string = `INSERT INTO ${TTable}
|
|
443
|
+
export type TypedInsertQueryBuilder<DB extends DatabaseSchema<any>, TTable extends keyof DB & string, TSql extends string = `INSERT INTO ${TTable}`,> = Omit<InsertQueryBuilder<DB, TTable>, 'toSQL' | 'values' | 'returning'> & {
|
|
476
444
|
toSQL: () => TSql
|
|
477
445
|
values: (
|
|
478
446
|
data: Partial<DB[TTable]['columns']> | Partial<DB[TTable]['columns']>[],
|
|
@@ -487,13 +455,11 @@ export type TypedInsertQueryBuilder<DB extends DatabaseSchema<any>, TTable exten
|
|
|
487
455
|
`${TSql} RETURNING ${string}`
|
|
488
456
|
>
|
|
489
457
|
}
|
|
490
|
-
declare type TransactionIsolation = 'read committed' | 'repeatable read' | 'serializable'
|
|
458
|
+
declare type TransactionIsolation = 'read committed' | 'repeatable read' | 'serializable';
|
|
491
459
|
declare class QueryCache {
|
|
492
|
-
private cache: any;
|
|
493
|
-
private maxSize: any;
|
|
494
460
|
get(key: string): any | null;
|
|
495
461
|
set(key: string, data: any, ttlMs: number): void;
|
|
496
462
|
clear(): void;
|
|
497
463
|
setMaxSize(size: number): void;
|
|
498
464
|
}
|
|
499
|
-
export { resetConnection };
|
|
465
|
+
export { resetConnection };
|
package/dist/config.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ export declare function getPlaceholder(index: number): string;
|
|
|
9
9
|
* PostgreSQL: $1, $2, $3
|
|
10
10
|
* MySQL/SQLite: ?, ?, ?
|
|
11
11
|
*/
|
|
12
|
-
export declare function getPlaceholders(count: number, startIndex?:
|
|
12
|
+
export declare function getPlaceholders(count: number, startIndex?: number): string;
|
|
13
13
|
export declare function getConfig(): Promise<QueryBuilderConfig>;
|
|
14
14
|
/**
|
|
15
15
|
* Programmatically set/override the query builder configuration.
|
|
@@ -18,5 +18,18 @@ export declare function getConfig(): Promise<QueryBuilderConfig>;
|
|
|
18
18
|
*/
|
|
19
19
|
export declare function setConfig(userConfig: Partial<QueryBuilderConfig>): void;
|
|
20
20
|
export declare const defaultConfig: QueryBuilderConfig;
|
|
21
|
-
// For backwards compatibility
|
|
22
|
-
|
|
21
|
+
// For backwards compatibility — synchronous access with default fallback.
|
|
22
|
+
//
|
|
23
|
+
// Why `let` + an explicit `Object.assign(config, defaultConfig)` instead of
|
|
24
|
+
// the obvious `export const config = defaultConfig`: when downstream code
|
|
25
|
+
// (e.g. `bunfig`, our config loader) introduces a top-level `await`, Bun's
|
|
26
|
+
// bundler may wrap this module's initializer in `__esm(async () => {...})`.
|
|
27
|
+
// Static `const x = y` exports inside such a wrapper are reassigned only
|
|
28
|
+
// once the async init runs, so callers that reach `setConfig(...)` before
|
|
29
|
+
// that init (e.g. another module's top-level `setConfig` call mid-graph)
|
|
30
|
+
// see `config` as `undefined` and `Object.assign(undefined, ...)` throws.
|
|
31
|
+
// Initializing as `let config = {...defaultConfig}` outside the wrapper, and
|
|
32
|
+
// having `setConfig` re-hydrate from defaults if it's somehow still empty,
|
|
33
|
+
// keeps the surface synchronous for every consumer regardless of how the
|
|
34
|
+
// module ends up bundled.
|
|
35
|
+
export declare let config: QueryBuilderConfig;
|
package/dist/db.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { SQL } from 'bun';
|
|
2
1
|
import { Database } from 'bun:sqlite';
|
|
2
|
+
import { SQL } from 'bun';
|
|
3
3
|
/**
|
|
4
4
|
* Returns a Bun SQL instance configured for the current dialect and database settings.
|
|
5
5
|
* For SQLite, uses bun:sqlite directly for better compiled binary support.
|
|
6
6
|
* Handles connection errors gracefully by falling back to in-memory SQLite.
|
|
7
7
|
*/
|
|
8
8
|
export declare function getBunSql(): SQL;
|
|
9
|
-
export declare function getOrCreateBunSql(forceNew?:
|
|
9
|
+
export declare function getOrCreateBunSql(forceNew?: boolean): SQL;
|
|
10
10
|
/**
|
|
11
11
|
* Resets the cached database connection.
|
|
12
12
|
* Call this after changing config via setConfig() to ensure the new config is used.
|
|
@@ -21,10 +21,11 @@ export declare const bunSql: SQL;
|
|
|
21
21
|
* using bun:sqlite's Database class for better compiled binary support.
|
|
22
22
|
*/
|
|
23
23
|
declare class SQLiteWrapper {
|
|
24
|
-
private db: Database;
|
|
25
24
|
constructor(filename: string);
|
|
26
25
|
query(sql: string, params?: any[]): any[];
|
|
27
26
|
run(sql: string, params?: any[]): any;
|
|
28
27
|
close(): void;
|
|
28
|
+
get database(): Database;
|
|
29
29
|
}
|
|
30
|
-
export
|
|
30
|
+
// Also export the SQL class for advanced usage
|
|
31
|
+
export { SQL } from 'bun';
|
|
@@ -273,7 +273,7 @@ export declare interface DynamoDBConfig {
|
|
|
273
273
|
/**
|
|
274
274
|
* DynamoDB attribute type mapping
|
|
275
275
|
*/
|
|
276
|
-
export type DynamoDBAttributeType = 'S' | 'N' | 'B' | 'SS' | 'NS' | 'BS' | 'M' | 'L' | 'BOOL' | 'NULL'
|
|
276
|
+
export type DynamoDBAttributeType = 'S' | 'N' | 'B' | 'SS' | 'NS' | 'BS' | 'M' | 'L' | 'BOOL' | 'NULL';
|
|
277
277
|
/**
|
|
278
278
|
* DynamoDB query condition operators
|
|
279
279
|
*/
|
|
@@ -283,13 +283,11 @@ export type DynamoDBComparisonOperator = | '='
|
|
|
283
283
|
| '>'
|
|
284
284
|
| '>='
|
|
285
285
|
| 'BETWEEN'
|
|
286
|
-
| 'begins_with'
|
|
286
|
+
| 'begins_with';
|
|
287
287
|
/**
|
|
288
288
|
* DynamoDB Driver Implementation
|
|
289
289
|
*/
|
|
290
290
|
export declare class DynamoDBDriverImpl implements DynamoDBDriver {
|
|
291
|
-
private config: DynamoDBConfig;
|
|
292
|
-
private entityMappings: Map<string, SingleTableEntityMapping>;
|
|
293
291
|
constructor(config: DynamoDBConfig);
|
|
294
292
|
createTable(definition: DynamoDBTableDefinition): DynamoDBTableDefinition;
|
|
295
293
|
deleteTable(tableName: string): { tableName: string };
|
|
@@ -327,12 +325,4 @@ export declare class DynamoDBDriverImpl implements DynamoDBDriver {
|
|
|
327
325
|
};
|
|
328
326
|
marshall(item: Record<string, any>): Record<string, any>;
|
|
329
327
|
unmarshall(item: Record<string, any>): Record<string, any>;
|
|
330
|
-
|
|
331
|
-
private buildExpression(conditions: DynamoDBCondition[], joiner: 'AND' | 'OR'): {
|
|
332
|
-
expression: string
|
|
333
|
-
expressionAttributeNames: Record<string, string>
|
|
334
|
-
expressionAttributeValues: Record<string, any>
|
|
335
|
-
};
|
|
336
|
-
private marshallValue(value: any): any;
|
|
337
|
-
private unmarshallValue(value: any): any;
|
|
338
|
-
}
|
|
328
|
+
}
|
package/dist/drivers/index.d.ts
CHANGED
|
@@ -30,7 +30,8 @@ export declare function getDialectDriver(dialect: SupportedDialect): DialectDriv
|
|
|
30
30
|
export { MySQLDriver } from './mysql';
|
|
31
31
|
export { PostgresDriver } from './postgres';
|
|
32
32
|
export { SQLiteDriver } from './sqlite';
|
|
33
|
+
// DynamoDB driver (NoSQL)
|
|
33
34
|
export {
|
|
34
35
|
createDynamoDBDriver,
|
|
35
36
|
DynamoDBDriverImpl,
|
|
36
|
-
} from './dynamodb';
|
|
37
|
+
} from './dynamodb';
|
package/dist/drivers/mysql.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export declare interface DialectDriver {
|
|
|
3
3
|
createEnumType: (enumTypeName: string, values: string[]) => string
|
|
4
4
|
createTable: (table: TablePlan) => string
|
|
5
5
|
createIndex: (tableName: string, index: IndexPlan) => string
|
|
6
|
-
addForeignKey: (tableName: string, columnName: string, refTable: string, refColumn: string) => string
|
|
6
|
+
addForeignKey: (tableName: string, columnName: string, refTable: string, refColumn: string, onDelete?: string, onUpdate?: string) => string
|
|
7
7
|
addColumn: (tableName: string, column: ColumnPlan) => string
|
|
8
8
|
modifyColumn: (tableName: string, column: ColumnPlan) => string
|
|
9
9
|
dropTable: (tableName: string) => string
|
|
@@ -15,15 +15,10 @@ export declare interface DialectDriver {
|
|
|
15
15
|
recordMigrationQuery: () => string
|
|
16
16
|
}
|
|
17
17
|
export declare class MySQLDriver implements DialectDriver {
|
|
18
|
-
private quoteIdentifier(id: string): string;
|
|
19
|
-
private getColumnType(column: ColumnPlan): string;
|
|
20
|
-
private getPrimaryKeyType(column: ColumnPlan): string;
|
|
21
|
-
private getAutoIncrementClause(column: ColumnPlan): string;
|
|
22
|
-
private getDefaultValue(column: ColumnPlan): string;
|
|
23
18
|
createEnumType(_enumTypeName: string, _values: string[]): string;
|
|
24
19
|
createTable(table: TablePlan): string;
|
|
25
20
|
createIndex(tableName: string, index: IndexPlan): string;
|
|
26
|
-
addForeignKey(tableName: string, columnName: string, refTable: string, refColumn: string): string;
|
|
21
|
+
addForeignKey(tableName: string, columnName: string, refTable: string, refColumn: string, onDelete?: string, onUpdate?: string): string;
|
|
27
22
|
addColumn(tableName: string, column: ColumnPlan): string;
|
|
28
23
|
modifyColumn(tableName: string, column: ColumnPlan): string;
|
|
29
24
|
dropTable(tableName: string): string;
|
|
@@ -33,5 +28,4 @@ export declare class MySQLDriver implements DialectDriver {
|
|
|
33
28
|
createMigrationsTable(): string;
|
|
34
29
|
getExecutedMigrationsQuery(): string;
|
|
35
30
|
recordMigrationQuery(): string;
|
|
36
|
-
|
|
37
|
-
}
|
|
31
|
+
}
|
|
@@ -3,7 +3,7 @@ export declare interface DialectDriver {
|
|
|
3
3
|
createEnumType: (enumTypeName: string, values: string[]) => string
|
|
4
4
|
createTable: (table: TablePlan) => string
|
|
5
5
|
createIndex: (tableName: string, index: IndexPlan) => string
|
|
6
|
-
addForeignKey: (tableName: string, columnName: string, refTable: string, refColumn: string) => string
|
|
6
|
+
addForeignKey: (tableName: string, columnName: string, refTable: string, refColumn: string, onDelete?: string, onUpdate?: string) => string
|
|
7
7
|
addColumn: (tableName: string, column: ColumnPlan) => string
|
|
8
8
|
modifyColumn: (tableName: string, column: ColumnPlan) => string
|
|
9
9
|
dropTable: (tableName: string) => string
|
|
@@ -15,15 +15,10 @@ export declare interface DialectDriver {
|
|
|
15
15
|
recordMigrationQuery: () => string
|
|
16
16
|
}
|
|
17
17
|
export declare class PostgresDriver implements DialectDriver {
|
|
18
|
-
private quoteIdentifier(id: string): string;
|
|
19
|
-
private getColumnType(column: ColumnPlan): string;
|
|
20
|
-
private getPrimaryKeyType(column: ColumnPlan): string;
|
|
21
|
-
private getAutoIncrementClause(_column: ColumnPlan): string;
|
|
22
|
-
private getDefaultValue(column: ColumnPlan): string;
|
|
23
18
|
createEnumType(enumTypeName: string, values: string[]): string;
|
|
24
19
|
createTable(table: TablePlan): string;
|
|
25
20
|
createIndex(tableName: string, index: IndexPlan): string;
|
|
26
|
-
addForeignKey(tableName: string, columnName: string, refTable: string, refColumn: string): string;
|
|
21
|
+
addForeignKey(tableName: string, columnName: string, refTable: string, refColumn: string, onDelete?: string, onUpdate?: string): string;
|
|
27
22
|
addColumn(tableName: string, column: ColumnPlan): string;
|
|
28
23
|
modifyColumn(tableName: string, column: ColumnPlan): string;
|
|
29
24
|
dropTable(tableName: string): string;
|
|
@@ -33,5 +28,4 @@ export declare class PostgresDriver implements DialectDriver {
|
|
|
33
28
|
createMigrationsTable(): string;
|
|
34
29
|
getExecutedMigrationsQuery(): string;
|
|
35
30
|
recordMigrationQuery(): string;
|
|
36
|
-
|
|
37
|
-
}
|
|
31
|
+
}
|