@bunyad/orm 0.2.0-beta.1 → 0.2.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -2
- package/dist/casts.d.ts +16 -3
- package/dist/casts.js +150 -4
- package/dist/eager.js +130 -11
- package/dist/factory.d.ts +20 -1
- package/dist/factory.js +143 -37
- package/dist/index.d.ts +21 -1
- package/dist/index.js +3 -1
- package/dist/model-events.d.ts +8 -2
- package/dist/model-events.js +27 -4
- package/dist/model-query.d.ts +75 -29
- package/dist/model-query.js +252 -133
- package/dist/model.d.ts +164 -34
- package/dist/model.js +708 -44
- package/dist/relations.d.ts +187 -11
- package/dist/relations.js +815 -89
- package/dist/schema-types.d.ts +27 -0
- package/dist/schema-types.js +145 -0
- package/dist/test-drivers.d.ts +10 -0
- package/dist/test-drivers.js +40 -0
- package/dist/typed-names.d.ts +53 -0
- package/dist/typed-names.js +4 -0
- package/package.json +3 -3
package/dist/model.d.ts
CHANGED
|
@@ -5,7 +5,9 @@ import { OrmCollection } from "./orm-collection.js";
|
|
|
5
5
|
import { type CastDefinition } from "./casts.js";
|
|
6
6
|
import { type ModelEventListener, type ModelEventName, type ModelObserver } from "./model-events.js";
|
|
7
7
|
import { type GlobalScopeCallback } from "./scopes.js";
|
|
8
|
-
import { BelongsTo, BelongsToMany, HasMany, HasManyThrough, HasOne, HasOneThrough, MorphMany, MorphOne, MorphTo, MorphToMany, type MorphToManyOptions } from "./relations.js";
|
|
8
|
+
import { BelongsTo, BelongsToMany, HasMany, HasManyThrough, HasOne, HasOneThrough, MorphMany, MorphOne, MorphTo, MorphToMany, MorphedByMany, type MorphToManyOptions } from "./relations.js";
|
|
9
|
+
import type { AggregateRelations } from "./model-query.js";
|
|
10
|
+
import type { ColumnHint, RelationHint, WithMap } from "./typed-names.js";
|
|
9
11
|
import { ModelQuery } from "./model-query.js";
|
|
10
12
|
export type { CastType, CastDefinition, EnumCast } from "./casts.js";
|
|
11
13
|
export { Attribute, AsCollection, AsFluent, AsEnumCollection, } from "./casts.js";
|
|
@@ -24,6 +26,14 @@ export type RelationFactory = {
|
|
|
24
26
|
bivarianceHack(model: Model): unknown;
|
|
25
27
|
}["bivarianceHack"];
|
|
26
28
|
export type RelationsMap = Record<string, RelationFactory> | (() => Record<string, RelationFactory>);
|
|
29
|
+
/**
|
|
30
|
+
* What a relation definition needs from the related class. Deliberately small:
|
|
31
|
+
* `hasMany(Product)` is checked for every model graph (Brand ↔ Product ↔ …), and comparing
|
|
32
|
+
* the full `typeof Model` static side there recurses until the compiler overflows its stack.
|
|
33
|
+
*/
|
|
34
|
+
export type RelatedModel = (abstract new (...args: any[]) => Model) & {
|
|
35
|
+
table: string;
|
|
36
|
+
};
|
|
27
37
|
export type ModelClass = typeof Model & {
|
|
28
38
|
table: string;
|
|
29
39
|
primaryKey: string;
|
|
@@ -53,6 +63,8 @@ export type ModelQueryOptions = {
|
|
|
53
63
|
};
|
|
54
64
|
/** Resolve a connection name or handle to a live Connection. */
|
|
55
65
|
export declare function resolveConnection(connection?: string | Connection | null): Connection;
|
|
66
|
+
/** Whether `key` may be mass assigned (mirrors {@link filterFillable}'s rules). */
|
|
67
|
+
export declare function canMassAssign(model: ModelClass, key: string): boolean;
|
|
56
68
|
export declare function filterFillable(model: ModelClass, attributes: Record<string, unknown>): Record<string, unknown>;
|
|
57
69
|
/** True when hydrating this row must run cast getters (partial selects often do not). */
|
|
58
70
|
export declare function attributesNeedModelCasts(ctor: ModelClass, attributes: Record<string, unknown>): boolean;
|
|
@@ -118,6 +130,8 @@ export declare class Model {
|
|
|
118
130
|
static newFromBuilder<T extends typeof Model>(this: T, attributes: Record<string, unknown>): InstanceType<T>;
|
|
119
131
|
/** Snapshot current attributes as the original set. */
|
|
120
132
|
syncOriginal(): this;
|
|
133
|
+
/** `$model->only($keys)` — a subset of the attributes (array or varargs; missing keys are skipped). */
|
|
134
|
+
only(...keys: Array<string | string[]>): Record<string, unknown>;
|
|
121
135
|
/** Current attribute bag (non-function own properties). */
|
|
122
136
|
getAttributes(): Record<string, unknown>;
|
|
123
137
|
/**
|
|
@@ -136,6 +150,9 @@ export declare class Model {
|
|
|
136
150
|
getOriginal(key: string): unknown;
|
|
137
151
|
/** `getChanges` — attributes changed by the last save. */
|
|
138
152
|
getChanges(): Record<string, unknown>;
|
|
153
|
+
/** `getPrevious` — original values of the attributes changed by the last save. */
|
|
154
|
+
getPrevious(): Record<string, unknown>;
|
|
155
|
+
getPrevious(key: string): unknown;
|
|
139
156
|
/** `wasChanged`. */
|
|
140
157
|
wasChanged(...attributes: string[]): boolean;
|
|
141
158
|
/** `wasRecentlyCreated`. */
|
|
@@ -172,6 +189,14 @@ export declare class Model {
|
|
|
172
189
|
static isIgnoringTouch(this: typeof Model): boolean;
|
|
173
190
|
/** `Model::preventLazyLoading`. */
|
|
174
191
|
static preventLazyLoading(prevent?: boolean): void;
|
|
192
|
+
/** `Model::unguard()` — disable mass-assignment protection (seeders, imports). */
|
|
193
|
+
static unguard(state?: boolean): void;
|
|
194
|
+
/** `Model::reguard()`. */
|
|
195
|
+
static reguard(): void;
|
|
196
|
+
/** `Model::isUnguarded()`. */
|
|
197
|
+
static isUnguarded(): boolean;
|
|
198
|
+
/** `Model::unguarded(callback)` — run with protection off, then restore it. */
|
|
199
|
+
static unguarded<R>(callback: () => R): R;
|
|
175
200
|
/** `Model::preventSilentlyDiscardingAttributes`. */
|
|
176
201
|
static preventSilentlyDiscardingAttributes(prevent?: boolean): void;
|
|
177
202
|
/** `Model::preventAccessingMissingAttributes`. */
|
|
@@ -274,20 +299,107 @@ export declare class Model {
|
|
|
274
299
|
static findSync<T extends typeof Model>(this: T, id: string | number): InstanceType<T> | null;
|
|
275
300
|
/** `Model::where`. */
|
|
276
301
|
static where<T extends typeof Model>(this: T, callback: (query: ModelQuery<InstanceType<T>>) => void): ModelQuery<InstanceType<T>>;
|
|
277
|
-
static where<T extends typeof Model>(this: T, column:
|
|
278
|
-
static where<T extends typeof Model>(this: T, column:
|
|
279
|
-
/**
|
|
302
|
+
static where<T extends typeof Model>(this: T, column: ColumnHint<InstanceType<T>>, value: unknown): ModelQuery<InstanceType<T>>;
|
|
303
|
+
static where<T extends typeof Model>(this: T, column: ColumnHint<InstanceType<T>>, op: string, value: unknown): ModelQuery<InstanceType<T>>;
|
|
304
|
+
/** Multi-column LIKE search. */
|
|
280
305
|
static search<T extends typeof Model>(this: T, columns: string[], term: string): ModelQuery<InstanceType<T>>;
|
|
306
|
+
static whereBetween<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["whereBetween"]>): ModelQuery<InstanceType<T>>;
|
|
307
|
+
static whereNotBetween<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["whereNotBetween"]>): ModelQuery<InstanceType<T>>;
|
|
308
|
+
static whereNotIn<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["whereNotIn"]>): ModelQuery<InstanceType<T>>;
|
|
309
|
+
static whereRaw<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["whereRaw"]>): ModelQuery<InstanceType<T>>;
|
|
310
|
+
static whereColumn<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["whereColumn"]>): ModelQuery<InstanceType<T>>;
|
|
311
|
+
static whereLike<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["whereLike"]>): ModelQuery<InstanceType<T>>;
|
|
312
|
+
static whereNotLike<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["whereNotLike"]>): ModelQuery<InstanceType<T>>;
|
|
313
|
+
static whereDay<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["whereDay"]>): ModelQuery<InstanceType<T>>;
|
|
314
|
+
static whereMonth<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["whereMonth"]>): ModelQuery<InstanceType<T>>;
|
|
315
|
+
static whereYear<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["whereYear"]>): ModelQuery<InstanceType<T>>;
|
|
316
|
+
static orWhereIn<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["orWhereIn"]>): ModelQuery<InstanceType<T>>;
|
|
317
|
+
static orWhereNotIn<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["orWhereNotIn"]>): ModelQuery<InstanceType<T>>;
|
|
318
|
+
static orWhereNull<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["orWhereNull"]>): ModelQuery<InstanceType<T>>;
|
|
319
|
+
static orWhereNotNull<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["orWhereNotNull"]>): ModelQuery<InstanceType<T>>;
|
|
320
|
+
static orWhereBetween<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["orWhereBetween"]>): ModelQuery<InstanceType<T>>;
|
|
321
|
+
static orWhereNotBetween<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["orWhereNotBetween"]>): ModelQuery<InstanceType<T>>;
|
|
322
|
+
static orWhereColumn<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["orWhereColumn"]>): ModelQuery<InstanceType<T>>;
|
|
323
|
+
static orWhereRaw<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["orWhereRaw"]>): ModelQuery<InstanceType<T>>;
|
|
324
|
+
static orWhereLike<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["orWhereLike"]>): ModelQuery<InstanceType<T>>;
|
|
325
|
+
static orWhereNotLike<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["orWhereNotLike"]>): ModelQuery<InstanceType<T>>;
|
|
326
|
+
static groupBy<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["groupBy"]>): ModelQuery<InstanceType<T>>;
|
|
327
|
+
static having<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["having"]>): ModelQuery<InstanceType<T>>;
|
|
328
|
+
static havingRaw<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["havingRaw"]>): ModelQuery<InstanceType<T>>;
|
|
329
|
+
static selectRaw<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["selectRaw"]>): ModelQuery<InstanceType<T>>;
|
|
330
|
+
static addSelect<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["addSelect"]>): ModelQuery<InstanceType<T>>;
|
|
331
|
+
static distinct<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["distinct"]>): ModelQuery<InstanceType<T>>;
|
|
332
|
+
static inRandomOrder<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["inRandomOrder"]>): ModelQuery<InstanceType<T>>;
|
|
333
|
+
static reorder<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["reorder"]>): ModelQuery<InstanceType<T>>;
|
|
334
|
+
static offset<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["offset"]>): ModelQuery<InstanceType<T>>;
|
|
335
|
+
static skip<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["skip"]>): ModelQuery<InstanceType<T>>;
|
|
336
|
+
static lockForUpdate<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["lockForUpdate"]>): ModelQuery<InstanceType<T>>;
|
|
337
|
+
static sharedLock<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["sharedLock"]>): ModelQuery<InstanceType<T>>;
|
|
338
|
+
static has<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["has"]>): ModelQuery<InstanceType<T>>;
|
|
339
|
+
static doesntHave<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["doesntHave"]>): ModelQuery<InstanceType<T>>;
|
|
340
|
+
static orHas<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["orHas"]>): ModelQuery<InstanceType<T>>;
|
|
341
|
+
static orDoesntHave<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["orDoesntHave"]>): ModelQuery<InstanceType<T>>;
|
|
342
|
+
static orWhereDoesntHave<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["orWhereDoesntHave"]>): ModelQuery<InstanceType<T>>;
|
|
343
|
+
static whereHasMorph<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["whereHasMorph"]>): ModelQuery<InstanceType<T>>;
|
|
344
|
+
static orWhereHasMorph<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["orWhereHasMorph"]>): ModelQuery<InstanceType<T>>;
|
|
345
|
+
static whereDoesntHaveMorph<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["whereDoesntHaveMorph"]>): ModelQuery<InstanceType<T>>;
|
|
346
|
+
static orWhereDoesntHaveMorph<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["orWhereDoesntHaveMorph"]>): ModelQuery<InstanceType<T>>;
|
|
347
|
+
static hasMorph<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["hasMorph"]>): ModelQuery<InstanceType<T>>;
|
|
348
|
+
static doesntHaveMorph<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["doesntHaveMorph"]>): ModelQuery<InstanceType<T>>;
|
|
349
|
+
static whereMorphedTo<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["whereMorphedTo"]>): ModelQuery<InstanceType<T>>;
|
|
350
|
+
static whereNotMorphedTo<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["whereNotMorphedTo"]>): ModelQuery<InstanceType<T>>;
|
|
351
|
+
static orWhereMorphedTo<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["orWhereMorphedTo"]>): ModelQuery<InstanceType<T>>;
|
|
352
|
+
static orWhereNotMorphedTo<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["orWhereNotMorphedTo"]>): ModelQuery<InstanceType<T>>;
|
|
353
|
+
static whereMorphRelation<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["whereMorphRelation"]>): ModelQuery<InstanceType<T>>;
|
|
354
|
+
static orWhereMorphRelation<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["orWhereMorphRelation"]>): ModelQuery<InstanceType<T>>;
|
|
355
|
+
static whereKeyNot<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["whereKeyNot"]>): ModelQuery<InstanceType<T>>;
|
|
356
|
+
static orWhereBelongsTo<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["orWhereBelongsTo"]>): ModelQuery<InstanceType<T>>;
|
|
357
|
+
static orWhereAny<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["orWhereAny"]>): ModelQuery<InstanceType<T>>;
|
|
358
|
+
static orWhereAll<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["orWhereAll"]>): ModelQuery<InstanceType<T>>;
|
|
359
|
+
static orWhereNone<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["orWhereNone"]>): ModelQuery<InstanceType<T>>;
|
|
360
|
+
static withAggregate<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["withAggregate"]>): ModelQuery<InstanceType<T>>;
|
|
361
|
+
static withAttributes<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["withAttributes"]>): ModelQuery<InstanceType<T>>;
|
|
362
|
+
static withCasts<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["withCasts"]>): ModelQuery<InstanceType<T>>;
|
|
363
|
+
static rightJoin<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["rightJoin"]>): ModelQuery<InstanceType<T>>;
|
|
364
|
+
static when<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["when"]>): ModelQuery<InstanceType<T>>;
|
|
365
|
+
static unless<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["unless"]>): ModelQuery<InstanceType<T>>;
|
|
366
|
+
static tap<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["tap"]>): ModelQuery<InstanceType<T>>;
|
|
367
|
+
static forPage<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["forPage"]>): ModelQuery<InstanceType<T>>;
|
|
368
|
+
static firstWhere<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["firstWhere"]>): ReturnType<ModelQuery<InstanceType<T>>["firstWhere"]>;
|
|
369
|
+
static findMany<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["findMany"]>): ReturnType<ModelQuery<InstanceType<T>>["findMany"]>;
|
|
370
|
+
static findOr<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["findOr"]>): ReturnType<ModelQuery<InstanceType<T>>["findOr"]>;
|
|
371
|
+
static findOrNew<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["findOrNew"]>): ReturnType<ModelQuery<InstanceType<T>>["findOrNew"]>;
|
|
372
|
+
static firstOr<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["firstOr"]>): ReturnType<ModelQuery<InstanceType<T>>["firstOr"]>;
|
|
373
|
+
static chunk<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["chunk"]>): ReturnType<ModelQuery<InstanceType<T>>["chunk"]>;
|
|
374
|
+
static chunkById<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["chunkById"]>): ReturnType<ModelQuery<InstanceType<T>>["chunkById"]>;
|
|
375
|
+
static chunkByIdDesc<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["chunkByIdDesc"]>): ReturnType<ModelQuery<InstanceType<T>>["chunkByIdDesc"]>;
|
|
376
|
+
static dd<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["dd"]>): ReturnType<ModelQuery<InstanceType<T>>["dd"]>;
|
|
377
|
+
static dump<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["dump"]>): ReturnType<ModelQuery<InstanceType<T>>["dump"]>;
|
|
378
|
+
static toBase<T extends typeof Model>(this: T, ...args: Parameters<ModelQuery<InstanceType<T>>["toBase"]>): ReturnType<ModelQuery<InstanceType<T>>["toBase"]>;
|
|
379
|
+
static count<T extends typeof Model>(this: T, ...args: any[]): ReturnType<ModelQuery<InstanceType<T>>["count"]>;
|
|
380
|
+
static sum<T extends typeof Model>(this: T, ...args: any[]): ReturnType<ModelQuery<InstanceType<T>>["sum"]>;
|
|
381
|
+
static avg<T extends typeof Model>(this: T, ...args: any[]): ReturnType<ModelQuery<InstanceType<T>>["avg"]>;
|
|
382
|
+
static min<T extends typeof Model>(this: T, ...args: any[]): ReturnType<ModelQuery<InstanceType<T>>["min"]>;
|
|
383
|
+
static max<T extends typeof Model>(this: T, ...args: any[]): ReturnType<ModelQuery<InstanceType<T>>["max"]>;
|
|
384
|
+
static exists<T extends typeof Model>(this: T, ...args: any[]): ReturnType<ModelQuery<InstanceType<T>>["exists"]>;
|
|
385
|
+
static doesntExist<T extends typeof Model>(this: T, ...args: any[]): ReturnType<ModelQuery<InstanceType<T>>["doesntExist"]>;
|
|
386
|
+
static sole<T extends typeof Model>(this: T, ...args: any[]): ReturnType<ModelQuery<InstanceType<T>>["sole"]>;
|
|
387
|
+
static soleValue<T extends typeof Model>(this: T, ...args: any[]): ReturnType<ModelQuery<InstanceType<T>>["soleValue"]>;
|
|
388
|
+
static valueOrFail<T extends typeof Model>(this: T, ...args: any[]): ReturnType<ModelQuery<InstanceType<T>>["valueOrFail"]>;
|
|
389
|
+
static toSql<T extends typeof Model>(this: T, ...args: any[]): ReturnType<ModelQuery<InstanceType<T>>["toSql"]>;
|
|
390
|
+
static toRawSql<T extends typeof Model>(this: T, ...args: any[]): ReturnType<ModelQuery<InstanceType<T>>["toRawSql"]>;
|
|
391
|
+
static getBindings<T extends typeof Model>(this: T, ...args: any[]): ReturnType<ModelQuery<InstanceType<T>>["getBindings"]>;
|
|
392
|
+
static firstOrFail<T extends typeof Model>(this: T, ...args: any[]): ReturnType<ModelQuery<InstanceType<T>>["firstOrFail"]>;
|
|
281
393
|
/** Start a new query and forward common builder methods (`__callStatic`). */
|
|
282
|
-
static orWhere<T extends typeof Model>(this: T, column:
|
|
283
|
-
static orWhere<T extends typeof Model>(this: T, column:
|
|
284
|
-
static whereIn<T extends typeof Model>(this: T, column:
|
|
285
|
-
static whereNull<T extends typeof Model>(this: T, column:
|
|
286
|
-
static whereNotNull<T extends typeof Model>(this: T, column:
|
|
287
|
-
static orderBy<T extends typeof Model>(this: T, column:
|
|
288
|
-
static orderByDesc<T extends typeof Model>(this: T, column:
|
|
394
|
+
static orWhere<T extends typeof Model>(this: T, column: ColumnHint<InstanceType<T>>, value: unknown): ModelQuery<InstanceType<T>>;
|
|
395
|
+
static orWhere<T extends typeof Model>(this: T, column: ColumnHint<InstanceType<T>>, op: string, value: unknown): ModelQuery<InstanceType<T>>;
|
|
396
|
+
static whereIn<T extends typeof Model>(this: T, column: ColumnHint<InstanceType<T>>, values: unknown[]): ModelQuery<InstanceType<T>>;
|
|
397
|
+
static whereNull<T extends typeof Model>(this: T, column: ColumnHint<InstanceType<T>>): ModelQuery<InstanceType<T>>;
|
|
398
|
+
static whereNotNull<T extends typeof Model>(this: T, column: ColumnHint<InstanceType<T>>): ModelQuery<InstanceType<T>>;
|
|
399
|
+
static orderBy<T extends typeof Model>(this: T, column: ColumnHint<InstanceType<T>>, direction?: "asc" | "desc"): ModelQuery<InstanceType<T>>;
|
|
400
|
+
static orderByDesc<T extends typeof Model>(this: T, column: ColumnHint<InstanceType<T>>): ModelQuery<InstanceType<T>>;
|
|
289
401
|
static orderByRaw<T extends typeof Model>(this: T, sql: string): ModelQuery<InstanceType<T>>;
|
|
290
|
-
/**
|
|
402
|
+
/** Alias for `orderByRaw`. */
|
|
291
403
|
static orderBySql<T extends typeof Model>(this: T, sql: string): ModelQuery<InstanceType<T>>;
|
|
292
404
|
static latest<T extends typeof Model>(this: T, column?: string): ModelQuery<InstanceType<T>>;
|
|
293
405
|
static oldest<T extends typeof Model>(this: T, column?: string): ModelQuery<InstanceType<T>>;
|
|
@@ -297,10 +409,14 @@ export declare class Model {
|
|
|
297
409
|
/** `Model::whereDate`. */
|
|
298
410
|
static whereDate<T extends typeof Model>(this: T, column: string, value: DateInput): ModelQuery<InstanceType<T>>;
|
|
299
411
|
static whereDate<T extends typeof Model>(this: T, column: string, op: string, value: DateInput): ModelQuery<InstanceType<T>>;
|
|
300
|
-
/** `Model::whereNot(closure)`. */
|
|
412
|
+
/** `Model::whereNot(closure | column, [op], value)`. */
|
|
301
413
|
static whereNot<T extends typeof Model>(this: T, callback: (query: ModelQuery<InstanceType<T>>) => void): ModelQuery<InstanceType<T>>;
|
|
302
|
-
|
|
414
|
+
static whereNot<T extends typeof Model>(this: T, column: ColumnHint<InstanceType<T>>, value: unknown): ModelQuery<InstanceType<T>>;
|
|
415
|
+
static whereNot<T extends typeof Model>(this: T, column: ColumnHint<InstanceType<T>>, op: string, value: unknown): ModelQuery<InstanceType<T>>;
|
|
416
|
+
/** `Model::orWhereNot(closure | column, [op], value)`. */
|
|
303
417
|
static orWhereNot<T extends typeof Model>(this: T, callback: (query: ModelQuery<InstanceType<T>>) => void): ModelQuery<InstanceType<T>>;
|
|
418
|
+
static orWhereNot<T extends typeof Model>(this: T, column: ColumnHint<InstanceType<T>>, value: unknown): ModelQuery<InstanceType<T>>;
|
|
419
|
+
static orWhereNot<T extends typeof Model>(this: T, column: ColumnHint<InstanceType<T>>, op: string, value: unknown): ModelQuery<InstanceType<T>>;
|
|
304
420
|
/** `withTrashed()`. */
|
|
305
421
|
static withTrashed<T extends typeof Model>(this: T): ModelQuery<InstanceType<T>>;
|
|
306
422
|
/** `onlyTrashed()`. */
|
|
@@ -310,26 +426,26 @@ export declare class Model {
|
|
|
310
426
|
/** `get()` returns plain row objects. Models are not built. */
|
|
311
427
|
static rows<T extends typeof Model>(this: T): ModelQuery<InstanceType<T>, "row">;
|
|
312
428
|
/** Eager-load relations (`with('posts')`, `with({ posts: (q) => q.where(…) })`). */
|
|
313
|
-
static with<T extends typeof Model>(this: T, ...relations: Array<
|
|
429
|
+
static with<T extends typeof Model>(this: T, ...relations: Array<RelationHint<InstanceType<T>> | RelationHint<InstanceType<T>>[] | WithMap<InstanceType<T>>>): ModelQuery<InstanceType<T>>;
|
|
314
430
|
/** `Model::whereHas`. */
|
|
315
|
-
static whereHas<T extends typeof Model>(this: T, relation:
|
|
431
|
+
static whereHas<T extends typeof Model>(this: T, relation: RelationHint<InstanceType<T>>, callback?: (query: ModelQuery) => void): ModelQuery<InstanceType<T>>;
|
|
316
432
|
/** `Model::whereDoesntHave`. */
|
|
317
|
-
static whereDoesntHave<T extends typeof Model>(this: T, relation:
|
|
433
|
+
static whereDoesntHave<T extends typeof Model>(this: T, relation: RelationHint<InstanceType<T>>, callback?: (query: ModelQuery) => void): ModelQuery<InstanceType<T>>;
|
|
318
434
|
/** `Model::orWhereHas`. */
|
|
319
|
-
static orWhereHas<T extends typeof Model>(this: T, relation:
|
|
435
|
+
static orWhereHas<T extends typeof Model>(this: T, relation: RelationHint<InstanceType<T>>, callback?: (query: ModelQuery) => void): ModelQuery<InstanceType<T>>;
|
|
320
436
|
/** `Model::whereRelation`. */
|
|
321
437
|
static whereRelation<T extends typeof Model>(this: T, relation: string, column: string, opOrValue: unknown, value?: unknown): ModelQuery<InstanceType<T>>;
|
|
322
438
|
/** `Model::orWhereRelation`. */
|
|
323
439
|
static orWhereRelation<T extends typeof Model>(this: T, relation: string, column: string, opOrValue: unknown, value?: unknown): ModelQuery<InstanceType<T>>;
|
|
324
440
|
/** `withCount` — `'posts'`, `'posts as post_total'`, a string list, or `{ products: { as: 'productsCount' } }`. */
|
|
325
|
-
static withCount<T extends typeof Model>(this: T, ...relations:
|
|
441
|
+
static withCount<T extends typeof Model>(this: T, ...relations: AggregateRelations[]): ModelQuery<InstanceType<T>>;
|
|
326
442
|
/** `Model::withSum`. */
|
|
327
|
-
static withSum<T extends typeof Model>(this: T, relation:
|
|
328
|
-
static withAvg<T extends typeof Model>(this: T, relation:
|
|
329
|
-
static withMin<T extends typeof Model>(this: T, relation:
|
|
330
|
-
static withMax<T extends typeof Model>(this: T, relation:
|
|
331
|
-
static withExists<T extends typeof Model>(this: T, ...relations:
|
|
332
|
-
static withWhereHas<T extends typeof Model>(this: T, relation:
|
|
443
|
+
static withSum<T extends typeof Model>(this: T, relation: AggregateRelations, column: string): ModelQuery<InstanceType<T>>;
|
|
444
|
+
static withAvg<T extends typeof Model>(this: T, relation: AggregateRelations, column: string): ModelQuery<InstanceType<T>>;
|
|
445
|
+
static withMin<T extends typeof Model>(this: T, relation: AggregateRelations, column: string): ModelQuery<InstanceType<T>>;
|
|
446
|
+
static withMax<T extends typeof Model>(this: T, relation: AggregateRelations, column: string): ModelQuery<InstanceType<T>>;
|
|
447
|
+
static withExists<T extends typeof Model>(this: T, ...relations: AggregateRelations[]): ModelQuery<InstanceType<T>>;
|
|
448
|
+
static withWhereHas<T extends typeof Model>(this: T, relation: RelationHint<InstanceType<T>>, callback?: (query: ModelQuery) => void): ModelQuery<InstanceType<T>>;
|
|
333
449
|
static whereBelongsTo<T extends typeof Model>(this: T, related: Model, relationName?: string): ModelQuery<InstanceType<T>>;
|
|
334
450
|
static whereAny<T extends typeof Model>(this: T, columns: string[], opOrValue: unknown, value?: unknown): ModelQuery<InstanceType<T>>;
|
|
335
451
|
static whereAll<T extends typeof Model>(this: T, columns: string[], opOrValue: unknown, value?: unknown): ModelQuery<InstanceType<T>>;
|
|
@@ -364,7 +480,9 @@ export declare class Model {
|
|
|
364
480
|
/** `Model::create` (respects `$fillable` / `$guarded`). */
|
|
365
481
|
static create<T extends typeof Model>(this: T, attributes: Record<string, unknown>): InstanceType<T> | Promise<InstanceType<T>>;
|
|
366
482
|
/** `Model::forceCreate` — insert every given attribute, ignoring `$fillable`. */
|
|
367
|
-
static forceCreate<T extends typeof Model>(this: T, useAttrs: Record<string, unknown>): InstanceType<T> | Promise<InstanceType<T>>;
|
|
483
|
+
static forceCreate<T extends typeof Model>(this: T, useAttrs: Record<string, unknown>, beforeSave?: (model: InstanceType<T>) => void | Promise<void>): InstanceType<T> | Promise<InstanceType<T>>;
|
|
484
|
+
/** Persist a model built by {@link forceCreate} and re-hydrate get-casts. */
|
|
485
|
+
private static forceCreateSaved;
|
|
368
486
|
/** `firstOrNew`. */
|
|
369
487
|
static firstOrNew<T extends typeof Model>(this: T, attributes: Record<string, unknown>, values?: Record<string, unknown>): Promise<InstanceType<T>>;
|
|
370
488
|
/** `firstOrCreate`. */
|
|
@@ -383,6 +501,12 @@ export declare class Model {
|
|
|
383
501
|
static upsert<T extends typeof Model>(this: T, values: Record<string, unknown> | Record<string, unknown>[], uniqueBy: string | string[], update?: string[] | null): Promise<number>;
|
|
384
502
|
/** `$model->fill($attributes)`. */
|
|
385
503
|
fill(attributes: Record<string, unknown>): this;
|
|
504
|
+
/** `$model->forceFill($attributes)` — assign without checking `fillable` / `guarded`. */
|
|
505
|
+
forceFill(attributes: Record<string, unknown>): this;
|
|
506
|
+
/** `$model->isFillable($key)`. */
|
|
507
|
+
isFillable(key: string): boolean;
|
|
508
|
+
/** `$model->isGuarded($key)`. */
|
|
509
|
+
isGuarded(key: string): boolean;
|
|
386
510
|
/** `$model->update($attributes)`. */
|
|
387
511
|
update(attributes: Record<string, unknown>): Promise<this>;
|
|
388
512
|
save(): this | Promise<this>;
|
|
@@ -447,6 +571,7 @@ export declare class Model {
|
|
|
447
571
|
loadMax(relation: string, column: string): Promise<this>;
|
|
448
572
|
/** `$model->loadExists(...$relations)`. */
|
|
449
573
|
loadExists(...relations: string[]): Promise<this>;
|
|
574
|
+
/** `toArray()` with `bigint` values as decimal strings, since JSON has no `bigint`. */
|
|
450
575
|
toJSON(): Record<string, unknown>;
|
|
451
576
|
/** Alias of {@link toJSON}. */
|
|
452
577
|
toJson(): Record<string, unknown>;
|
|
@@ -462,9 +587,9 @@ export declare class Model {
|
|
|
462
587
|
*/
|
|
463
588
|
static forceDestroy<T extends typeof Model>(this: T, ids: Array<string | number> | string | number): Promise<number>;
|
|
464
589
|
/** `$this->hasMany(Related::class)`. */
|
|
465
|
-
hasMany<R extends
|
|
590
|
+
hasMany<R extends RelatedModel>(related: R, foreignKey?: string, localKey?: string): HasMany<InstanceType<R>>;
|
|
466
591
|
/** `$this->hasOne(Related::class)`. */
|
|
467
|
-
hasOne<R extends
|
|
592
|
+
hasOne<R extends RelatedModel>(related: R, foreignKey?: string, localKey?: string): HasOne<InstanceType<R>>;
|
|
468
593
|
/**
|
|
469
594
|
* `$this->hasManyThrough(Related::class, Through::class)`.
|
|
470
595
|
* Parent → Through (firstKey) → Related (secondKey).
|
|
@@ -475,24 +600,29 @@ export declare class Model {
|
|
|
475
600
|
*/
|
|
476
601
|
hasOneThrough<R extends ModelClass, TThrough extends ModelClass>(related: R, through: TThrough, firstKey?: string, secondKey?: string, localKey?: string, secondLocalKey?: string): HasOneThrough<InstanceType<R>>;
|
|
477
602
|
/** `$this->belongsTo(Related::class)`. */
|
|
478
|
-
belongsTo<R extends
|
|
603
|
+
belongsTo<R extends RelatedModel>(related: R, foreignKey?: string, ownerKey?: string): BelongsTo<InstanceType<R>>;
|
|
479
604
|
/** `$this->belongsToMany(Related::class, pivot)`. */
|
|
480
|
-
belongsToMany<R extends
|
|
605
|
+
belongsToMany<R extends RelatedModel>(related: R, table?: string, foreignPivotKey?: string, relatedPivotKey?: string): BelongsToMany<InstanceType<R>>;
|
|
481
606
|
/**
|
|
482
607
|
* Polymorphic many-to-many (`model_has_roles`-style pivots).
|
|
483
608
|
* Third argument may be the pivot table name or an options bag (tenant/legacy morph types).
|
|
484
609
|
*/
|
|
485
|
-
morphToMany<R extends
|
|
610
|
+
morphToMany<R extends RelatedModel>(related: R, name: string, tableOrOptions?: string | MorphToManyOptions, foreignPivotKey?: string, relatedPivotKey?: string): MorphToMany<InstanceType<R>>;
|
|
611
|
+
/**
|
|
612
|
+
* `$this->morphedByMany(Related::class, name)` — inverse of `morphToMany`.
|
|
613
|
+
* Defaults: pivot `{name}s`, `{name}_id`, `{name}_type`, parent key `{parent}_id`.
|
|
614
|
+
*/
|
|
615
|
+
morphedByMany<R extends RelatedModel>(related: R, name: string, table?: string, foreignPivotKey?: string, relatedPivotKey?: string): MorphedByMany<InstanceType<R>>;
|
|
486
616
|
/** `$this->morphMany(Related::class, name)`. */
|
|
487
|
-
morphMany<R extends
|
|
617
|
+
morphMany<R extends RelatedModel>(related: R, name: string, type?: string, id?: string, localKey?: string): MorphMany<InstanceType<R>>;
|
|
488
618
|
/** `$this->morphOne(Related::class, name)`. */
|
|
489
|
-
morphOne<R extends
|
|
619
|
+
morphOne<R extends RelatedModel>(related: R, name: string, type?: string, id?: string, localKey?: string): MorphOne<InstanceType<R>>;
|
|
490
620
|
/** `$this->morphTo($name)`. */
|
|
491
621
|
morphTo(name: string, type?: string, id?: string, ownerKey?: string): MorphTo;
|
|
492
622
|
}
|
|
493
623
|
/** True when `value` is a Model subclass constructor (O(1) prototype check). */
|
|
494
624
|
export declare function isModelCtor(value: unknown): value is ModelClass;
|
|
495
|
-
export { BelongsTo, BelongsToMany, HasMany, HasManyThrough, HasOne, HasOneThrough, MorphMany, MorphOne, MorphTo, MorphToMany, clearMorphMap, morphMap, type MorphToManyOptions, } from "./relations.js";
|
|
625
|
+
export { BelongsTo, BelongsToMany, HasMany, HasManyThrough, HasOne, HasOneThrough, MorphMany, MorphOne, MorphTo, MorphToMany, MorphedByMany, clearMorphMap, morphMap, enforceMorphMap, requireMorphMap, getMorphedModel, type MorphToManyOptions, } from "./relations.js";
|
|
496
626
|
export { eagerLoadAggregates, eagerLoadModels, type EagerAggregateSpec, } from "./eager.js";
|
|
497
627
|
export { ModelQuery } from "./model-query.js";
|
|
498
628
|
export { LazyLoadingViolationException, MassAssignmentException, MissingAttributeException, resetModelStrictnessForTests, } from "./model-strictness.js";
|