@rudderjs/orm 0.0.6
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/LICENSE +21 -0
- package/README.md +604 -0
- package/boost/guidelines.md +234 -0
- package/dist/attribute.d.ts +36 -0
- package/dist/attribute.d.ts.map +1 -0
- package/dist/attribute.js +36 -0
- package/dist/attribute.js.map +1 -0
- package/dist/cast.d.ts +14 -0
- package/dist/cast.d.ts.map +1 -0
- package/dist/cast.js +85 -0
- package/dist/cast.js.map +1 -0
- package/dist/collection.d.ts +73 -0
- package/dist/collection.d.ts.map +1 -0
- package/dist/collection.js +152 -0
- package/dist/collection.js.map +1 -0
- package/dist/factory.d.ts +80 -0
- package/dist/factory.d.ts.map +1 -0
- package/dist/factory.js +129 -0
- package/dist/factory.js.map +1 -0
- package/dist/index.d.ts +195 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +450 -0
- package/dist/index.js.map +1 -0
- package/dist/resource.d.ts +95 -0
- package/dist/resource.d.ts.map +1 -0
- package/dist/resource.js +115 -0
- package/dist/resource.js.map +1 -0
- package/package.json +39 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collection.js","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create a value that cycles through `values` each time a new model is made.
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* definition() {
|
|
6
|
+
* return {
|
|
7
|
+
* name: sequence(['Alice', 'Bob', 'Carol']),
|
|
8
|
+
* email: sequence(i => `user${i}@example.com`),
|
|
9
|
+
* }
|
|
10
|
+
* }
|
|
11
|
+
*/
|
|
12
|
+
export declare function sequence<T>(valuesOrFn: T[] | ((index: number) => T)): () => T;
|
|
13
|
+
type ModelCreateFn<TAttrs extends Record<string, unknown>> = (data: Partial<TAttrs>) => Promise<TAttrs>;
|
|
14
|
+
type StateFn<TAttrs extends Record<string, unknown>> = (attrs: TAttrs) => Partial<TAttrs> | Promise<Partial<TAttrs>>;
|
|
15
|
+
/**
|
|
16
|
+
* Base class for model factories. Extend and implement `definition()` and
|
|
17
|
+
* set `modelClass` to the Model you want to create.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* class UserFactory extends ModelFactory<{ name: string; email: string; role: string }> {
|
|
21
|
+
* protected modelClass = User
|
|
22
|
+
*
|
|
23
|
+
* definition() {
|
|
24
|
+
* return {
|
|
25
|
+
* name: 'Alice',
|
|
26
|
+
* email: sequence(i => `alice${i}@example.com`)(),
|
|
27
|
+
* role: 'user',
|
|
28
|
+
* }
|
|
29
|
+
* }
|
|
30
|
+
*
|
|
31
|
+
* protected states() {
|
|
32
|
+
* return {
|
|
33
|
+
* admin: () => ({ role: 'admin' }),
|
|
34
|
+
* }
|
|
35
|
+
* }
|
|
36
|
+
* }
|
|
37
|
+
*
|
|
38
|
+
* // Usage:
|
|
39
|
+
* const user = await UserFactory.new().create()
|
|
40
|
+
* const admin = await UserFactory.new().state('admin').create()
|
|
41
|
+
* const users = await UserFactory.new().create(3)
|
|
42
|
+
* const dtos = await UserFactory.new().make(5)
|
|
43
|
+
*/
|
|
44
|
+
export declare abstract class ModelFactory<TAttrs extends Record<string, unknown>> {
|
|
45
|
+
/** The Model class used for `create()`. */
|
|
46
|
+
protected abstract readonly modelClass: {
|
|
47
|
+
create: ModelCreateFn<TAttrs>;
|
|
48
|
+
};
|
|
49
|
+
/** The base attribute definition. May return dynamic values or callables. */
|
|
50
|
+
abstract definition(): TAttrs | Promise<TAttrs>;
|
|
51
|
+
/** Named states — override to add. */
|
|
52
|
+
protected states(): Record<string, StateFn<TAttrs>>;
|
|
53
|
+
private _stateOverrides;
|
|
54
|
+
private _clone;
|
|
55
|
+
/** Create a new factory instance. */
|
|
56
|
+
static new<T extends ModelFactory<Record<string, unknown>>>(this: new () => T): T;
|
|
57
|
+
/**
|
|
58
|
+
* Apply a named state defined in `states()`.
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* UserFactory.new().state('admin').create()
|
|
62
|
+
*/
|
|
63
|
+
state(name: string): this;
|
|
64
|
+
/**
|
|
65
|
+
* Apply an inline state override.
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* UserFactory.new().with(() => ({ role: 'moderator' })).create()
|
|
69
|
+
*/
|
|
70
|
+
with(fn: StateFn<TAttrs>): this;
|
|
71
|
+
private _build;
|
|
72
|
+
/** Build model attribute(s) without saving to the database. */
|
|
73
|
+
make(overrides?: Partial<TAttrs>): Promise<TAttrs>;
|
|
74
|
+
make(count: number, overrides?: Partial<TAttrs>): Promise<TAttrs[]>;
|
|
75
|
+
/** Build and persist model(s) to the database via `Model.create()`. */
|
|
76
|
+
create(overrides?: Partial<TAttrs>): Promise<TAttrs>;
|
|
77
|
+
create(count: number, overrides?: Partial<TAttrs>): Promise<TAttrs[]>;
|
|
78
|
+
}
|
|
79
|
+
export {};
|
|
80
|
+
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAS7E;AAID,KAAK,aAAa,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAC3D,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,KAClB,OAAO,CAAC,MAAM,CAAC,CAAA;AAEpB,KAAK,OAAO,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IACjD,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,8BAAsB,YAAY,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACvE,2CAA2C;IAC3C,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE;QAAE,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;KAAE,CAAA;IAEzE,6EAA6E;IAC7E,QAAQ,CAAC,UAAU,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAE/C,sCAAsC;IACtC,SAAS,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAInD,OAAO,CAAC,eAAe,CAAwB;IAE/C,OAAO,CAAC,MAAM;IAMd,qCAAqC;IACrC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACxD,IAAI,EAAE,UAAU,CAAC,GAChB,CAAC;IAIJ;;;;;OAKG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQzB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI;YAQjB,MAAM;IAyBpB,+DAA+D;IAC/D,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAClD,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAcnE,uEAAuE;IACvE,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IACpD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAatE"}
|
package/dist/factory.js
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
// ─── sequence() helper ──────────────────────────────────────
|
|
2
|
+
/**
|
|
3
|
+
* Create a value that cycles through `values` each time a new model is made.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* definition() {
|
|
7
|
+
* return {
|
|
8
|
+
* name: sequence(['Alice', 'Bob', 'Carol']),
|
|
9
|
+
* email: sequence(i => `user${i}@example.com`),
|
|
10
|
+
* }
|
|
11
|
+
* }
|
|
12
|
+
*/
|
|
13
|
+
export function sequence(valuesOrFn) {
|
|
14
|
+
let i = 0;
|
|
15
|
+
return () => {
|
|
16
|
+
const val = Array.isArray(valuesOrFn)
|
|
17
|
+
? valuesOrFn[i % valuesOrFn.length]
|
|
18
|
+
: valuesOrFn(i);
|
|
19
|
+
i++;
|
|
20
|
+
return val;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Base class for model factories. Extend and implement `definition()` and
|
|
25
|
+
* set `modelClass` to the Model you want to create.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* class UserFactory extends ModelFactory<{ name: string; email: string; role: string }> {
|
|
29
|
+
* protected modelClass = User
|
|
30
|
+
*
|
|
31
|
+
* definition() {
|
|
32
|
+
* return {
|
|
33
|
+
* name: 'Alice',
|
|
34
|
+
* email: sequence(i => `alice${i}@example.com`)(),
|
|
35
|
+
* role: 'user',
|
|
36
|
+
* }
|
|
37
|
+
* }
|
|
38
|
+
*
|
|
39
|
+
* protected states() {
|
|
40
|
+
* return {
|
|
41
|
+
* admin: () => ({ role: 'admin' }),
|
|
42
|
+
* }
|
|
43
|
+
* }
|
|
44
|
+
* }
|
|
45
|
+
*
|
|
46
|
+
* // Usage:
|
|
47
|
+
* const user = await UserFactory.new().create()
|
|
48
|
+
* const admin = await UserFactory.new().state('admin').create()
|
|
49
|
+
* const users = await UserFactory.new().create(3)
|
|
50
|
+
* const dtos = await UserFactory.new().make(5)
|
|
51
|
+
*/
|
|
52
|
+
export class ModelFactory {
|
|
53
|
+
/** Named states — override to add. */
|
|
54
|
+
states() {
|
|
55
|
+
return {};
|
|
56
|
+
}
|
|
57
|
+
_stateOverrides = [];
|
|
58
|
+
_clone() {
|
|
59
|
+
const c = Object.create(this);
|
|
60
|
+
c._stateOverrides = [...this._stateOverrides];
|
|
61
|
+
return c;
|
|
62
|
+
}
|
|
63
|
+
/** Create a new factory instance. */
|
|
64
|
+
static new() {
|
|
65
|
+
return new this();
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Apply a named state defined in `states()`.
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* UserFactory.new().state('admin').create()
|
|
72
|
+
*/
|
|
73
|
+
state(name) {
|
|
74
|
+
const c = this._clone();
|
|
75
|
+
const fn = this.states()[name];
|
|
76
|
+
if (!fn)
|
|
77
|
+
throw new Error(`[RudderJS] Factory state "${name}" is not defined on ${this.constructor.name}.`);
|
|
78
|
+
c._stateOverrides.push(fn);
|
|
79
|
+
return c;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Apply an inline state override.
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* UserFactory.new().with(() => ({ role: 'moderator' })).create()
|
|
86
|
+
*/
|
|
87
|
+
with(fn) {
|
|
88
|
+
const c = this._clone();
|
|
89
|
+
c._stateOverrides.push(fn);
|
|
90
|
+
return c;
|
|
91
|
+
}
|
|
92
|
+
// ── Internal build ──────────────────────────────────
|
|
93
|
+
async _build(overrides) {
|
|
94
|
+
// Resolve definition (supports sequence() callables inside it)
|
|
95
|
+
const raw = await this.definition();
|
|
96
|
+
// Resolve any callable values (from sequence())
|
|
97
|
+
const resolved = {};
|
|
98
|
+
for (const [k, v] of Object.entries(raw)) {
|
|
99
|
+
resolved[k] = typeof v === 'function' ? v() : v;
|
|
100
|
+
}
|
|
101
|
+
let attrs = resolved;
|
|
102
|
+
// Apply state overrides
|
|
103
|
+
for (const stateFn of this._stateOverrides) {
|
|
104
|
+
const patch = await stateFn(attrs);
|
|
105
|
+
attrs = { ...attrs, ...patch };
|
|
106
|
+
}
|
|
107
|
+
// Apply inline overrides
|
|
108
|
+
if (overrides)
|
|
109
|
+
attrs = { ...attrs, ...overrides };
|
|
110
|
+
return attrs;
|
|
111
|
+
}
|
|
112
|
+
async make(countOrOverrides, overrides) {
|
|
113
|
+
if (typeof countOrOverrides === 'number') {
|
|
114
|
+
const n = countOrOverrides;
|
|
115
|
+
return Promise.all(Array.from({ length: n }, () => this._build(overrides)));
|
|
116
|
+
}
|
|
117
|
+
return this._build(countOrOverrides);
|
|
118
|
+
}
|
|
119
|
+
async create(countOrOverrides, overrides) {
|
|
120
|
+
if (typeof countOrOverrides === 'number') {
|
|
121
|
+
const n = countOrOverrides;
|
|
122
|
+
const attrs = await Promise.all(Array.from({ length: n }, () => this._build(overrides)));
|
|
123
|
+
return Promise.all(attrs.map(a => this.modelClass.create(a)));
|
|
124
|
+
}
|
|
125
|
+
const attrs = await this._build(countOrOverrides);
|
|
126
|
+
return this.modelClass.create(attrs);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import type { QueryBuilder, OrmAdapter } from '@rudderjs/contracts';
|
|
2
|
+
import { type CastDefinition } from './cast.js';
|
|
3
|
+
import { type Attribute } from './attribute.js';
|
|
4
|
+
export type { QueryBuilder, OrmAdapter, OrmAdapterProvider, PaginatedResult, WhereOperator, WhereClause, OrderClause, QueryState } from '@rudderjs/contracts';
|
|
5
|
+
export type { CastDefinition, CastUsing, BuiltInCast } from './cast.js';
|
|
6
|
+
export { Attribute } from './attribute.js';
|
|
7
|
+
export { JsonResource, ResourceCollection } from './resource.js';
|
|
8
|
+
export { ModelCollection } from './collection.js';
|
|
9
|
+
export { ModelFactory, sequence } from './factory.js';
|
|
10
|
+
export declare class ModelRegistry {
|
|
11
|
+
private static adapter;
|
|
12
|
+
static set(adapter: OrmAdapter): void;
|
|
13
|
+
static get(): OrmAdapter | null;
|
|
14
|
+
static getAdapter(): OrmAdapter;
|
|
15
|
+
static reset(): void;
|
|
16
|
+
}
|
|
17
|
+
export type ModelEvent = 'creating' | 'created' | 'updating' | 'updated' | 'deleting' | 'deleted' | 'restoring' | 'restored';
|
|
18
|
+
export interface ModelObserver {
|
|
19
|
+
creating?(data: Record<string, unknown>): Record<string, unknown> | void | Promise<Record<string, unknown> | void>;
|
|
20
|
+
created?(record: Record<string, unknown>): void | Promise<void>;
|
|
21
|
+
updating?(id: string | number, data: Record<string, unknown>): Record<string, unknown> | false | void | Promise<Record<string, unknown> | false | void>;
|
|
22
|
+
updated?(record: Record<string, unknown>): void | Promise<void>;
|
|
23
|
+
deleting?(id: string | number): false | void | Promise<false | void>;
|
|
24
|
+
deleted?(id: string | number): void | Promise<void>;
|
|
25
|
+
restoring?(id: string | number): false | void | Promise<false | void>;
|
|
26
|
+
restored?(record: Record<string, unknown>): void | Promise<void>;
|
|
27
|
+
}
|
|
28
|
+
type ScopeFn = (query: QueryBuilder<any>, ...args: any[]) => QueryBuilder<any>;
|
|
29
|
+
/**
|
|
30
|
+
* Mark an instance property as hidden from JSON output.
|
|
31
|
+
* Equivalent to adding the field name to `static hidden`.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* class User extends Model {
|
|
35
|
+
* @Hidden password = ''
|
|
36
|
+
* }
|
|
37
|
+
*/
|
|
38
|
+
export declare function Hidden(target: object, key: string | symbol): void;
|
|
39
|
+
/**
|
|
40
|
+
* Restrict JSON output to only visible properties.
|
|
41
|
+
* Equivalent to setting `static visible`.
|
|
42
|
+
* Applied per-field — all `@Visible` fields form the allowlist.
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* class User extends Model {
|
|
46
|
+
* @Visible id = 0
|
|
47
|
+
* @Visible name = ''
|
|
48
|
+
* password = '' // hidden because visible list is set
|
|
49
|
+
* }
|
|
50
|
+
*/
|
|
51
|
+
export declare function Visible(target: object, key: string | symbol): void;
|
|
52
|
+
/**
|
|
53
|
+
* Always include the named accessor in JSON output.
|
|
54
|
+
* The property must also be defined in `static attributes` with a getter.
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* class User extends Model {
|
|
58
|
+
* @Appends fullName = ''
|
|
59
|
+
* static attributes = {
|
|
60
|
+
* fullName: Attribute.make({ get: (_, a) => `${a['firstName']} ${a['lastName']}` }),
|
|
61
|
+
* }
|
|
62
|
+
* }
|
|
63
|
+
*/
|
|
64
|
+
export declare function Appends(target: object, key: string | symbol): void;
|
|
65
|
+
/**
|
|
66
|
+
* Apply a cast to an instance property.
|
|
67
|
+
* Equivalent to adding the field to `static casts`.
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* class User extends Model {
|
|
71
|
+
* @Cast('boolean') isAdmin = false
|
|
72
|
+
* @Cast('date') createdAt = new Date()
|
|
73
|
+
* @Cast(MoneyCast) balance = 0
|
|
74
|
+
* }
|
|
75
|
+
*/
|
|
76
|
+
export declare function Cast(type: CastDefinition): (target: object, key: string | symbol) => void;
|
|
77
|
+
export declare abstract class Model {
|
|
78
|
+
/** The table name — defaults to lowercase class name + 's' */
|
|
79
|
+
static table: string;
|
|
80
|
+
/** Primary key column */
|
|
81
|
+
static primaryKey: string;
|
|
82
|
+
/** Columns to hide from JSON output */
|
|
83
|
+
static hidden: string[];
|
|
84
|
+
/**
|
|
85
|
+
* Columns to exclusively include in JSON output.
|
|
86
|
+
* When set, only these columns (plus appends) appear in toJSON().
|
|
87
|
+
* Takes precedence over `hidden`.
|
|
88
|
+
*/
|
|
89
|
+
static visible: string[];
|
|
90
|
+
/**
|
|
91
|
+
* Accessor names (defined in `attributes`) to always append to JSON output.
|
|
92
|
+
* The accessor must have a `get` function.
|
|
93
|
+
*/
|
|
94
|
+
static appends: string[];
|
|
95
|
+
/**
|
|
96
|
+
* Attribute casts — map column names to their cast types.
|
|
97
|
+
* Applied both when reading (toJSON) and writing (create/update).
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* static casts = {
|
|
101
|
+
* isAdmin: 'boolean',
|
|
102
|
+
* createdAt: 'date',
|
|
103
|
+
* settings: 'json',
|
|
104
|
+
* balance: MoneyCast, // custom cast class
|
|
105
|
+
* } as const satisfies Record<string, CastDefinition>
|
|
106
|
+
*/
|
|
107
|
+
static casts: Record<string, CastDefinition>;
|
|
108
|
+
/**
|
|
109
|
+
* Accessors and mutators using `Attribute.make({ get, set })`.
|
|
110
|
+
*
|
|
111
|
+
* @example
|
|
112
|
+
* static attributes = {
|
|
113
|
+
* firstName: Attribute.make({ get: v => String(v).charAt(0).toUpperCase() + String(v).slice(1) }),
|
|
114
|
+
* fullName: Attribute.make({ get: (_, attrs) => `${attrs['firstName']} ${attrs['lastName']}` }),
|
|
115
|
+
* password: Attribute.make({ set: async v => await bcrypt.hash(String(v), 10) }),
|
|
116
|
+
* }
|
|
117
|
+
*/
|
|
118
|
+
static attributes: Record<string, Attribute>;
|
|
119
|
+
/** Columns that are mass-assignable */
|
|
120
|
+
static fillable: string[];
|
|
121
|
+
/**
|
|
122
|
+
* Enable soft deletes for this model. When true:
|
|
123
|
+
* - `delete()` sets `deletedAt` instead of removing the record
|
|
124
|
+
* - Queries automatically exclude records where `deletedAt` is not null
|
|
125
|
+
* - Use `withTrashed()` to include soft-deleted records
|
|
126
|
+
* - Use `onlyTrashed()` to return only soft-deleted records
|
|
127
|
+
* - Use `restore()` to un-delete a record
|
|
128
|
+
* - Use `forceDelete()` to permanently remove a record
|
|
129
|
+
*/
|
|
130
|
+
static softDeletes: boolean;
|
|
131
|
+
/** @internal */
|
|
132
|
+
private _instanceHidden?;
|
|
133
|
+
/** @internal */
|
|
134
|
+
private _instanceVisible?;
|
|
135
|
+
static globalScopes: Record<string, ScopeFn>;
|
|
136
|
+
static scopes: Record<string, ScopeFn>;
|
|
137
|
+
/** @internal */
|
|
138
|
+
private static _observers;
|
|
139
|
+
/** @internal */
|
|
140
|
+
private static _listeners;
|
|
141
|
+
static observe(ObserverClass: new () => ModelObserver): void;
|
|
142
|
+
static on(event: ModelEvent, handler: (...args: any[]) => any): void;
|
|
143
|
+
private static _fireEvent;
|
|
144
|
+
static clearObservers(): void;
|
|
145
|
+
static getTable(this: typeof Model): string;
|
|
146
|
+
static query<T extends typeof Model>(this: T): QueryBuilder<InstanceType<T>> & {
|
|
147
|
+
scope(name: string, ...args: unknown[]): QueryBuilder<InstanceType<T>>;
|
|
148
|
+
withoutGlobalScope(name: string): QueryBuilder<InstanceType<T>>;
|
|
149
|
+
};
|
|
150
|
+
private static _q;
|
|
151
|
+
static find<T extends typeof Model>(this: T, id: number | string): Promise<InstanceType<T> | null>;
|
|
152
|
+
static all<T extends typeof Model>(this: T): Promise<InstanceType<T>[]>;
|
|
153
|
+
static where<T extends typeof Model>(this: T, column: string, value: unknown): QueryBuilder<InstanceType<T>>;
|
|
154
|
+
static create<T extends typeof Model>(this: T, data: Partial<InstanceType<T>>): Promise<InstanceType<T>>;
|
|
155
|
+
static with<T extends typeof Model>(this: T, ...relations: string[]): QueryBuilder<InstanceType<T>>;
|
|
156
|
+
static update<T extends typeof Model>(this: T, id: number | string, data: Partial<InstanceType<T>>): Promise<InstanceType<T>>;
|
|
157
|
+
static delete<T extends typeof Model>(this: T, id: number | string): Promise<void>;
|
|
158
|
+
static restore<T extends typeof Model>(this: T, id: number | string): Promise<InstanceType<T>>;
|
|
159
|
+
static forceDelete<T extends typeof Model>(this: T, id: number | string): Promise<void>;
|
|
160
|
+
/** @internal — apply cast setters and attribute mutators to an incoming data payload */
|
|
161
|
+
private static _applyMutators;
|
|
162
|
+
/**
|
|
163
|
+
* Make the given keys visible for this instance's JSON output.
|
|
164
|
+
* Removes them from the instance's hidden list and adds to the visible override.
|
|
165
|
+
* Returns `this` for chaining.
|
|
166
|
+
*/
|
|
167
|
+
makeVisible(keys: string | string[]): this;
|
|
168
|
+
/**
|
|
169
|
+
* Hide the given keys from this instance's JSON output.
|
|
170
|
+
* Returns `this` for chaining.
|
|
171
|
+
*/
|
|
172
|
+
makeHidden(keys: string | string[]): this;
|
|
173
|
+
/**
|
|
174
|
+
* Override the visible list for this instance only.
|
|
175
|
+
* Returns `this` for chaining.
|
|
176
|
+
*/
|
|
177
|
+
setVisible(keys: string[]): this;
|
|
178
|
+
/**
|
|
179
|
+
* Override the hidden list for this instance only.
|
|
180
|
+
* Returns `this` for chaining.
|
|
181
|
+
*/
|
|
182
|
+
setHidden(keys: string[]): this;
|
|
183
|
+
/**
|
|
184
|
+
* Add keys to the visible list for this instance.
|
|
185
|
+
* Returns `this` for chaining.
|
|
186
|
+
*/
|
|
187
|
+
mergeVisible(keys: string[]): this;
|
|
188
|
+
/**
|
|
189
|
+
* Add keys to the hidden list for this instance.
|
|
190
|
+
* Returns `this` for chaining.
|
|
191
|
+
*/
|
|
192
|
+
mergeHidden(keys: string[]): this;
|
|
193
|
+
toJSON(): Record<string, unknown>;
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|