@zerotal/orm 1.6.3 → 1.7.2

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/api-surface.md ADDED
@@ -0,0 +1,1665 @@
1
+ # @zerotal/orm — public API surface
2
+
3
+ <!-- AUTO-GENERATED by scripts/api-surface.ts. Do not edit by hand.
4
+ Run `bun run api:surface` to regenerate after an intentional API change. -->
5
+
6
+ ## . `(./src/index.ts)`
7
+
8
+ class ArrayCast = {
9
+ new <T = unknown>(mapper?: CastMapper<T> | undefined): ArrayCast<T>
10
+ fields: () => CastField[]
11
+ get: (dbValue: unknown) => T[]
12
+ readonly shape: 'array'
13
+ set: (value: T[]) => unknown
14
+ }
15
+
16
+ class BaseModel = {
17
+ new (): BaseModel
18
+ static _isFillable: (key: string) => boolean
19
+ static _unscopedQuery: <T extends BaseModel>(this: ModelCtor<T>) => ModelQueryBuilder<T>
20
+ static addGlobalScope: <T extends BaseModel>(this: ModelCtor<T>, name: string, callback: GlobalScopeCallback) => void
21
+ static all: <T extends BaseModel>(this: ModelCtor<T>) => Promise<T[]>
22
+ static appends: string[]
23
+ static bulkInsert: <T extends BaseModel>(this: ModelCtor<T>, records: InsertPayload<T>[]) => Promise<number>
24
+ static casts?: Record<string, 'boolean' | 'date' | 'datetime' | 'array' | 'integer' | 'json' | 'float' | 'enum' | 'immutable_datetime' | 'encrypted' | 'encrypted:json' | `decimal:${number}` | { get?: (dbValue: unknown) => unknown; set?: (jsValue: unknown) => unknown;} | CastContract<unknown> | undefined>
25
+ static connection?: string
26
+ static count: <T extends BaseModel>(this: ModelCtor<T>) => Promise<number>
27
+ static create: <T extends BaseModel, F extends string = string>(this: ModelCtor<T> & { fillable?: readonly F[] | undefined;}, data: FillablePayload<T, F>) => Promise<T>
28
+ static createMany: <T extends BaseModel>(this: ModelCtor<T>, records: InsertPayload<T>[]) => Promise<T[]>
29
+ static dispatchesEvents?: Record<string, new (model: unknown) => object>
30
+ static encryptable?: string[]
31
+ static fillable?: readonly string[]
32
+ static find: <T extends BaseModel>(this: ModelCtor<T>, id: number | string) => Promise<T | null>
33
+ static findBy: <T extends BaseModel>(this: ModelCtor<T>, column: string, value: unknown) => Promise<T | null>
34
+ static findMany: <T extends BaseModel>(this: ModelCtor<T>, ids: (number | string)[]) => Promise<T[]>
35
+ static findOrFail: <T extends BaseModel>(this: ModelCtor<T>, id: number | string) => Promise<T>
36
+ static findOrNew: <T extends BaseModel>(this: ModelCtor<T>, id: number | string) => Promise<T>
37
+ static first: <T extends BaseModel>(this: ModelCtor<T>) => Promise<T | null>
38
+ static firstOrCreate: <T extends BaseModel>(this: ModelCtor<T>, search: UpdatePayload<T>, create?: UpdatePayload<T>) => Promise<T>
39
+ static firstOrFail: <T extends BaseModel>(this: ModelCtor<T>) => Promise<T>
40
+ static firstOrNew: <T extends BaseModel>(this: ModelCtor<T>, search: UpdatePayload<T>, values?: UpdatePayload<T>) => Promise<T>
41
+ static forceCreate: <T extends BaseModel>(this: ModelCtor<T>, data: Record<string, unknown>) => Promise<T>
42
+ static fromRow: (row: Record<string, unknown>) => BaseModel
43
+ static guarded?: readonly string[]
44
+ static hashable?: string[]
45
+ static hidden: string[]
46
+ static implicitBinding?: boolean
47
+ static implicitBindingKey?: string
48
+ static latest: <T extends BaseModel>(this: ModelCtor<T>, column?: string) => ModelQueryBuilder<T>
49
+ static loadCount: <T extends BaseModel>(this: typeof BaseModel, models: T[], relations: string | string[]) => Promise<T[]>
50
+ static massPrune: boolean
51
+ static observe: <T extends BaseModel>(this: ModelCtor<T>, ObserverClass: new () => ModelObserver<T>) => void
52
+ static oldest: <T extends BaseModel>(this: ModelCtor<T>, column?: string) => ModelQueryBuilder<T>
53
+ static orderBy: <T extends BaseModel>(this: ModelCtor<T>, column: string, direction?: OrderDirection) => ModelQueryBuilder<T>
54
+ static paginate: <T extends BaseModel>(this: ModelCtor<T>, perPage?: number, page?: number, pageName?: string) => Promise<PaginateResult<T>>
55
+ static primaryKey: string
56
+ static prunable?: <T extends BaseModel>(this: ModelCtor<T>) => ModelQueryBuilder<T>
57
+ static prune: <T extends BaseModel>(this: ModelCtor<T>, chunkSize?: number) => Promise<number>
58
+ static query: <T extends BaseModel>(this: ModelCtor<T>) => ModelQueryBuilder<T>
59
+ static reactiveCasts: boolean
60
+ static registerConnection: (name: string, conn: SQLInstance, dialect?: Dialect) => void
61
+ static reguard: () => void
62
+ static removeGlobalScope: <T extends BaseModel>(this: ModelCtor<T>, name: string) => void
63
+ static saveMany: <T extends BaseModel>(this: ModelCtor<T>, models: T[]) => Promise<T[]>
64
+ static scope: <Args extends unknown[]>(fn: (query: QueryBuilder, ...args: Args) => void) => (...args: Args) => ScopeApplicator
65
+ static softDeletes: boolean
66
+ static table: string
67
+ static timestamps: boolean
68
+ static unguard: () => void
69
+ static unguarded: boolean
70
+ static updateOrCreate: <T extends BaseModel>(this: ModelCtor<T>, search: UpdatePayload<T>, values?: UpdatePayload<T>) => Promise<T>
71
+ static upsert: <T extends BaseModel>(this: ModelCtor<T>, data: InsertPayload<T>, conflictKeys: (keyof T & string)[], updateCols?: (keyof T & string)[]) => Promise<void>
72
+ static using: Compose
73
+ static visible: string[]
74
+ static where: { <T extends BaseModel>(this: ModelCtor<T>, column: string, value: unknown): ModelQueryBuilder<T>; <T extends BaseModel>(this: ModelCtor<T>, column: string, operator: WhereOperator, value: unknown): ModelQueryBuilder<T>;}
75
+ static whereIn: <T extends BaseModel>(this: ModelCtor<T>, column: string, values: unknown[]) => ModelQueryBuilder<T>
76
+ static withoutGuard: <T>(callback: () => T | Promise<T>) => Promise<T>
77
+ static withoutTimestamps: <R>(callback: () => Promise<R> | R) => Promise<R>
78
+ $dirty: () => Record<string, unknown>
79
+ append: (...keys: string[]) => BaseModel
80
+ associate: (relation: string, model: BaseModel) => BaseModel
81
+ createdAt?: Date
82
+ decrement: (column: 'id' | 'createdAt' | 'updatedAt' | '__isZerotalModel' | 'fill' | 'forceFill' | 'save' | 'delete' | 'load' | 'loadMissing' | 'fresh' | 'refresh' | 'replicate' | 'touch' | 'is' | 'isNot' | 'increment' | 'decrement' | 'loadCount' | 'loadSum' | 'loadAvg' | 'loadMin' | 'loadMax' | 'makeHidden' | 'makeVisible' | 'append' | 'associate' | 'dissociate' | 'isDirty' | '$dirty' | 'markDirty' | 'toJSON', amount?: number) => Promise<BaseModel>
83
+ delete: () => Promise<void>
84
+ dissociate: (relation: string) => BaseModel
85
+ fill: (data: Partial<InsertPayload<BaseModel>>) => BaseModel
86
+ forceFill: (data: Record<string, unknown>) => BaseModel
87
+ fresh: () => Promise<BaseModel>
88
+ id: number
89
+ increment: (column: 'id' | 'createdAt' | 'updatedAt' | '__isZerotalModel' | 'fill' | 'forceFill' | 'save' | 'delete' | 'load' | 'loadMissing' | 'fresh' | 'refresh' | 'replicate' | 'touch' | 'is' | 'isNot' | 'increment' | 'decrement' | 'loadCount' | 'loadSum' | 'loadAvg' | 'loadMin' | 'loadMax' | 'makeHidden' | 'makeVisible' | 'append' | 'associate' | 'dissociate' | 'isDirty' | '$dirty' | 'markDirty' | 'toJSON', amount?: number) => Promise<BaseModel>
90
+ is: (other: BaseModel | null | undefined) => boolean
91
+ isDirty: (column?: string) => boolean
92
+ isNot: (other: BaseModel | null | undefined) => boolean
93
+ load: (relations: string[]) => Promise<BaseModel>
94
+ loadAvg: (relation: string, column: string) => Promise<BaseModel>
95
+ loadCount: (relations: string | string[]) => Promise<BaseModel>
96
+ loadMax: (relation: string, column: string) => Promise<BaseModel>
97
+ loadMin: (relation: string, column: string) => Promise<BaseModel>
98
+ loadMissing: (relations: string[]) => Promise<BaseModel>
99
+ loadSum: (relation: string, column: string) => Promise<BaseModel>
100
+ makeHidden: (...keys: string[]) => BaseModel
101
+ makeVisible: (...keys: string[]) => BaseModel
102
+ markDirty: (property: keyof BaseModel) => BaseModel
103
+ readonly __isZerotalModel: true
104
+ refresh: () => Promise<BaseModel>
105
+ replicate: (except?: string[]) => BaseModel
106
+ save: () => Promise<BaseModel>
107
+ toJSON: () => Record<string, unknown>
108
+ touch: () => Promise<BaseModel>
109
+ updatedAt?: Date
110
+ }
111
+
112
+ class Blueprint = {
113
+ new (): Blueprint
114
+ _pendingDrops: readonly string[]
115
+ bigIncrements: (name?: string) => ColumnBuilder
116
+ bigInteger: (name: string) => ColumnBuilder
117
+ binary: (name: string) => ColumnBuilder
118
+ boolean: (name: string) => ColumnBuilder
119
+ char: (name: string, _length?: number) => ColumnBuilder
120
+ date: (name: string) => ColumnBuilder
121
+ dateTime: (name: string) => ColumnBuilder
122
+ datetime: (name: string) => ColumnBuilder
123
+ decimal: (name: string, _precision?: number, _scale?: number) => ColumnBuilder
124
+ double: (name: string, _precision?: number, _scale?: number) => ColumnBuilder
125
+ dropColumn: (...names: string[]) => Blueprint
126
+ dropForeign: (nameOrColumns: string | string[]) => Blueprint
127
+ dropIndex: (nameOrColumns: string | string[]) => Blueprint
128
+ dropPrimary: () => Blueprint
129
+ dropUnique: (nameOrColumns: string | string[]) => Blueprint
130
+ enum: (name: string, values: string[]) => ColumnBuilder<'check'>
131
+ float: (name: string) => ColumnBuilder
132
+ foreign: (column: string) => ForeignKeyBuilder
133
+ foreignId: (name: string) => ForeignIdColumnBuilder
134
+ foreignUuid: (name: string) => ForeignIdColumnBuilder
135
+ fulltext: (columns: string | string[], name?: string) => Blueprint
136
+ id: (name?: string) => ColumnBuilder
137
+ increments: (name?: string) => ColumnBuilder
138
+ index: (columns: string | string[], name?: string) => Blueprint
139
+ integer: (name: string) => ColumnBuilder
140
+ ipAddress: (name: string) => ColumnBuilder
141
+ json: (name: string) => ColumnBuilder
142
+ longText: (name: string) => ColumnBuilder
143
+ macAddress: (name: string) => ColumnBuilder
144
+ mediumInteger: (name: string) => ColumnBuilder
145
+ mediumText: (name: string) => ColumnBuilder
146
+ morphs: (name: string, indexName?: string) => void
147
+ nullableMorphs: (name: string, indexName?: string) => void
148
+ nullableTimestamps: () => void
149
+ primary: (columns: string | string[], _name?: string) => Blueprint
150
+ rememberToken: () => ColumnBuilder<'nullability'>
151
+ renameColumn: (from: string, to: string) => Blueprint
152
+ set: (name: string, _values: string[]) => ColumnBuilder
153
+ smallInteger: (name: string) => ColumnBuilder
154
+ softDeletes: (column?: string) => void
155
+ spatialIndex: (columns: string | string[], name?: string) => Blueprint
156
+ string: (name: string, _length?: number) => ColumnBuilder
157
+ text: (name: string) => ColumnBuilder
158
+ time: (name: string) => ColumnBuilder
159
+ timestamp: (name: string) => ColumnBuilder
160
+ timestamps: () => void
161
+ tinyInteger: (name: string) => ColumnBuilder
162
+ tinyText: (name: string) => ColumnBuilder
163
+ toAlterSQL: (table: string, dialect?: 'sqlite' | 'mysql' | 'postgres') => string[]
164
+ toCreateSQL: (table: string, dialect?: 'sqlite' | 'mysql' | 'postgres') => string[]
165
+ ulid: (name: string) => ColumnBuilder
166
+ unique: (columns: string | string[], name?: string) => Blueprint
167
+ unsignedBigInteger: (name: string) => ColumnBuilder<'unsigned'>
168
+ unsignedDecimal: (name: string, _precision?: number, _scale?: number) => ColumnBuilder<'unsigned'>
169
+ unsignedInteger: (name: string) => ColumnBuilder<'unsigned'>
170
+ unsignedMediumInteger: (name: string) => ColumnBuilder<'unsigned'>
171
+ unsignedSmallInteger: (name: string) => ColumnBuilder<'unsigned'>
172
+ unsignedTinyInteger: (name: string) => ColumnBuilder<'unsigned'>
173
+ uuid: (name: string) => ColumnBuilder
174
+ uuidMorphs: (name: string, indexName?: string) => void
175
+ year: (name: string) => ColumnBuilder
176
+ }
177
+
178
+ class Cast = {
179
+ new <T = unknown>(): Cast<T>
180
+ get: (dbValue: unknown) => T
181
+ set: (value: T) => unknown
182
+ }
183
+
184
+ class ColumnBuilder = {
185
+ new <Locked extends string = never>(name: string, _sqlType: string, isPrimary?: boolean, isAutoIncrement?: boolean): ColumnBuilder<Locked>
186
+ after: (_column: string) => ColumnBuilder<Locked>
187
+ alter: () => ColumnBuilder<Locked>
188
+ before: (_column: string) => ColumnBuilder<Locked>
189
+ change: () => ColumnBuilder<Locked>
190
+ check: (expression: string) => 'check' extends Locked ? never : ColumnBuilder<Locked | 'check'>
191
+ comment: (_text: string) => ColumnBuilder<Locked>
192
+ default: (value: unknown) => 'default' extends Locked ? never : ColumnBuilder<Locked | 'default'>
193
+ defaultTo: (value: unknown) => 'default' extends Locked ? never : ColumnBuilder<Locked | 'default'>
194
+ index: () => 'index' extends Locked ? never : ColumnBuilder<Locked | 'index'>
195
+ isAlter: boolean
196
+ isPrimary: boolean
197
+ notNullable: () => 'nullability' extends Locked ? never : ColumnBuilder<Locked | 'nullability'>
198
+ nullable: () => 'nullability' extends Locked ? never : ColumnBuilder<Locked | 'nullability'>
199
+ primary: () => 'primary' extends Locked ? never : ColumnBuilder<Locked | 'primary'>
200
+ readonly name: string
201
+ storedAs: (expression: string) => 'generated' extends Locked ? never : ColumnBuilder<Locked | 'generated'>
202
+ toColumnSQL: (dialect?: DialectName) => string
203
+ unique: () => 'unique' extends Locked ? never : ColumnBuilder<Locked | 'unique'>
204
+ unsigned: () => 'unsigned' extends Locked ? never : ColumnBuilder<Locked | 'unsigned'>
205
+ useCurrent: () => 'default' extends Locked ? never : ColumnBuilder<Locked | 'default'>
206
+ useCurrentOnUpdate: () => ColumnBuilder<Locked>
207
+ virtualAs: (expression: string) => 'generated' extends Locked ? never : ColumnBuilder<Locked | 'generated'>
208
+ wantsIndex: boolean
209
+ }
210
+
211
+ class DatabaseProvider = {
212
+ new (app: Application): DatabaseProvider
213
+ static dependsOn?: (new (app: Application) => ServiceProvider)[]
214
+ static environments: AppEnvironment[]
215
+ static priority?: number
216
+ static provides: readonly ['db']
217
+ devProcesses: () => DevProcessDefinition[]
218
+ doctorChecks: () => DoctorCheck[]
219
+ onBooted: () => Promise<void>
220
+ onBooting: () => Promise<void>
221
+ onRegister: () => void
222
+ onRequestProcessed: (_ctx: HttpContext) => Promise<void>
223
+ onRequestReceived: (_ctx: HttpContext) => Promise<void>
224
+ onResponseSent: (_ctx: HttpContext) => Promise<void>
225
+ onStarted: () => Promise<void>
226
+ onStarting: () => Promise<void>
227
+ onStopped: () => Promise<void>
228
+ onStopping: () => Promise<void>
229
+ replContext: () => Record<string, unknown>
230
+ }
231
+
232
+ class EncryptedColumnError = {
233
+ new (message: string, code: string, context?: Record<string, unknown>): EncryptedColumnError
234
+ readonly code: string
235
+ readonly context?: Record<string, unknown> | undefined
236
+ readonly status: number
237
+ }
238
+
239
+ class ForeignIdColumnBuilder = {
240
+ new <Locked extends string = never>(name: string, sqlType: string, _addFk: (col: string) => ForeignKeyBuilder): ForeignIdColumnBuilder<Locked>
241
+ after: (_column: string) => ForeignIdColumnBuilder<Locked>
242
+ alter: () => ForeignIdColumnBuilder<Locked>
243
+ before: (_column: string) => ForeignIdColumnBuilder<Locked>
244
+ change: () => ForeignIdColumnBuilder<Locked>
245
+ check: (expression: string) => 'check' extends Locked ? never : ColumnBuilder<'check' | Locked>
246
+ comment: (_text: string) => ForeignIdColumnBuilder<Locked>
247
+ constrained: (table?: string, column?: string) => ForeignKeyBuilder
248
+ default: (value: unknown) => 'default' extends Locked ? never : ColumnBuilder<'default' | Locked>
249
+ defaultTo: (value: unknown) => 'default' extends Locked ? never : ColumnBuilder<'default' | Locked>
250
+ index: () => 'index' extends Locked ? never : ColumnBuilder<'index' | Locked>
251
+ isAlter: boolean
252
+ isPrimary: boolean
253
+ notNullable: () => 'nullability' extends Locked ? never : ForeignIdColumnBuilder<Locked | 'nullability'>
254
+ nullable: () => 'nullability' extends Locked ? never : ForeignIdColumnBuilder<Locked | 'nullability'>
255
+ primary: () => 'primary' extends Locked ? never : ColumnBuilder<'primary' | Locked>
256
+ readonly name: string
257
+ storedAs: (expression: string) => 'generated' extends Locked ? never : ColumnBuilder<Locked | 'generated'>
258
+ toColumnSQL: (dialect?: DialectName) => string
259
+ unique: () => 'unique' extends Locked ? never : ColumnBuilder<'unique' | Locked>
260
+ unsigned: () => 'unsigned' extends Locked ? never : ColumnBuilder<'unsigned' | Locked>
261
+ useCurrent: () => 'default' extends Locked ? never : ColumnBuilder<'default' | Locked>
262
+ useCurrentOnUpdate: () => ForeignIdColumnBuilder<Locked>
263
+ virtualAs: (expression: string) => 'generated' extends Locked ? never : ColumnBuilder<Locked | 'generated'>
264
+ wantsIndex: boolean
265
+ }
266
+
267
+ class ForeignKeyBuilder = {
268
+ new (_column: string): ForeignKeyBuilder
269
+ cascadeOnDelete: () => ForeignKeyBuilder
270
+ cascadeOnUpdate: () => ForeignKeyBuilder
271
+ nullOnDelete: () => ForeignKeyBuilder
272
+ on: (table: string) => ForeignKeyBuilder
273
+ onDelete: (action: FKAction) => ForeignKeyBuilder
274
+ onUpdate: (action: FKAction) => ForeignKeyBuilder
275
+ references: (columnOrTableDotColumn: string) => ForeignKeyBuilder
276
+ restrictOnDelete: () => ForeignKeyBuilder
277
+ toConstraintSQL: () => string
278
+ }
279
+
280
+ class HookRegistry = {
281
+ new (): HookRegistry
282
+ static onAfterRun: ((ModelClass: ClassRef, hook: HookName, model: unknown) => void) | undefined
283
+ static register: <T>(ModelClass: ClassRef, hook: HookName, fn: HookFn<T>) => void
284
+ static run: <T>(ModelClass: ClassRef, hook: HookName, model: T) => Promise<void>
285
+ }
286
+
287
+ class JsonCast = {
288
+ new <T = unknown>(mapper?: CastMapper<T> | undefined): JsonCast<T>
289
+ fields: () => CastField[]
290
+ get: (dbValue: unknown) => T | null
291
+ readonly shape: 'object'
292
+ set: (value: T | null) => unknown
293
+ }
294
+
295
+ class Migration = {
296
+ new (): Migration
297
+ down: () => Promise<void>
298
+ up: () => Promise<void>
299
+ }
300
+
301
+ class MigrationError = {
302
+ new (migrationName: string, cause: Error): MigrationError
303
+ readonly code: string
304
+ readonly context?: Record<string, unknown> | undefined
305
+ readonly status: number
306
+ }
307
+
308
+ class MigrationRan = {
309
+ new (name: string, direction: 'up' | 'down', durationMs: number, ok: boolean, error?: string | undefined): MigrationRan
310
+ readonly direction: 'down' | 'up'
311
+ readonly durationMs: number
312
+ readonly error?: string | undefined
313
+ readonly name: string
314
+ readonly ok: boolean
315
+ }
316
+
317
+ class MigrationRunner = {
318
+ new (options: { connection: SQLInstance; table?: string; }): MigrationRunner
319
+ pending: (entries: MigrationEntry[]) => Promise<string[]>
320
+ reset: (entries: MigrationEntry[]) => Promise<void>
321
+ rollback: (entries: MigrationEntry[]) => Promise<string[]>
322
+ rollbackFromDirectory: (dir: string) => Promise<string[]>
323
+ run: (entries: MigrationEntry[]) => Promise<string[]>
324
+ runFromDirectory: (dir: string) => Promise<string[]>
325
+ status: (entries: MigrationEntry[]) => Promise<MigrationStatus[]>
326
+ willRollBackOnFailure: boolean
327
+ }
328
+
329
+ class Model = {
330
+ new (): BaseModel
331
+ static _isFillable: (key: string) => boolean
332
+ static _unscopedQuery: <T extends BaseModel>(this: ModelCtor<T>) => ModelQueryBuilder<T>
333
+ static addGlobalScope: <T extends BaseModel>(this: ModelCtor<T>, name: string, callback: GlobalScopeCallback) => void
334
+ static all: <T extends BaseModel>(this: ModelCtor<T>) => Promise<T[]>
335
+ static appends: string[]
336
+ static bulkInsert: <T extends BaseModel>(this: ModelCtor<T>, records: InsertPayload<T>[]) => Promise<number>
337
+ static casts?: Record<string, 'boolean' | 'date' | 'datetime' | 'array' | 'integer' | 'json' | 'float' | 'enum' | 'immutable_datetime' | 'encrypted' | 'encrypted:json' | `decimal:${number}` | { get?: (dbValue: unknown) => unknown; set?: (jsValue: unknown) => unknown;} | CastContract<unknown> | undefined>
338
+ static connection?: string
339
+ static count: <T extends BaseModel>(this: ModelCtor<T>) => Promise<number>
340
+ static create: <T extends BaseModel, F extends string = string>(this: ModelCtor<T> & { fillable?: readonly F[] | undefined;}, data: FillablePayload<T, F>) => Promise<T>
341
+ static createMany: <T extends BaseModel>(this: ModelCtor<T>, records: InsertPayload<T>[]) => Promise<T[]>
342
+ static dispatchesEvents?: Record<string, new (model: unknown) => object>
343
+ static encryptable?: string[]
344
+ static fillable?: readonly string[]
345
+ static find: <T extends BaseModel>(this: ModelCtor<T>, id: number | string) => Promise<T | null>
346
+ static findBy: <T extends BaseModel>(this: ModelCtor<T>, column: string, value: unknown) => Promise<T | null>
347
+ static findMany: <T extends BaseModel>(this: ModelCtor<T>, ids: (number | string)[]) => Promise<T[]>
348
+ static findOrFail: <T extends BaseModel>(this: ModelCtor<T>, id: number | string) => Promise<T>
349
+ static findOrNew: <T extends BaseModel>(this: ModelCtor<T>, id: number | string) => Promise<T>
350
+ static first: <T extends BaseModel>(this: ModelCtor<T>) => Promise<T | null>
351
+ static firstOrCreate: <T extends BaseModel>(this: ModelCtor<T>, search: UpdatePayload<T>, create?: UpdatePayload<T>) => Promise<T>
352
+ static firstOrFail: <T extends BaseModel>(this: ModelCtor<T>) => Promise<T>
353
+ static firstOrNew: <T extends BaseModel>(this: ModelCtor<T>, search: UpdatePayload<T>, values?: UpdatePayload<T>) => Promise<T>
354
+ static forceCreate: <T extends BaseModel>(this: ModelCtor<T>, data: Record<string, unknown>) => Promise<T>
355
+ static fromRow: (row: Record<string, unknown>) => BaseModel
356
+ static guarded?: readonly string[]
357
+ static hashable?: string[]
358
+ static hidden: string[]
359
+ static implicitBinding?: boolean
360
+ static implicitBindingKey?: string
361
+ static latest: <T extends BaseModel>(this: ModelCtor<T>, column?: string) => ModelQueryBuilder<T>
362
+ static loadCount: <T extends BaseModel>(this: typeof BaseModel, models: T[], relations: string | string[]) => Promise<T[]>
363
+ static massPrune: boolean
364
+ static observe: <T extends BaseModel>(this: ModelCtor<T>, ObserverClass: new () => ModelObserver<T>) => void
365
+ static oldest: <T extends BaseModel>(this: ModelCtor<T>, column?: string) => ModelQueryBuilder<T>
366
+ static orderBy: <T extends BaseModel>(this: ModelCtor<T>, column: string, direction?: OrderDirection) => ModelQueryBuilder<T>
367
+ static paginate: <T extends BaseModel>(this: ModelCtor<T>, perPage?: number, page?: number, pageName?: string) => Promise<PaginateResult<T>>
368
+ static primaryKey: string
369
+ static prunable?: <T extends BaseModel>(this: ModelCtor<T>) => ModelQueryBuilder<T>
370
+ static prune: <T extends BaseModel>(this: ModelCtor<T>, chunkSize?: number) => Promise<number>
371
+ static query: <T extends BaseModel>(this: ModelCtor<T>) => ModelQueryBuilder<T>
372
+ static reactiveCasts: boolean
373
+ static registerConnection: (name: string, conn: SQLInstance, dialect?: Dialect) => void
374
+ static reguard: () => void
375
+ static removeGlobalScope: <T extends BaseModel>(this: ModelCtor<T>, name: string) => void
376
+ static saveMany: <T extends BaseModel>(this: ModelCtor<T>, models: T[]) => Promise<T[]>
377
+ static scope: <Args extends unknown[]>(fn: (query: QueryBuilder, ...args: Args) => void) => (...args: Args) => ScopeApplicator
378
+ static softDeletes: boolean
379
+ static table: string
380
+ static timestamps: boolean
381
+ static unguard: () => void
382
+ static unguarded: boolean
383
+ static updateOrCreate: <T extends BaseModel>(this: ModelCtor<T>, search: UpdatePayload<T>, values?: UpdatePayload<T>) => Promise<T>
384
+ static upsert: <T extends BaseModel>(this: ModelCtor<T>, data: InsertPayload<T>, conflictKeys: (keyof T & string)[], updateCols?: (keyof T & string)[]) => Promise<void>
385
+ static using: Compose
386
+ static visible: string[]
387
+ static where: { <T extends BaseModel>(this: ModelCtor<T>, column: string, value: unknown): ModelQueryBuilder<T>; <T extends BaseModel>(this: ModelCtor<T>, column: string, operator: WhereOperator, value: unknown): ModelQueryBuilder<T>;}
388
+ static whereIn: <T extends BaseModel>(this: ModelCtor<T>, column: string, values: unknown[]) => ModelQueryBuilder<T>
389
+ static withoutGuard: <T>(callback: () => T | Promise<T>) => Promise<T>
390
+ static withoutTimestamps: <R>(callback: () => Promise<R> | R) => Promise<R>
391
+ $dirty: () => Record<string, unknown>
392
+ append: (...keys: string[]) => BaseModel
393
+ associate: (relation: string, model: BaseModel) => BaseModel
394
+ createdAt?: Date
395
+ decrement: (column: 'id' | 'createdAt' | 'updatedAt' | '__isZerotalModel' | 'fill' | 'forceFill' | 'save' | 'delete' | 'load' | 'loadMissing' | 'fresh' | 'refresh' | 'replicate' | 'touch' | 'is' | 'isNot' | 'increment' | 'decrement' | 'loadCount' | 'loadSum' | 'loadAvg' | 'loadMin' | 'loadMax' | 'makeHidden' | 'makeVisible' | 'append' | 'associate' | 'dissociate' | 'isDirty' | '$dirty' | 'markDirty' | 'toJSON', amount?: number) => Promise<BaseModel>
396
+ delete: () => Promise<void>
397
+ dissociate: (relation: string) => BaseModel
398
+ fill: (data: Partial<InsertPayload<BaseModel>>) => BaseModel
399
+ forceFill: (data: Record<string, unknown>) => BaseModel
400
+ fresh: () => Promise<BaseModel>
401
+ id: number
402
+ increment: (column: 'id' | 'createdAt' | 'updatedAt' | '__isZerotalModel' | 'fill' | 'forceFill' | 'save' | 'delete' | 'load' | 'loadMissing' | 'fresh' | 'refresh' | 'replicate' | 'touch' | 'is' | 'isNot' | 'increment' | 'decrement' | 'loadCount' | 'loadSum' | 'loadAvg' | 'loadMin' | 'loadMax' | 'makeHidden' | 'makeVisible' | 'append' | 'associate' | 'dissociate' | 'isDirty' | '$dirty' | 'markDirty' | 'toJSON', amount?: number) => Promise<BaseModel>
403
+ is: (other: BaseModel | null | undefined) => boolean
404
+ isDirty: (column?: string) => boolean
405
+ isNot: (other: BaseModel | null | undefined) => boolean
406
+ load: (relations: string[]) => Promise<BaseModel>
407
+ loadAvg: (relation: string, column: string) => Promise<BaseModel>
408
+ loadCount: (relations: string | string[]) => Promise<BaseModel>
409
+ loadMax: (relation: string, column: string) => Promise<BaseModel>
410
+ loadMin: (relation: string, column: string) => Promise<BaseModel>
411
+ loadMissing: (relations: string[]) => Promise<BaseModel>
412
+ loadSum: (relation: string, column: string) => Promise<BaseModel>
413
+ makeHidden: (...keys: string[]) => BaseModel
414
+ makeVisible: (...keys: string[]) => BaseModel
415
+ markDirty: (property: keyof BaseModel) => BaseModel
416
+ readonly __isZerotalModel: true
417
+ refresh: () => Promise<BaseModel>
418
+ replicate: (except?: string[]) => BaseModel
419
+ save: () => Promise<BaseModel>
420
+ toJSON: () => Record<string, unknown>
421
+ touch: () => Promise<BaseModel>
422
+ updatedAt?: Date
423
+ }
424
+
425
+ class ModelChanged = {
426
+ new (model: string, table: string, operation: 'created' | 'updated' | 'deleted'): ModelChanged
427
+ readonly model: string
428
+ readonly operation: 'created' | 'updated' | 'deleted'
429
+ readonly table: string
430
+ }
431
+
432
+ class ModelNotFoundError = {
433
+ new (model: string, id?: number | string): ModelNotFoundError
434
+ readonly code: string
435
+ readonly context?: Record<string, unknown> | undefined
436
+ readonly status: number
437
+ }
438
+
439
+ class ModelQueryBuilder = {
440
+ new <M extends BaseModel>(table: string, sql: SQLInstance, ModelClass: typeof BaseModel): ModelQueryBuilder<M>
441
+ _markUserWhereStart: () => void
442
+ asc: (column?: string) => ModelQueryBuilder<M>
443
+ avg: (column: string) => Promise<number>
444
+ chunk: <T = Record<string, unknown>>(size: number, callback: (rows: T[], page: number) => unknown | Promise<unknown>) => Promise<void>
445
+ chunkById: <T = Record<string, unknown>>(size: number, callback: (rows: T[]) => unknown | Promise<unknown>, column?: string) => Promise<void>
446
+ clone: () => ModelQueryBuilder<M>
447
+ count: () => Promise<number>
448
+ crossJoin: (table: string) => ModelQueryBuilder<M>
449
+ cursor: <T = Record<string, unknown>>(size?: number) => AsyncGenerator<T>
450
+ cursorPaginate: <T = M>(options?: { cursor?: number; limit?: number;} | undefined) => Promise<CursorPaginateResult<T>>
451
+ dd: () => ModelQueryBuilder<M>
452
+ decrement: (column: string, amount?: number) => Promise<void>
453
+ delete: () => Promise<void>
454
+ desc: (column?: string) => ModelQueryBuilder<M>
455
+ distinct: () => ModelQueryBuilder<M>
456
+ doesntExist: () => Promise<boolean>
457
+ doesntHave: (relation: string, callback?: RelationConstraint) => ModelQueryBuilder<M>
458
+ dump: () => ModelQueryBuilder<M>
459
+ each: <T = Record<string, unknown>>(callback: (row: T, index: number) => unknown | Promise<unknown>, size?: number) => Promise<void>
460
+ exists: () => Promise<boolean>
461
+ explain: <T = Record<string, unknown>>() => Promise<T[]>
462
+ findOrFail: (id: number) => Promise<M>
463
+ first: <T = M>() => Promise<T | null>
464
+ firstOrFail: () => Promise<M>
465
+ from: (table: string) => ModelQueryBuilder<M>
466
+ get: <T = M>() => Promise<T[]>
467
+ groupBy: (...columns: string[]) => ModelQueryBuilder<M>
468
+ has: (relation: string, operator?: string, count?: number) => ModelQueryBuilder<M>
469
+ having: (column: string, operatorOrValue: unknown, value?: unknown) => ModelQueryBuilder<M>
470
+ inRandomOrder: () => ModelQueryBuilder<M>
471
+ increment: (column: string, amount?: number) => Promise<void>
472
+ insert: (data: Record<string, unknown>) => Promise<void>
473
+ join: (table: string, first: string, operator: string, second: string) => ModelQueryBuilder<M>
474
+ joinSub: (sub: QueryBuilder | ((q: QueryBuilder) => void), alias: string, first: string, operator: string, second: string, type?: JoinType) => ModelQueryBuilder<M>
475
+ keysetPaginate: <T = M>(options?: KeysetOptions) => Promise<KeysetPaginateResult<T>>
476
+ latest: (column?: string) => ModelQueryBuilder<M>
477
+ lazy: <T = Record<string, unknown>>(size?: number) => AsyncGenerator<T>
478
+ lazyById: <T = Record<string, unknown>>(size?: number, column?: string) => AsyncGenerator<T>
479
+ leftJoin: (table: string, first: string, operator: string, second: string) => ModelQueryBuilder<M>
480
+ limit: (n: number) => ModelQueryBuilder<M>
481
+ lockForUpdate: () => ModelQueryBuilder<M>
482
+ max: (column: string) => Promise<number>
483
+ min: (column: string) => Promise<number>
484
+ offset: (n: number) => ModelQueryBuilder<M>
485
+ oldest: (column?: string) => ModelQueryBuilder<M>
486
+ orDoesntHave: (relation: string, callback?: RelationConstraint) => ModelQueryBuilder<M>
487
+ orHas: (relation: string, operator?: string, count?: number) => ModelQueryBuilder<M>
488
+ orWhere: { (column: string, value: unknown): ModelQueryBuilder<M>; (column: string, operator: WhereOperator, value: unknown): ModelQueryBuilder<M>; (group: (query: ModelQueryBuilder<M>) => void): ModelQueryBuilder<M>;}
489
+ orWhereBetween: (column: string, range: [unknown, unknown]) => ModelQueryBuilder<M>
490
+ orWhereColumn: (first: string, operatorOrSecond: string, second?: string) => ModelQueryBuilder<M>
491
+ orWhereDoesntHave: (relation: string, callback?: RelationConstraint) => ModelQueryBuilder<M>
492
+ orWhereExists: (callback: (q: QueryBuilder) => void) => ModelQueryBuilder<M>
493
+ orWhereHas: (relation: string, callback?: RelationConstraint) => ModelQueryBuilder<M>
494
+ orWhereIn: (column: string, values: unknown[]) => ModelQueryBuilder<M>
495
+ orWhereLike: (column: string, value: string) => ModelQueryBuilder<M>
496
+ orWhereNotBetween: (column: string, range: [unknown, unknown]) => ModelQueryBuilder<M>
497
+ orWhereNotExists: (callback: (q: QueryBuilder) => void) => ModelQueryBuilder<M>
498
+ orWhereNotIn: (column: string, values: unknown[]) => ModelQueryBuilder<M>
499
+ orWhereNotLike: (column: string, value: string) => ModelQueryBuilder<M>
500
+ orWhereNotNull: (column: string) => ModelQueryBuilder<M>
501
+ orWhereNull: (column: string) => ModelQueryBuilder<M>
502
+ orWhereRaw: (sql: string, bindings?: unknown[]) => ModelQueryBuilder<M>
503
+ orWhereRelation: (relation: string, column: string, operatorOrValue: unknown, value?: unknown) => ModelQueryBuilder<M>
504
+ orderBy: (column: string, direction?: OrderDirection) => ModelQueryBuilder<M>
505
+ orderByDesc: (column: string) => ModelQueryBuilder<M>
506
+ orderByRaw: (expression: string) => ModelQueryBuilder<M>
507
+ paginate: <T = M>(perPage?: number, page?: number, pageName?: string) => Promise<PaginateResult<T>>
508
+ pluck: <V = unknown>(column: string, key?: string) => Promise<V[] | Record<string, V>>
509
+ reorder: (column?: string, direction?: OrderDirection) => ModelQueryBuilder<M>
510
+ rightJoin: (table: string, first: string, operator: string, second: string) => ModelQueryBuilder<M>
511
+ select: (...columns: string[]) => ModelQueryBuilder<M>
512
+ selectRaw: (expression: string) => ModelQueryBuilder<M>
513
+ sharedLock: () => ModelQueryBuilder<M>
514
+ simplePaginate: <T = M>(perPage?: number, page?: number) => Promise<SimplePaginateResult<T>>
515
+ sole: <T = Record<string, unknown>>() => Promise<T>
516
+ sum: (column: string) => Promise<number>
517
+ toRawSql: () => string
518
+ toSql: () => string
519
+ toSqlWithBindings: () => { sql: string; bindings: unknown[];}
520
+ union: (other: QueryBuilder, all?: boolean) => ModelQueryBuilder<M>
521
+ unionAll: (other: QueryBuilder) => ModelQueryBuilder<M>
522
+ update: (data: Record<string, unknown>) => Promise<void>
523
+ updateOrInsert: (attributes: Record<string, unknown>, values?: Record<string, unknown>) => Promise<boolean>
524
+ value: <V = unknown>(column: string) => Promise<V | null>
525
+ when: (condition: unknown, callback: (q: QueryBuilder, value: unknown) => void) => ModelQueryBuilder<M>
526
+ where: { (column: string, value: unknown): ModelQueryBuilder<M>; (column: string, operator: WhereOperator, value: unknown): ModelQueryBuilder<M>; (group: (query: ModelQueryBuilder<M>) => void): ModelQueryBuilder<M>;}
527
+ whereAll: (columns: string[], operator: string, value: unknown) => ModelQueryBuilder<M>
528
+ whereAny: (columns: string[], operator: string, value: unknown) => ModelQueryBuilder<M>
529
+ whereBetween: (column: string, range: [unknown, unknown]) => ModelQueryBuilder<M>
530
+ whereColumn: (first: string, operatorOrSecond: string, second?: string) => ModelQueryBuilder<M>
531
+ whereDate: (column: string, operatorOrValue: unknown, value?: unknown) => ModelQueryBuilder<M>
532
+ whereDay: (column: string, operatorOrValue: unknown, value?: unknown) => ModelQueryBuilder<M>
533
+ whereDoesntHave: (relation: string, callback?: RelationConstraint) => ModelQueryBuilder<M>
534
+ whereExists: (callback: (q: QueryBuilder) => void) => ModelQueryBuilder<M>
535
+ whereHas: (relation: string, callback?: RelationConstraint, operator?: string, count?: number) => ModelQueryBuilder<M>
536
+ whereIn: (column: string, values: unknown[]) => ModelQueryBuilder<M>
537
+ whereJson: (column: string, value: unknown) => ModelQueryBuilder<M>
538
+ whereLike: (column: string, value: string) => ModelQueryBuilder<M>
539
+ whereMonth: (column: string, operatorOrValue: unknown, value?: unknown) => ModelQueryBuilder<M>
540
+ whereNotBetween: (column: string, range: [unknown, unknown]) => ModelQueryBuilder<M>
541
+ whereNotExists: (callback: (q: QueryBuilder) => void) => ModelQueryBuilder<M>
542
+ whereNotIn: (column: string, values: unknown[]) => ModelQueryBuilder<M>
543
+ whereNotLike: (column: string, value: string) => ModelQueryBuilder<M>
544
+ whereNotNull: (column: string) => ModelQueryBuilder<M>
545
+ whereNull: (column: string) => ModelQueryBuilder<M>
546
+ whereRaw: (sql: string, bindings?: unknown[]) => ModelQueryBuilder<M>
547
+ whereRelation: (relation: string, column: string, operatorOrValue: unknown, value?: unknown) => ModelQueryBuilder<M>
548
+ whereTime: (column: string, operatorOrValue: unknown, value?: unknown) => ModelQueryBuilder<M>
549
+ whereYear: (column: string, operatorOrValue: unknown, value?: unknown) => ModelQueryBuilder<M>
550
+ with: { <K extends keyof M & string>(relation: K): ModelQueryBuilder<Omit<M, K> & { [K in K]: M[K] extends ManyToMany<infer T> ? ManyToMany<T> : M[K] extends HasMany<infer T> ? T[] : M[K] extends BelongsTo<infer T> ? T | null : M[K] extends HasOne<infer T> ? T | null : M[K] extends MorphTo<infer T> ? T | null : M[K] extends MorphMany<infer T> ? T[] : M[K] extends MorphOne<infer T> ? T | null : M[K]; } & BaseModel>; (relation: string, constraint: RelationConstraint): ModelQueryBuilder<M>; (relations: Array<string | Record<string, RelationConstraint>>): ModelQueryBuilder<M>; (map: Record<string, RelationConstraint | true>): ModelQueryBuilder<M>;}
551
+ withAvg: (relation: string, column: string, constraint?: RelationConstraint) => ModelQueryBuilder<M>
552
+ withCount: (relation: string | string[] | Record<string, RelationConstraint>, constraint?: RelationConstraint) => ModelQueryBuilder<M>
553
+ withExists: (relation: string, constraint?: RelationConstraint) => ModelQueryBuilder<M>
554
+ withMax: (relation: string, column: string, constraint?: RelationConstraint) => ModelQueryBuilder<M>
555
+ withMin: (relation: string, column: string, constraint?: RelationConstraint) => ModelQueryBuilder<M>
556
+ withScopes: (callback: (scopes: any) => void) => ModelQueryBuilder<M>
557
+ withSum: (relation: string, column: string, constraint?: RelationConstraint) => ModelQueryBuilder<M>
558
+ withWhereHas: (relation: string, callback?: RelationConstraint) => ModelQueryBuilder<M>
559
+ withoutGlobalScope: (...names: string[]) => ModelQueryBuilder<M>
560
+ withoutGlobalScopes: () => ModelQueryBuilder<M>
561
+ withoutTenancy: () => ModelQueryBuilder<M>
562
+ }
563
+
564
+ class MysqlDialect = {
565
+ new (): MysqlDialect
566
+ advisoryLockSql: (key: number) => DialectQuery
567
+ advisoryUnlockSql: (key: number) => DialectQuery
568
+ autoIncrementColumn: (column: string) => string
569
+ dateExpr: (part: DatePart, column: string) => string
570
+ hasColumnSql: (table: string, column: string) => DialectQuery
571
+ hasTableSql: (table: string) => DialectQuery
572
+ readonly name: 'mysql'
573
+ readonly supportsAdvisoryLocks: true
574
+ readonly supportsTransactionalDdl: false
575
+ }
576
+
577
+ class NPlusOneDetected = {
578
+ new (fingerprint: string, count: number, ctx: object | undefined): NPlusOneDetected
579
+ readonly count: number
580
+ readonly ctx: object | undefined
581
+ readonly fingerprint: string
582
+ }
583
+
584
+ class NPlusOneError = {
585
+ new (fingerprint: string, count: number, distinctArgs?: number): NPlusOneError
586
+ readonly code: string
587
+ readonly context?: Record<string, unknown> | undefined
588
+ readonly count: number
589
+ readonly distinctArgs: number
590
+ readonly fingerprint: string
591
+ readonly status: number
592
+ }
593
+
594
+ class OrmContext = {
595
+ new (): OrmContext
596
+ globalScopes: Map<ClassRef, Map<string, unknown>>
597
+ hooks: Map<ClassRef, Map<string, unknown[]>>
598
+ namedConnections: Map<string, SQLInstance>
599
+ overrideConnection: SQLInstance | null
600
+ transitionCallbacks: Map<ClassRef, Map<string, unknown[]>>
601
+ }
602
+
603
+ class PostgresDialect = {
604
+ new (): PostgresDialect
605
+ advisoryLockSql: (key: number) => DialectQuery
606
+ advisoryUnlockSql: (key: number) => DialectQuery
607
+ autoIncrementColumn: (column: string) => string
608
+ dateExpr: (part: DatePart, column: string) => string
609
+ hasColumnSql: (table: string, column: string) => DialectQuery
610
+ hasTableSql: (table: string) => DialectQuery
611
+ readonly name: 'postgres'
612
+ readonly supportsAdvisoryLocks: true
613
+ readonly supportsTransactionalDdl: true
614
+ }
615
+
616
+ class QueryBuilder = {
617
+ new (table: string, sql: SQLInstance): QueryBuilder
618
+ _markUserWhereStart: () => void
619
+ asc: (column?: string) => QueryBuilder
620
+ avg: (column: string) => Promise<number>
621
+ chunk: <T = Record<string, unknown>>(size: number, callback: (rows: T[], page: number) => unknown | Promise<unknown>) => Promise<void>
622
+ chunkById: <T = Record<string, unknown>>(size: number, callback: (rows: T[]) => unknown | Promise<unknown>, column?: string) => Promise<void>
623
+ clone: () => QueryBuilder
624
+ count: () => Promise<number>
625
+ crossJoin: (table: string) => QueryBuilder
626
+ cursor: <T = Record<string, unknown>>(size?: number) => AsyncGenerator<T>
627
+ cursorPaginate: <T = Record<string, unknown>>(options?: { cursor?: number; limit?: number; column?: string;}) => Promise<CursorPaginateResult<T>>
628
+ dd: () => QueryBuilder
629
+ decrement: (column: string, amount?: number) => Promise<void>
630
+ delete: () => Promise<void>
631
+ desc: (column?: string) => QueryBuilder
632
+ distinct: () => QueryBuilder
633
+ doesntExist: () => Promise<boolean>
634
+ dump: () => QueryBuilder
635
+ each: <T = Record<string, unknown>>(callback: (row: T, index: number) => unknown | Promise<unknown>, size?: number) => Promise<void>
636
+ exists: () => Promise<boolean>
637
+ explain: <T = Record<string, unknown>>() => Promise<T[]>
638
+ first: <T = Record<string, unknown>>() => Promise<T | null>
639
+ from: (table: string) => QueryBuilder
640
+ get: <T = Record<string, unknown>>() => Promise<T[]>
641
+ groupBy: (...columns: string[]) => QueryBuilder
642
+ having: (column: string, operatorOrValue: unknown, value?: unknown) => QueryBuilder
643
+ inRandomOrder: () => QueryBuilder
644
+ increment: (column: string, amount?: number) => Promise<void>
645
+ insert: (data: Record<string, unknown>) => Promise<void>
646
+ join: (table: string, first: string, operator: string, second: string) => QueryBuilder
647
+ joinSub: (sub: QueryBuilder | ((q: QueryBuilder) => void), alias: string, first: string, operator: string, second: string, type?: JoinType) => QueryBuilder
648
+ keysetPaginate: <T = Record<string, unknown>>(options?: KeysetOptions) => Promise<KeysetPaginateResult<T>>
649
+ latest: (column?: string) => QueryBuilder
650
+ lazy: <T = Record<string, unknown>>(size?: number) => AsyncGenerator<T>
651
+ lazyById: <T = Record<string, unknown>>(size?: number, column?: string) => AsyncGenerator<T>
652
+ leftJoin: (table: string, first: string, operator: string, second: string) => QueryBuilder
653
+ limit: (n: number) => QueryBuilder
654
+ lockForUpdate: () => QueryBuilder
655
+ max: (column: string) => Promise<number>
656
+ min: (column: string) => Promise<number>
657
+ offset: (n: number) => QueryBuilder
658
+ oldest: (column?: string) => QueryBuilder
659
+ orWhere: { (column: string, value: unknown): QueryBuilder; (column: string, operator: WhereOperator, value: unknown): QueryBuilder; (group: (query: QueryBuilder) => void): QueryBuilder;}
660
+ orWhereBetween: (column: string, range: [unknown, unknown]) => QueryBuilder
661
+ orWhereColumn: (first: string, operatorOrSecond: string, second?: string) => QueryBuilder
662
+ orWhereExists: (callback: (q: QueryBuilder) => void) => QueryBuilder
663
+ orWhereIn: (column: string, values: unknown[]) => QueryBuilder
664
+ orWhereLike: (column: string, value: string) => QueryBuilder
665
+ orWhereNotBetween: (column: string, range: [unknown, unknown]) => QueryBuilder
666
+ orWhereNotExists: (callback: (q: QueryBuilder) => void) => QueryBuilder
667
+ orWhereNotIn: (column: string, values: unknown[]) => QueryBuilder
668
+ orWhereNotLike: (column: string, value: string) => QueryBuilder
669
+ orWhereNotNull: (column: string) => QueryBuilder
670
+ orWhereNull: (column: string) => QueryBuilder
671
+ orWhereRaw: (sql: string, bindings?: unknown[]) => QueryBuilder
672
+ orderBy: (column: string, direction?: OrderDirection) => QueryBuilder
673
+ orderByDesc: (column: string) => QueryBuilder
674
+ orderByRaw: (expression: string) => QueryBuilder
675
+ paginate: <T = Record<string, unknown>>(perPage?: number, page?: number, pageName?: string) => Promise<PaginateResult<T>>
676
+ pluck: <V = unknown>(column: string, key?: string) => Promise<V[] | Record<string, V>>
677
+ reorder: (column?: string, direction?: OrderDirection) => QueryBuilder
678
+ rightJoin: (table: string, first: string, operator: string, second: string) => QueryBuilder
679
+ select: (...columns: string[]) => QueryBuilder
680
+ selectRaw: (expression: string) => QueryBuilder
681
+ sharedLock: () => QueryBuilder
682
+ simplePaginate: <T = Record<string, unknown>>(perPage?: number, page?: number, pageName?: string) => Promise<SimplePaginateResult<T>>
683
+ sole: <T = Record<string, unknown>>() => Promise<T>
684
+ sum: (column: string) => Promise<number>
685
+ toRawSql: () => string
686
+ toSql: () => string
687
+ toSqlWithBindings: () => { sql: string; bindings: unknown[];}
688
+ union: (other: QueryBuilder, all?: boolean) => QueryBuilder
689
+ unionAll: (other: QueryBuilder) => QueryBuilder
690
+ update: (data: Record<string, unknown>) => Promise<void>
691
+ updateOrInsert: (attributes: Record<string, unknown>, values?: Record<string, unknown>) => Promise<boolean>
692
+ value: <V = unknown>(column: string) => Promise<V | null>
693
+ when: (condition: unknown, callback: (q: QueryBuilder, value: unknown) => void) => QueryBuilder
694
+ where: { (column: string, value: unknown): QueryBuilder; (column: string, operator: WhereOperator, value: unknown): QueryBuilder; (group: (query: QueryBuilder) => void): QueryBuilder;}
695
+ whereAll: (columns: string[], operator: string, value: unknown) => QueryBuilder
696
+ whereAny: (columns: string[], operator: string, value: unknown) => QueryBuilder
697
+ whereBetween: (column: string, range: [unknown, unknown]) => QueryBuilder
698
+ whereColumn: (first: string, operatorOrSecond: string, second?: string) => QueryBuilder
699
+ whereDate: (column: string, operatorOrValue: unknown, value?: unknown) => QueryBuilder
700
+ whereDay: (column: string, operatorOrValue: unknown, value?: unknown) => QueryBuilder
701
+ whereExists: (callback: (q: QueryBuilder) => void) => QueryBuilder
702
+ whereIn: (column: string, values: unknown[]) => QueryBuilder
703
+ whereJson: (column: string, value: unknown) => QueryBuilder
704
+ whereLike: (column: string, value: string) => QueryBuilder
705
+ whereMonth: (column: string, operatorOrValue: unknown, value?: unknown) => QueryBuilder
706
+ whereNotBetween: (column: string, range: [unknown, unknown]) => QueryBuilder
707
+ whereNotExists: (callback: (q: QueryBuilder) => void) => QueryBuilder
708
+ whereNotIn: (column: string, values: unknown[]) => QueryBuilder
709
+ whereNotLike: (column: string, value: string) => QueryBuilder
710
+ whereNotNull: (column: string) => QueryBuilder
711
+ whereNull: (column: string) => QueryBuilder
712
+ whereRaw: (sql: string, bindings?: unknown[]) => QueryBuilder
713
+ whereTime: (column: string, operatorOrValue: unknown, value?: unknown) => QueryBuilder
714
+ whereYear: (column: string, operatorOrValue: unknown, value?: unknown) => QueryBuilder
715
+ }
716
+
717
+ class QueryExecuted = {
718
+ new (sql: string, bindings: unknown[], startMs: number, durationMs: number, rowCount: number, ctx: object | undefined): QueryExecuted
719
+ readonly bindings: unknown[]
720
+ readonly ctx: object | undefined
721
+ readonly durationMs: number
722
+ readonly rowCount: number
723
+ readonly sql: string
724
+ readonly startMs: number
725
+ }
726
+
727
+ class RelationNotLoadedError = {
728
+ new (relation: string, model: string): RelationNotLoadedError
729
+ readonly code: string
730
+ readonly context?: Record<string, unknown> | undefined
731
+ readonly status: number
732
+ }
733
+
734
+ class Seeder = {
735
+ new (): Seeder
736
+ call: (seeders: (new () => Seeder)[]) => Promise<void>
737
+ run: () => Promise<void>
738
+ }
739
+
740
+ class SqliteDialect = {
741
+ new (): SqliteDialect
742
+ advisoryLockSql: () => DialectQuery | null
743
+ advisoryUnlockSql: () => DialectQuery | null
744
+ autoIncrementColumn: (column: string) => string
745
+ dateExpr: (part: DatePart, column: string) => string
746
+ hasColumnSql: (table: string, column: string) => DialectQuery
747
+ hasTableSql: (table: string) => DialectQuery
748
+ readonly name: 'sqlite'
749
+ readonly supportsAdvisoryLocks: false
750
+ readonly supportsTransactionalDdl: true
751
+ }
752
+
753
+ class StateError = {
754
+ new (model: string, from: string, to: string, detail?: string): StateError
755
+ readonly code: string
756
+ readonly context?: Record<string, unknown> | undefined
757
+ readonly status: number
758
+ }
759
+
760
+ class TransactionCommitted = {
761
+ new (txId: string, durationMs: number, ctx: object | undefined): TransactionCommitted
762
+ readonly ctx: object | undefined
763
+ readonly durationMs: number
764
+ readonly txId: string
765
+ }
766
+
767
+ class TransactionError = {
768
+ new (message: string): TransactionError
769
+ readonly code: string
770
+ readonly context?: Record<string, unknown> | undefined
771
+ readonly status: number
772
+ }
773
+
774
+ class TransactionRolledBack = {
775
+ new (txId: string, durationMs: number, reason: string | undefined, ctx: object | undefined): TransactionRolledBack
776
+ readonly ctx: object | undefined
777
+ readonly durationMs: number
778
+ readonly reason: string | undefined
779
+ readonly txId: string
780
+ }
781
+
782
+ class TransactionStarted = {
783
+ new (txId: string, ctx: object | undefined): TransactionStarted
784
+ readonly ctx: object | undefined
785
+ readonly txId: string
786
+ }
787
+
788
+ class UnsupportedDialectError = {
789
+ new (feature: string, dialect: string): UnsupportedDialectError
790
+ readonly code: string
791
+ readonly context?: Record<string, unknown> | undefined
792
+ readonly status: number
793
+ }
794
+
795
+ const columnRegistry = Map<ClassRef, Map<string, ColumnOptions>>
796
+
797
+ const DB = { table(tableName: string): QueryBuilder; raw<T = Record<string, unknown>>(sql: TemplateStringsArray | string, ...rest: unknown[]): Promise<T[]>; transaction<T>(callback: (tx?: SQLInstance) => Promise<T>, attempts?: number): Promise<T>; beginTransaction(): Promise<ManualTransaction>; onPrimary(): { table(name: string): QueryBuilder; }; currentTx(): unknown | undefined; advisoryLock<T>(key: number, callback: () => Promise<T>): Promise<T>; preventNPlusOne(options?: NPlusOneOptions): void; allowNPlusOne(pattern: string, options?: { once?: boolean; }): void;}
798
+
799
+ const ModelInspector = { load(pattern: string, cwd?: string): Promise<void>; all(): ModelSchema[]; fromClass(ctor: ClassRef): ModelSchema | null;}
800
+
801
+ const modelsByName = Map<string, ClassRef>
802
+
803
+ const relationRegistry = Map<ClassRef, Map<string, RelationMetadata>>
804
+
805
+ const Schema = { create(table: string, callback: (bp: Blueprint) => void): Promise<void>; createIfNotExists(table: string, callback: (bp: Blueprint) => void): Promise<void>; table(name: string, callback: (bp: Blueprint) => void): Promise<void>; alter(name: string, callback: (bp: Blueprint) => void): Promise<void>; drop(table: string): Promise<void>; dropIfExists(table: string): Promise<void>; rename(from: string, to: string): Promise<void>; hasTable(table: string): Promise<boolean>; hasColumn(table: string, column: string): Promise<boolean>;}
806
+
807
+ const SchemaDiffer = { diff(schemas: ModelSchema[]): Promise<DiffResult>; isEmpty(diff: DiffResult): boolean;}
808
+
809
+ const SchemaInspector = { tables(): Promise<string[]>; columns(table: string): Promise<LiveColumn[] | null>; describe(table: string): Promise<LiveTable | null>;}
810
+
811
+ const TransactionContext = AsyncLocalStorage<SQLInstance>
812
+
813
+ function _clearModelConnections = () => void
814
+
815
+ function _clearTransitionCallbacks = () => void
816
+
817
+ function _getConnection = () => SQLInstance
818
+
819
+ function _getDbConnectionOverride = () => SQLInstance | null
820
+
821
+ function _getDialect = () => 'sqlite' | 'postgres' | 'mysql'
822
+
823
+ function _getModelConnection = () => SQLInstance
824
+
825
+ function _globalScopeRegistry = () => Map<ClassRef, Map<string, GlobalScopeCallback>>
826
+
827
+ function _normaliseSqliteUrl = (raw: string) => string
828
+
829
+ function _resolveConn = (ModelClass?: typeof BaseModel) => SQLInstance
830
+
831
+ function _setBaseModelConnection = (conn: SQLInstance | null) => void
832
+
833
+ function _setBaseModelDialect = (dialect: 'sqlite' | 'postgres' | 'mysql') => void
834
+
835
+ function _setDbConnection = (conn: SQLInstance | null) => void
836
+
837
+ function _setQueryBuilderDialect = (d: Dialect) => void
838
+
839
+ function _setReadReplicas = (primary: SQLInstance, replicas: SQLInstance[]) => void
840
+
841
+ function _suppressHooks = <T>(fn: () => Promise<T>) => Promise<T>
842
+
843
+ function allowNPlusOne = (pattern: string, options?: { once?: boolean;}, ctx?: object | null) => void
844
+
845
+ function arrayOf = <T = unknown>(mapper?: CastMapper<T>) => ArrayCast<T>
846
+
847
+ function belongsTo = (related: () => unknown, options: BelongsToOptions) => (_value: unknown, context: ClassFieldDecoratorContext) => void
848
+
849
+ function column = { (): ColumnDecorator; (type: ColumnShorthand): ColumnDecorator; (options: ColumnOptions): ColumnDecorator; (type: ColumnShorthand, options: Omit<ColumnOptions, 'type'>): ColumnDecorator;}
850
+
851
+ function columnsFor = (ctor: ClassRef) => Map<string, ColumnOptions> | null
852
+
853
+ function createReadWriteRouter = (primary: SQLInstance, replicas: SQLInstance[]) => SQLInstance
854
+
855
+ function currentOrmContext = () => OrmContext
856
+
857
+ function DatabaseConfig = (options?: Partial<DatabaseConfigShape>) => DatabaseConfigShape
858
+
859
+ function generateMigrationContent = (className: string, diff: DiffResult) => string
860
+
861
+ function getDialect = (name: DialectName) => SqlDialect
862
+
863
+ function hasMany = (related: () => unknown, options: HasManyOptions) => (_value: unknown, context: ClassFieldDecoratorContext) => void
864
+
865
+ function hasManyThrough = (related: () => unknown, through: () => unknown, options: HasManyThroughOptions) => (_value: unknown, context: ClassFieldDecoratorContext) => void
866
+
867
+ function hasOne = (related: () => unknown, options: HasOneOptions) => (_value: unknown, context: ClassFieldDecoratorContext) => void
868
+
869
+ function hasOneThrough = (related: () => unknown, through: () => unknown, options: HasManyThroughOptions) => (_value: unknown, context: ClassFieldDecoratorContext) => void
870
+
871
+ function installOrmObservability = (app: Application) => () => void
872
+
873
+ function isEncryptedCast = (cast: unknown) => cast is EncryptedCastName
874
+
875
+ function json = <T = unknown>(mapper?: CastMapper<T>) => JsonCast<T>
876
+
877
+ function manyToMany = (related: () => unknown, options: ManyToManyOptions) => (_value: unknown, context: ClassFieldDecoratorContext) => void
878
+
879
+ function modelByName = (name: string) => ClassRef | undefined
880
+
881
+ function modelForParam = (paramName: string) => ImplicitModel | undefined
882
+
883
+ function morphedByMany = (related: () => unknown, options: MorphedByManyOptions) => (_value: unknown, context: ClassFieldDecoratorContext) => void
884
+
885
+ function morphMany = (related: () => unknown, options: MorphManyOptions) => (_value: unknown, context: ClassFieldDecoratorContext) => void
886
+
887
+ function morphOne = (related: () => unknown, options: MorphOneOptions) => (_value: unknown, context: ClassFieldDecoratorContext) => void
888
+
889
+ function morphTo = (options: MorphToOptions) => (_value: unknown, context: ClassFieldDecoratorContext) => void
890
+
891
+ function morphToMany = (related: () => unknown, options: MorphToManyOptions) => (_value: unknown, context: ClassFieldDecoratorContext) => void
892
+
893
+ function objectOf = <T = unknown>(mapper?: CastMapper<T>) => JsonCast<T>
894
+
895
+ function preventNPlusOne = (options?: NPlusOneOptions) => void
896
+
897
+ function registerColumn = (ctor: ClassRef, name: string, options: ColumnOptions) => void
898
+
899
+ function registerConnectionResolver = (fn: ContextConnectionResolver | null) => void
900
+
901
+ function registerImplicitBinding = () => void
902
+
903
+ function registerModel = (ctor: ClassRef) => void
904
+
905
+ function registerModelConnection = (name: string, conn: SQLInstance, dialect?: Dialect) => void
906
+
907
+ function resetOrmContext = () => void
908
+
909
+ function resolveContainerConnection = () => SQLInstance | undefined
910
+
911
+ function resolveSyncOptions = (raw: unknown) => ResolvedSyncOptions
912
+
913
+ function setConnectionResolver = (fn: ConnectionResolver | null) => void
914
+
915
+ function SoftDeletes = <TBase extends Constructor>(Base: TBase) => { new (...args: any[]): SoftDeletes; prototype: SoftDeletes<any>.SoftDeletes; softDeletes: boolean; withTrashed<T extends BaseModel>(this: SoftDeleteModelClass<T>): ModelQueryBuilder<T>; onlyTrashed<T extends BaseModel>(this: SoftDeleteModelClass<T>): ModelQueryBuilder<T>;} & TBase
916
+
917
+ function State = <TBase extends Constructor>(Base: TBase) => { new (...args: any[]): State; prototype: State<any>.State; stateField: string; states?: Record<string, StateDefinition<string, any>>; onTransition<T>(this: { new (...args: any[]): T; }, toState: string, callback: TransitionCallback<T>): void;} & TBase
918
+
919
+ function synchronizeSchema = (options?: SynchronizeOptions) => Promise<DiffResult>
920
+
921
+ function table = (tableName: string, options?: TableOptions) => TableDecoratorBuilder
922
+
923
+ function useOrmContext = (ctx?: OrmContext) => OrmContext
924
+
925
+ interface BelongsTo = {
926
+ __@___relation__: 'belongsTo'
927
+ __type__: T
928
+ }
929
+
930
+ interface CastContract = {
931
+ get: (dbValue: unknown) => T
932
+ set: (value: T) => unknown
933
+ }
934
+
935
+ interface CastField = {
936
+ label: string
937
+ name: string
938
+ type: string
939
+ }
940
+
941
+ interface ColumnOptions = {
942
+ cast?: 'boolean' | 'date' | 'datetime' | 'array' | 'integer' | 'json' | 'float' | 'enum' | 'immutable_datetime' | 'encrypted' | 'encrypted:json' | `decimal:${number}` | { get?: (dbValue: unknown) => unknown; set?: (jsValue: unknown) => unknown;} | CastContract<unknown>
943
+ default?: unknown
944
+ enumValues?: Record<string, string | number>
945
+ index?: boolean
946
+ nullable?: boolean
947
+ primary?: boolean
948
+ type?: 'string' | 'number' | 'boolean' | 'text' | 'datetime' | 'json'
949
+ unique?: boolean
950
+ }
951
+
952
+ interface Compose = {
953
+ <TBase extends Constructor, A extends Constructor, B extends Constructor, C extends Constructor, D extends Constructor, E extends Constructor, F extends Constructor, G extends Constructor, H extends Constructor>(this: TBase, a: (base: TBase) => A, b: (base: A) => B, c: (base: B) => C, d: (base: C) => D, e: (base: D) => E, f: (base: E) => F, g: (base: F) => G, h: (base: G) => H): H
954
+ <TBase extends Constructor, A extends Constructor, B extends Constructor, C extends Constructor, D extends Constructor, E extends Constructor, F extends Constructor, G extends Constructor>(this: TBase, a: (base: TBase) => A, b: (base: A) => B, c: (base: B) => C, d: (base: C) => D, e: (base: D) => E, f: (base: E) => F, g: (base: F) => G): G
955
+ <TBase extends Constructor, A extends Constructor, B extends Constructor, C extends Constructor, D extends Constructor, E extends Constructor, F extends Constructor>(this: TBase, a: (base: TBase) => A, b: (base: A) => B, c: (base: B) => C, d: (base: C) => D, e: (base: D) => E, f: (base: E) => F): F
956
+ <TBase extends Constructor, A extends Constructor, B extends Constructor, C extends Constructor, D extends Constructor, E extends Constructor>(this: TBase, a: (base: TBase) => A, b: (base: A) => B, c: (base: B) => C, d: (base: C) => D, e: (base: D) => E): E
957
+ <TBase extends Constructor, A extends Constructor, B extends Constructor, C extends Constructor, D extends Constructor>(this: TBase, a: (base: TBase) => A, b: (base: A) => B, c: (base: B) => C, d: (base: C) => D): D
958
+ <TBase extends Constructor, A extends Constructor, B extends Constructor, C extends Constructor>(this: TBase, a: (base: TBase) => A, b: (base: A) => B, c: (base: B) => C): C
959
+ <TBase extends Constructor, A extends Constructor, B extends Constructor>(this: TBase, a: (base: TBase) => A, b: (base: A) => B): B
960
+ <TBase extends Constructor, A extends Constructor>(this: TBase, a: (base: TBase) => A): A
961
+ }
962
+
963
+ interface CursorPaginateResult = {
964
+ data: T[]
965
+ hasMore: boolean
966
+ nextCursor: number | null
967
+ prevCursor: number | null
968
+ }
969
+
970
+ interface DatabaseConfigShape = {
971
+ driver: 'sqlite' | 'postgres' | 'mysql'
972
+ pool?: { max?: number; idleTimeout?: number;}
973
+ replicas?: string[]
974
+ sqlite: { path: string;}
975
+ synchronize?: boolean | { enabled: boolean; disruptive?: boolean;}
976
+ url: string
977
+ }
978
+
979
+ interface DialectQuery = {
980
+ params: unknown[]
981
+ sql: string
982
+ }
983
+
984
+ interface DiffResult = {
985
+ droppedColumns: DroppedColumn[]
986
+ newColumns: NewColumn[]
987
+ newTables: NewTable[]
988
+ }
989
+
990
+ interface DroppedColumn = {
991
+ column: string
992
+ table: string
993
+ }
994
+
995
+ interface HasMany = {
996
+ __@___relation__: 'hasMany'
997
+ __type__: T
998
+ }
999
+
1000
+ interface HasManyThroughOptions = {
1001
+ firstKey: string
1002
+ localKey?: string
1003
+ secondKey: string
1004
+ throughLocalKey?: string
1005
+ }
1006
+
1007
+ interface HasOne = {
1008
+ __@___relation__: 'hasOne'
1009
+ __type__: T
1010
+ }
1011
+
1012
+ interface KeysetOptions = {
1013
+ column?: string
1014
+ cursor?: string | null
1015
+ direction?: 'asc' | 'desc'
1016
+ limit?: number
1017
+ }
1018
+
1019
+ interface KeysetPaginateResult = {
1020
+ data: T[]
1021
+ nextCursor: string | null
1022
+ }
1023
+
1024
+ interface LiveColumn = {
1025
+ name: string
1026
+ nullable: boolean
1027
+ primary: boolean
1028
+ rawType: string
1029
+ }
1030
+
1031
+ interface LiveTable = {
1032
+ columns: LiveColumn[]
1033
+ name: string
1034
+ }
1035
+
1036
+ interface ManualTransaction = {
1037
+ commit: () => Promise<void>
1038
+ readonly sql: SQLInstance
1039
+ rollback: () => Promise<void>
1040
+ table: (name: string) => QueryBuilder
1041
+ }
1042
+
1043
+ interface ManyToMany = {
1044
+ [index: number]: T
1045
+ attach: (id: number | number[], pivotData?: Record<string, unknown>) => Promise<void>
1046
+ detach: (id?: number | number[]) => Promise<void>
1047
+ sync: (ids: number[]) => Promise<void>
1048
+ syncWithoutDetaching: (ids: number[]) => Promise<void>
1049
+ toggle: (id: number | number[]) => Promise<void>
1050
+ updateExistingPivot: (id: number, pivotData: Record<string, unknown>) => Promise<void>
1051
+ }
1052
+
1053
+ interface ManyToManyOptions = {
1054
+ localKey?: string
1055
+ pivotForeignKey: string
1056
+ pivotRelatedKey: string
1057
+ pivotTable: string
1058
+ relatedKey?: string
1059
+ withPivot?: string[]
1060
+ withTimestamps?: boolean
1061
+ }
1062
+
1063
+ interface MigrationEntry = {
1064
+ migration: Migration
1065
+ name: string
1066
+ }
1067
+
1068
+ interface MigrationRecord = {
1069
+ instance: Migration
1070
+ name: string
1071
+ }
1072
+
1073
+ interface MigrationStatus = {
1074
+ batch?: number
1075
+ name: string
1076
+ ran: boolean
1077
+ ranAt?: Date
1078
+ }
1079
+
1080
+ interface ModelColumn = {
1081
+ default: unknown
1082
+ index?: boolean
1083
+ name: string
1084
+ nullable: boolean
1085
+ primary: boolean
1086
+ type: 'string' | 'number' | 'boolean' | 'text' | 'datetime' | 'json' | undefined
1087
+ unique?: boolean
1088
+ }
1089
+
1090
+ interface ModelObserver = {
1091
+ created?: (model: T) => Promise<void> | void
1092
+ creating?: (model: T) => Promise<void> | void
1093
+ deleted?: (model: T) => Promise<void> | void
1094
+ deleting?: (model: T) => Promise<void> | void
1095
+ retrieved?: (model: T) => Promise<void> | void
1096
+ saved?: (model: T) => Promise<void> | void
1097
+ saving?: (model: T) => Promise<void> | void
1098
+ updated?: (model: T) => Promise<void> | void
1099
+ updating?: (model: T) => Promise<void> | void
1100
+ }
1101
+
1102
+ interface ModelSchema = {
1103
+ columns: ModelColumn[]
1104
+ primaryKey: string
1105
+ softDeletes: boolean
1106
+ table: string
1107
+ timestamps: boolean
1108
+ }
1109
+
1110
+ interface MorphedByManyOptions = {
1111
+ morphName: string
1112
+ parentPivotKey: string
1113
+ pivotTable?: string
1114
+ withPivot?: string[]
1115
+ withTimestamps?: boolean
1116
+ }
1117
+
1118
+ interface MorphMany = {
1119
+ __@___relation__: 'morphMany'
1120
+ __type__: T
1121
+ }
1122
+
1123
+ interface MorphManyOptions = {
1124
+ localKey?: string
1125
+ morphName: string
1126
+ }
1127
+
1128
+ interface MorphOne = {
1129
+ __@___relation__: 'morphOne'
1130
+ __type__: T
1131
+ }
1132
+
1133
+ interface MorphOneOptions = {
1134
+ localKey?: string
1135
+ morphName: string
1136
+ }
1137
+
1138
+ interface MorphTo = {
1139
+ __@___relation__: 'morphTo'
1140
+ __type__: T
1141
+ }
1142
+
1143
+ interface MorphToManyOptions = {
1144
+ morphName: string
1145
+ pivotTable?: string
1146
+ relatedPivotKey: string
1147
+ withPivot?: string[]
1148
+ withTimestamps?: boolean
1149
+ }
1150
+
1151
+ interface MorphToOptions = {
1152
+ morphForeignKey?: string
1153
+ morphMap: Record<string, () => unknown>
1154
+ morphTypeColumn?: string
1155
+ }
1156
+
1157
+ interface NewColumn = {
1158
+ column: ModelColumn
1159
+ table: string
1160
+ }
1161
+
1162
+ interface NewTable = {
1163
+ schema: ModelSchema
1164
+ }
1165
+
1166
+ interface NPlusOneOptions = {
1167
+ mode?: 'warn' | 'throw'
1168
+ threshold?: number
1169
+ }
1170
+
1171
+ interface PaginateMeta = {
1172
+ currentPage: number
1173
+ from: number | null
1174
+ lastPage: number
1175
+ path: string
1176
+ perPage: number
1177
+ to: number | null
1178
+ total: number
1179
+ }
1180
+
1181
+ interface PaginateResult = {
1182
+ data: T[]
1183
+ elements: (each?: number) => (number | '...')[]
1184
+ from: number | null
1185
+ hasMorePages: boolean
1186
+ lastPage: number
1187
+ links: (baseUrl?: string, query?: Record<string, string>) => Array<{ page: number; url: string; active: boolean;}>
1188
+ meta: PaginateMeta
1189
+ nextPageUrl: (baseUrl?: string, query?: Record<string, string>) => string | null
1190
+ onFirstPage: boolean
1191
+ onLastPage: boolean
1192
+ page: number
1193
+ perPage: number
1194
+ previousPageUrl: (baseUrl?: string, query?: Record<string, string>) => string | null
1195
+ to: number | null
1196
+ total: number
1197
+ url: (page: number, baseUrl?: string, query?: Record<string, string>) => string
1198
+ }
1199
+
1200
+ interface QueryState = {
1201
+ distinct: boolean
1202
+ groupBys: string[]
1203
+ havings: HavingClause[]
1204
+ joins: JoinClause[]
1205
+ limit: number | undefined
1206
+ lock: string | undefined
1207
+ offset: number | undefined
1208
+ orders: OrderClause[]
1209
+ selects: string[]
1210
+ table: string
1211
+ unions: UnionClause[]
1212
+ wheres: WhereClause[]
1213
+ }
1214
+
1215
+ interface RelationMetadata = {
1216
+ firstKey?: string
1217
+ foreignKey: string
1218
+ localKey: string
1219
+ morphMap?: Record<string, () => unknown>
1220
+ morphTypeColumn?: string
1221
+ pivotColumns?: string[]
1222
+ pivotForeignKey?: string
1223
+ pivotMorphType?: string
1224
+ pivotMorphValue?: string
1225
+ pivotRelatedKey?: string
1226
+ pivotTable?: string
1227
+ pivotTimestamps?: boolean
1228
+ pivotWheres?: [string, unknown][]
1229
+ related: () => unknown
1230
+ secondKey?: string
1231
+ through?: () => unknown
1232
+ throughLocalKey?: string
1233
+ type: RelationType
1234
+ withDefault?: boolean | Record<string, unknown> | ((model: unknown) => void)
1235
+ }
1236
+
1237
+ interface ResolvedSyncOptions = {
1238
+ disruptive: boolean
1239
+ enabled: boolean
1240
+ }
1241
+
1242
+ interface ScopeApplicator = {
1243
+ apply: (query: QueryBuilder) => void
1244
+ }
1245
+
1246
+ interface SimplePaginateResult = {
1247
+ data: T[]
1248
+ from: number | null
1249
+ hasMorePages: boolean
1250
+ nextPageUrl: (baseUrl?: string, query?: Record<string, string>) => string | null
1251
+ onFirstPage: boolean
1252
+ page: number
1253
+ perPage: number
1254
+ previousPageUrl: (baseUrl?: string, query?: Record<string, string>) => string | null
1255
+ to: number | null
1256
+ url: (page: number, baseUrl?: string, query?: Record<string, string>) => string
1257
+ }
1258
+
1259
+ interface SqlDialect = {
1260
+ advisoryLockSql: (key: number) => DialectQuery | null
1261
+ advisoryUnlockSql: (key: number) => DialectQuery | null
1262
+ autoIncrementColumn: (column: string) => string
1263
+ dateExpr: (part: DatePart, column: string) => string
1264
+ hasColumnSql: (table: string, column: string) => DialectQuery
1265
+ hasTableSql: (table: string) => DialectQuery
1266
+ readonly name: DialectName
1267
+ readonly supportsAdvisoryLocks: boolean
1268
+ readonly supportsTransactionalDdl: boolean
1269
+ }
1270
+
1271
+ interface SQLInstance = {
1272
+ <T = Record<string, unknown>>(strings: TemplateStringsArray, ...values: unknown[]): Promise<T[]>
1273
+ begin: <T>(fn: (tx: SQLInstance) => Promise<T>) => Promise<T>
1274
+ end: () => Promise<void>
1275
+ }
1276
+
1277
+ interface StateDefinition = {
1278
+ canTransitionTo: readonly States[]
1279
+ guard?: StateGuard<T>
1280
+ }
1281
+
1282
+ interface SynchronizeOptions = {
1283
+ disruptive?: boolean
1284
+ }
1285
+
1286
+ interface TableDecoratorBuilder = {
1287
+ (target: ClassRef, context?: unknown): void
1288
+ primaryKey: (key: string) => TableDecoratorBuilder
1289
+ withTimestamps: () => TableDecoratorBuilder
1290
+ withoutTimestamps: () => TableDecoratorBuilder
1291
+ }
1292
+
1293
+ interface TableOptions = {
1294
+ primaryKey?: string
1295
+ timestamps?: boolean
1296
+ }
1297
+
1298
+ interface TransitionContext = {
1299
+ current: string
1300
+ intended: string
1301
+ reject: RejectTransition
1302
+ }
1303
+
1304
+ type CastMapper = ((raw: unknown) => T) | (new (...args: never[]) => T)
1305
+
1306
+ type ClassRef = abstract new (...args: never[]) => unknown
1307
+
1308
+ type Columns = { [K in keyof T & string]: K extends `_${string}` ? never : T[K] extends (...args: any[]) => any ? never : K; }[keyof T & string]
1309
+
1310
+ type ColumnShorthand = 'string' | 'number' | 'boolean' | 'text' | 'date' | 'datetime' | 'array' | 'integer' | 'json' | 'float' | 'encrypted' | 'encrypted:json'
1311
+
1312
+ type Constructor = new (...args: any[]) => T
1313
+
1314
+ type ContextConnectionResolver = (ModelClass?: typeof BaseModel) => SQLInstance | null
1315
+
1316
+ type DatePart = 'date' | 'time' | 'year' | 'month' | 'day'
1317
+
1318
+ type DialectName = 'sqlite' | 'postgres' | 'mysql'
1319
+
1320
+ type EncryptedCastName = 'encrypted' | 'encrypted:json'
1321
+
1322
+ type FKAction = 'CASCADE' | 'SET NULL' | 'RESTRICT' | 'NO ACTION'
1323
+
1324
+ type GlobalScopeCallback = (qb: ModelQueryBuilder<BaseModel>) => void
1325
+
1326
+ type HookName = 'beforeCreate' | 'afterCreate' | 'beforeSave' | 'afterSave' | 'beforeUpdate' | 'afterUpdate' | 'beforeDelete' | 'afterDelete' | 'afterFind'
1327
+
1328
+ type InsertPayload = { [P in Exclude<ColumnKeys<T>, AutoManagedKeys>]: Pick<T, ColumnKeys<T>>[P]; }
1329
+
1330
+ type Mixin = (Base: TIn) => TOut
1331
+
1332
+ type OrderDirection = 'asc' | 'desc'
1333
+
1334
+ type RejectTransition = (reason: string) => never
1335
+
1336
+ type RelationConstraint = (query: ModelQueryBuilder<BaseModel>) => void
1337
+
1338
+ type RelationDefinition = RelationMetadata
1339
+
1340
+ type RelationType = 'hasMany' | 'belongsTo' | 'hasOne' | 'manyToMany' | 'morphTo' | 'morphMany' | 'morphOne' | 'hasManyThrough' | 'hasOneThrough' | 'morphToMany' | 'morphedByMany'
1341
+
1342
+ type StateGuard = (model: T, ctx: TransitionContext) => boolean | void | Promise<boolean | void>
1343
+
1344
+ type StateMachine = { [K in States]: StateDefinition<States, T>; }
1345
+
1346
+ type TransitionCallback = (model: T, meta: { from: string; to: string;}) => Promise<void> | void
1347
+
1348
+ type TransitionResult = [ok: true] | [ok: false, error: StateError]
1349
+
1350
+ type UpdatePayload = { [P in keyof InsertPayload<T>]?: InsertPayload<T>[P]; }
1351
+
1352
+ type WhereOperator = '=' | '!=' | '>' | '>=' | '<' | '<=' | 'like' | 'not like' | 'in' | 'not in'
1353
+
1354
+ type WithLoaded = Omit<M, R> & { [K in R]: M[K] extends ManyToMany<infer T> ? ManyToMany<T> : M[K] extends HasMany<infer T> ? T[] : M[K] extends BelongsTo<infer T> ? T | null : M[K] extends HasOne<infer T> ? T | null : M[K] extends MorphTo<infer T> ? T | null : M[K] extends MorphMany<infer T> ? T[] : M[K] extends MorphOne<infer T> ? T | null : M[K]; }
1355
+
1356
+ ## ./commands `(./src/commands/index.ts)`
1357
+
1358
+ class DbSeedCommand = {
1359
+ new (): DbSeedCommand
1360
+ static args: ArgDef[]
1361
+ static commandName: string
1362
+ static description: string
1363
+ static flags: FlagDef[]
1364
+ static needsApp: boolean
1365
+ _readLine: () => Promise<string>
1366
+ _writer: OutputWriter
1367
+ app: unknown
1368
+ args: Record<string, string>
1369
+ ask: (question: string, defaultValue?: string) => Promise<string>
1370
+ choice: (question: string, options: string[]) => Promise<string>
1371
+ confirm: (question: string, defaultValue?: boolean) => Promise<boolean>
1372
+ dim: (msg: string) => void
1373
+ error: (msg: string) => void
1374
+ flags: Record<string, string | number | boolean>
1375
+ info: (msg: string) => void
1376
+ line: (msg: string) => void
1377
+ newLine: () => void
1378
+ run: () => Promise<void>
1379
+ secret: (question: string) => Promise<string>
1380
+ section: (title: string) => void
1381
+ table: (rows: [string, string][], indent?: number) => void
1382
+ warn: (msg: string) => void
1383
+ write: (msg: string) => void
1384
+ }
1385
+
1386
+ class MakeFactoryCommand = {
1387
+ new (): MakeFactoryCommand
1388
+ static args: { name: string; required: boolean; description: string;}[]
1389
+ static commandName: string
1390
+ static description: string
1391
+ static flags: FlagDef[]
1392
+ static needsApp: boolean
1393
+ _readLine: () => Promise<string>
1394
+ _writer: OutputWriter
1395
+ app: unknown
1396
+ args: Record<string, string>
1397
+ ask: (question: string, defaultValue?: string) => Promise<string>
1398
+ choice: (question: string, options: string[]) => Promise<string>
1399
+ confirm: (question: string, defaultValue?: boolean) => Promise<boolean>
1400
+ dim: (msg: string) => void
1401
+ error: (msg: string) => void
1402
+ flags: Record<string, string | number | boolean>
1403
+ info: (msg: string) => void
1404
+ line: (msg: string) => void
1405
+ newLine: () => void
1406
+ run: () => Promise<void>
1407
+ secret: (question: string) => Promise<string>
1408
+ section: (title: string) => void
1409
+ table: (rows: [string, string][], indent?: number) => void
1410
+ warn: (msg: string) => void
1411
+ write: (msg: string) => void
1412
+ }
1413
+
1414
+ class MakeMigrationCommand = {
1415
+ new (): MakeMigrationCommand
1416
+ static args: { name: string; required: boolean; description: string;}[]
1417
+ static commandName: string
1418
+ static description: string
1419
+ static flags: FlagDef[]
1420
+ static needsApp: boolean
1421
+ _readLine: () => Promise<string>
1422
+ _writer: OutputWriter
1423
+ app: unknown
1424
+ args: Record<string, string>
1425
+ ask: (question: string, defaultValue?: string) => Promise<string>
1426
+ choice: (question: string, options: string[]) => Promise<string>
1427
+ confirm: (question: string, defaultValue?: boolean) => Promise<boolean>
1428
+ dim: (msg: string) => void
1429
+ error: (msg: string) => void
1430
+ flags: Record<string, string | number | boolean>
1431
+ info: (msg: string) => void
1432
+ line: (msg: string) => void
1433
+ newLine: () => void
1434
+ run: () => Promise<void>
1435
+ secret: (question: string) => Promise<string>
1436
+ section: (title: string) => void
1437
+ table: (rows: [string, string][], indent?: number) => void
1438
+ warn: (msg: string) => void
1439
+ write: (msg: string) => void
1440
+ }
1441
+
1442
+ class MakeModelCommand = {
1443
+ new (): MakeModelCommand
1444
+ static args: { name: string; required: boolean; description: string;}[]
1445
+ static commandName: string
1446
+ static description: string
1447
+ static flags: { name: string; short: string; type: 'boolean'; description: string; default: boolean;}[]
1448
+ static needsApp: boolean
1449
+ _readLine: () => Promise<string>
1450
+ _writer: OutputWriter
1451
+ app: unknown
1452
+ args: Record<string, string>
1453
+ ask: (question: string, defaultValue?: string) => Promise<string>
1454
+ choice: (question: string, options: string[]) => Promise<string>
1455
+ confirm: (question: string, defaultValue?: boolean) => Promise<boolean>
1456
+ dim: (msg: string) => void
1457
+ error: (msg: string) => void
1458
+ flags: Record<string, string | number | boolean>
1459
+ info: (msg: string) => void
1460
+ line: (msg: string) => void
1461
+ newLine: () => void
1462
+ run: () => Promise<void>
1463
+ secret: (question: string) => Promise<string>
1464
+ section: (title: string) => void
1465
+ table: (rows: [string, string][], indent?: number) => void
1466
+ warn: (msg: string) => void
1467
+ write: (msg: string) => void
1468
+ }
1469
+
1470
+ class MakeSeederCommand = {
1471
+ new (): MakeSeederCommand
1472
+ static args: { name: string; required: boolean; description: string;}[]
1473
+ static commandName: string
1474
+ static description: string
1475
+ static flags: FlagDef[]
1476
+ static needsApp: boolean
1477
+ _readLine: () => Promise<string>
1478
+ _writer: OutputWriter
1479
+ app: unknown
1480
+ args: Record<string, string>
1481
+ ask: (question: string, defaultValue?: string) => Promise<string>
1482
+ choice: (question: string, options: string[]) => Promise<string>
1483
+ confirm: (question: string, defaultValue?: boolean) => Promise<boolean>
1484
+ dim: (msg: string) => void
1485
+ error: (msg: string) => void
1486
+ flags: Record<string, string | number | boolean>
1487
+ info: (msg: string) => void
1488
+ line: (msg: string) => void
1489
+ newLine: () => void
1490
+ run: () => Promise<void>
1491
+ secret: (question: string) => Promise<string>
1492
+ section: (title: string) => void
1493
+ table: (rows: [string, string][], indent?: number) => void
1494
+ warn: (msg: string) => void
1495
+ write: (msg: string) => void
1496
+ }
1497
+
1498
+ class MigrateCommand = {
1499
+ new (): MigrateCommand
1500
+ static aliases: string[]
1501
+ static args: ArgDef[]
1502
+ static commandName: string
1503
+ static description: string
1504
+ static flags: FlagDef[]
1505
+ static needsApp: boolean
1506
+ _readLine: () => Promise<string>
1507
+ _writer: OutputWriter
1508
+ app: unknown
1509
+ args: Record<string, string>
1510
+ ask: (question: string, defaultValue?: string) => Promise<string>
1511
+ choice: (question: string, options: string[]) => Promise<string>
1512
+ confirm: (question: string, defaultValue?: boolean) => Promise<boolean>
1513
+ dim: (msg: string) => void
1514
+ error: (msg: string) => void
1515
+ flags: Record<string, string | number | boolean>
1516
+ info: (msg: string) => void
1517
+ line: (msg: string) => void
1518
+ newLine: () => void
1519
+ run: () => Promise<void>
1520
+ secret: (question: string) => Promise<string>
1521
+ section: (title: string) => void
1522
+ table: (rows: [string, string][], indent?: number) => void
1523
+ warn: (msg: string) => void
1524
+ write: (msg: string) => void
1525
+ }
1526
+
1527
+ class MigrateFreshCommand = {
1528
+ new (): MigrateFreshCommand
1529
+ static args: ArgDef[]
1530
+ static commandName: string
1531
+ static description: string
1532
+ static flags: FlagDef[]
1533
+ static needsApp: boolean
1534
+ _readLine: () => Promise<string>
1535
+ _writer: OutputWriter
1536
+ app: unknown
1537
+ args: Record<string, string>
1538
+ ask: (question: string, defaultValue?: string) => Promise<string>
1539
+ choice: (question: string, options: string[]) => Promise<string>
1540
+ confirm: (question: string, defaultValue?: boolean) => Promise<boolean>
1541
+ dim: (msg: string) => void
1542
+ error: (msg: string) => void
1543
+ flags: Record<string, string | number | boolean>
1544
+ info: (msg: string) => void
1545
+ line: (msg: string) => void
1546
+ newLine: () => void
1547
+ run: () => Promise<void>
1548
+ secret: (question: string) => Promise<string>
1549
+ section: (title: string) => void
1550
+ table: (rows: [string, string][], indent?: number) => void
1551
+ warn: (msg: string) => void
1552
+ write: (msg: string) => void
1553
+ }
1554
+
1555
+ class MigrateGenerateCommand = {
1556
+ new (): MigrateGenerateCommand
1557
+ static args: { name: string; required: boolean; description: string;}[]
1558
+ static commandName: string
1559
+ static description: string
1560
+ static flags: { name: string; type: 'string'; description: string; default: string;}[]
1561
+ static needsApp: boolean
1562
+ _readLine: () => Promise<string>
1563
+ _writer: OutputWriter
1564
+ app: unknown
1565
+ args: Record<string, string>
1566
+ ask: (question: string, defaultValue?: string) => Promise<string>
1567
+ choice: (question: string, options: string[]) => Promise<string>
1568
+ confirm: (question: string, defaultValue?: boolean) => Promise<boolean>
1569
+ dim: (msg: string) => void
1570
+ error: (msg: string) => void
1571
+ flags: Record<string, string | number | boolean>
1572
+ info: (msg: string) => void
1573
+ line: (msg: string) => void
1574
+ newLine: () => void
1575
+ run: () => Promise<void>
1576
+ secret: (question: string) => Promise<string>
1577
+ section: (title: string) => void
1578
+ table: (rows: [string, string][], indent?: number) => void
1579
+ warn: (msg: string) => void
1580
+ write: (msg: string) => void
1581
+ }
1582
+
1583
+ class MigrateRefreshCommand = {
1584
+ new (): MigrateRefreshCommand
1585
+ static args: ArgDef[]
1586
+ static commandName: string
1587
+ static description: string
1588
+ static flags: FlagDef[]
1589
+ static needsApp: boolean
1590
+ _readLine: () => Promise<string>
1591
+ _writer: OutputWriter
1592
+ app: unknown
1593
+ args: Record<string, string>
1594
+ ask: (question: string, defaultValue?: string) => Promise<string>
1595
+ choice: (question: string, options: string[]) => Promise<string>
1596
+ confirm: (question: string, defaultValue?: boolean) => Promise<boolean>
1597
+ dim: (msg: string) => void
1598
+ error: (msg: string) => void
1599
+ flags: Record<string, string | number | boolean>
1600
+ info: (msg: string) => void
1601
+ line: (msg: string) => void
1602
+ newLine: () => void
1603
+ run: () => Promise<void>
1604
+ secret: (question: string) => Promise<string>
1605
+ section: (title: string) => void
1606
+ table: (rows: [string, string][], indent?: number) => void
1607
+ warn: (msg: string) => void
1608
+ write: (msg: string) => void
1609
+ }
1610
+
1611
+ class MigrateRollbackCommand = {
1612
+ new (): MigrateRollbackCommand
1613
+ static args: ArgDef[]
1614
+ static commandName: string
1615
+ static description: string
1616
+ static flags: FlagDef[]
1617
+ static needsApp: boolean
1618
+ _readLine: () => Promise<string>
1619
+ _writer: OutputWriter
1620
+ app: unknown
1621
+ args: Record<string, string>
1622
+ ask: (question: string, defaultValue?: string) => Promise<string>
1623
+ choice: (question: string, options: string[]) => Promise<string>
1624
+ confirm: (question: string, defaultValue?: boolean) => Promise<boolean>
1625
+ dim: (msg: string) => void
1626
+ error: (msg: string) => void
1627
+ flags: Record<string, string | number | boolean>
1628
+ info: (msg: string) => void
1629
+ line: (msg: string) => void
1630
+ newLine: () => void
1631
+ run: () => Promise<void>
1632
+ secret: (question: string) => Promise<string>
1633
+ section: (title: string) => void
1634
+ table: (rows: [string, string][], indent?: number) => void
1635
+ warn: (msg: string) => void
1636
+ write: (msg: string) => void
1637
+ }
1638
+
1639
+ class MigrateStatusCommand = {
1640
+ new (): MigrateStatusCommand
1641
+ static args: ArgDef[]
1642
+ static commandName: string
1643
+ static description: string
1644
+ static flags: FlagDef[]
1645
+ static needsApp: boolean
1646
+ _readLine: () => Promise<string>
1647
+ _writer: OutputWriter
1648
+ app: unknown
1649
+ args: Record<string, string>
1650
+ ask: (question: string, defaultValue?: string) => Promise<string>
1651
+ choice: (question: string, options: string[]) => Promise<string>
1652
+ confirm: (question: string, defaultValue?: boolean) => Promise<boolean>
1653
+ dim: (msg: string) => void
1654
+ error: (msg: string) => void
1655
+ flags: Record<string, string | number | boolean>
1656
+ info: (msg: string) => void
1657
+ line: (msg: string) => void
1658
+ newLine: () => void
1659
+ run: () => Promise<void>
1660
+ secret: (question: string) => Promise<string>
1661
+ section: (title: string) => void
1662
+ table: (rows: [string, string][], indent?: number) => void
1663
+ warn: (msg: string) => void
1664
+ write: (msg: string) => void
1665
+ }