@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/CHANGELOG.md +91 -0
- package/api-surface.md +1665 -0
- package/package.json +4 -3
- package/src/commands/MigrateCommand.ts +14 -0
- package/src/commands/_runSeeders.ts +42 -2
- package/src/db/DB.ts +25 -0
- package/src/db/dialects/MysqlDialect.ts +4 -0
- package/src/db/dialects/PostgresDialect.ts +3 -0
- package/src/db/dialects/SqliteDialect.ts +4 -0
- package/src/db/dialects/types.ts +17 -0
- package/src/model/ModelQueryBuilder.ts +16 -6
- package/src/observability.ts +75 -1
- package/src/provider/DatabaseProvider.ts +15 -1
- package/src/schema/MigrationRunner.ts +90 -14
- package/src/schema/Schema.ts +8 -3
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
|
+
}
|