@bunyad/orm 0.2.0-beta.0 → 0.2.0-beta.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/README.md +23 -1
- 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 +85 -33
- package/dist/model-query.js +295 -139
- package/dist/model.d.ts +173 -35
- package/dist/model.js +725 -45
- 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
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import type { Connection, DatabaseManager, DateInput } from "@bunyad/database";
|
|
2
2
|
import { LengthAwarePaginator, CursorPaginator } from "@bunyad/database";
|
|
3
|
-
import { Collection } from "@bunyad/common";
|
|
3
|
+
import { Collection, LazyCollection } from "@bunyad/common";
|
|
4
4
|
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>>;
|
|
@@ -353,10 +469,20 @@ export declare class Model {
|
|
|
353
469
|
path?: string;
|
|
354
470
|
cursorName?: string;
|
|
355
471
|
}): Promise<CursorPaginator<InstanceType<T>>>;
|
|
472
|
+
/** `Model::cursor()`: stream models from a single query. */
|
|
473
|
+
static cursor<T extends typeof Model>(this: T, chunkSize?: number): LazyCollection<InstanceType<T>>;
|
|
474
|
+
/** `Model::lazy()`: chunked iteration, one query per chunk. */
|
|
475
|
+
static lazy<T extends typeof Model>(this: T, chunkSize?: number): LazyCollection<InstanceType<T>>;
|
|
476
|
+
/** `Model::lazyById()`: chunked iteration by primary key (safe while updating). */
|
|
477
|
+
static lazyById<T extends typeof Model>(this: T, chunkSize?: number, column?: string): LazyCollection<InstanceType<T>>;
|
|
478
|
+
/** `Model::lazyByIdDesc()`. */
|
|
479
|
+
static lazyByIdDesc<T extends typeof Model>(this: T, chunkSize?: number, column?: string): LazyCollection<InstanceType<T>>;
|
|
356
480
|
/** `Model::create` (respects `$fillable` / `$guarded`). */
|
|
357
481
|
static create<T extends typeof Model>(this: T, attributes: Record<string, unknown>): InstanceType<T> | Promise<InstanceType<T>>;
|
|
358
482
|
/** `Model::forceCreate` — insert every given attribute, ignoring `$fillable`. */
|
|
359
|
-
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;
|
|
360
486
|
/** `firstOrNew`. */
|
|
361
487
|
static firstOrNew<T extends typeof Model>(this: T, attributes: Record<string, unknown>, values?: Record<string, unknown>): Promise<InstanceType<T>>;
|
|
362
488
|
/** `firstOrCreate`. */
|
|
@@ -375,6 +501,12 @@ export declare class Model {
|
|
|
375
501
|
static upsert<T extends typeof Model>(this: T, values: Record<string, unknown> | Record<string, unknown>[], uniqueBy: string | string[], update?: string[] | null): Promise<number>;
|
|
376
502
|
/** `$model->fill($attributes)`. */
|
|
377
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;
|
|
378
510
|
/** `$model->update($attributes)`. */
|
|
379
511
|
update(attributes: Record<string, unknown>): Promise<this>;
|
|
380
512
|
save(): this | Promise<this>;
|
|
@@ -439,6 +571,7 @@ export declare class Model {
|
|
|
439
571
|
loadMax(relation: string, column: string): Promise<this>;
|
|
440
572
|
/** `$model->loadExists(...$relations)`. */
|
|
441
573
|
loadExists(...relations: string[]): Promise<this>;
|
|
574
|
+
/** `toArray()` with `bigint` values as decimal strings, since JSON has no `bigint`. */
|
|
442
575
|
toJSON(): Record<string, unknown>;
|
|
443
576
|
/** Alias of {@link toJSON}. */
|
|
444
577
|
toJson(): Record<string, unknown>;
|
|
@@ -454,9 +587,9 @@ export declare class Model {
|
|
|
454
587
|
*/
|
|
455
588
|
static forceDestroy<T extends typeof Model>(this: T, ids: Array<string | number> | string | number): Promise<number>;
|
|
456
589
|
/** `$this->hasMany(Related::class)`. */
|
|
457
|
-
hasMany<R extends
|
|
590
|
+
hasMany<R extends RelatedModel>(related: R, foreignKey?: string, localKey?: string): HasMany<InstanceType<R>>;
|
|
458
591
|
/** `$this->hasOne(Related::class)`. */
|
|
459
|
-
hasOne<R extends
|
|
592
|
+
hasOne<R extends RelatedModel>(related: R, foreignKey?: string, localKey?: string): HasOne<InstanceType<R>>;
|
|
460
593
|
/**
|
|
461
594
|
* `$this->hasManyThrough(Related::class, Through::class)`.
|
|
462
595
|
* Parent → Through (firstKey) → Related (secondKey).
|
|
@@ -467,24 +600,29 @@ export declare class Model {
|
|
|
467
600
|
*/
|
|
468
601
|
hasOneThrough<R extends ModelClass, TThrough extends ModelClass>(related: R, through: TThrough, firstKey?: string, secondKey?: string, localKey?: string, secondLocalKey?: string): HasOneThrough<InstanceType<R>>;
|
|
469
602
|
/** `$this->belongsTo(Related::class)`. */
|
|
470
|
-
belongsTo<R extends
|
|
603
|
+
belongsTo<R extends RelatedModel>(related: R, foreignKey?: string, ownerKey?: string): BelongsTo<InstanceType<R>>;
|
|
471
604
|
/** `$this->belongsToMany(Related::class, pivot)`. */
|
|
472
|
-
belongsToMany<R extends
|
|
605
|
+
belongsToMany<R extends RelatedModel>(related: R, table?: string, foreignPivotKey?: string, relatedPivotKey?: string): BelongsToMany<InstanceType<R>>;
|
|
473
606
|
/**
|
|
474
607
|
* Polymorphic many-to-many (`model_has_roles`-style pivots).
|
|
475
608
|
* Third argument may be the pivot table name or an options bag (tenant/legacy morph types).
|
|
476
609
|
*/
|
|
477
|
-
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>>;
|
|
478
616
|
/** `$this->morphMany(Related::class, name)`. */
|
|
479
|
-
morphMany<R extends
|
|
617
|
+
morphMany<R extends RelatedModel>(related: R, name: string, type?: string, id?: string, localKey?: string): MorphMany<InstanceType<R>>;
|
|
480
618
|
/** `$this->morphOne(Related::class, name)`. */
|
|
481
|
-
morphOne<R extends
|
|
619
|
+
morphOne<R extends RelatedModel>(related: R, name: string, type?: string, id?: string, localKey?: string): MorphOne<InstanceType<R>>;
|
|
482
620
|
/** `$this->morphTo($name)`. */
|
|
483
621
|
morphTo(name: string, type?: string, id?: string, ownerKey?: string): MorphTo;
|
|
484
622
|
}
|
|
485
623
|
/** True when `value` is a Model subclass constructor (O(1) prototype check). */
|
|
486
624
|
export declare function isModelCtor(value: unknown): value is ModelClass;
|
|
487
|
-
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";
|
|
488
626
|
export { eagerLoadAggregates, eagerLoadModels, type EagerAggregateSpec, } from "./eager.js";
|
|
489
627
|
export { ModelQuery } from "./model-query.js";
|
|
490
628
|
export { LazyLoadingViolationException, MassAssignmentException, MissingAttributeException, resetModelStrictnessForTests, } from "./model-strictness.js";
|