1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 | import {AnyObject, Callback, Options, PromiseOrVoid} from './common';
|
7 | import {ModelBase, ModelBaseClass, ModelData} from './model';
|
8 | import {Count} from './persisted-model';
|
9 | import {Filter, Where} from './query';
|
10 |
|
11 |
|
12 |
|
13 |
|
14 | export declare class ScopeDefinition {
|
15 | constructor(definition: AnyObject);
|
16 |
|
17 | isStatic: boolean;
|
18 | modelFrom?: ModelBaseClass;
|
19 | modelTo?: ModelBaseClass;
|
20 | name: string;
|
21 | params?: AnyObject;
|
22 | methods?: AnyObject<Function>;
|
23 | options?: Options;
|
24 |
|
25 | targetModel(receiver: ModelBaseClass | (() => ModelBaseClass)): void;
|
26 |
|
27 | /**
|
28 | * Find related model instances
|
29 | * @param {*} receiver The target model class/prototype
|
30 | * @param {Object|Function} scopeParams
|
31 | * @param {Boolean|Object} [condOrRefresh] true for refresh or object as a filter
|
32 | * @param {Object} [options]
|
33 | * @param {Function} cb
|
34 | * @returns {*}
|
35 | */
|
36 | related(
|
37 | receiver: ModelBaseClass | (() => ModelBaseClass),
|
38 | scopeParams: AnyObject | (() => AnyObject),
|
39 | condOrRefresh: boolean | AnyObject,
|
40 | options?: Options,
|
41 | callback?: Callback,
|
42 | ): PromiseOrVoid;
|
43 |
|
44 | /**
|
45 | * Define a scope method
|
46 | * @param {String} name of the method
|
47 | * @param {Function} function to define
|
48 | */
|
49 | defineMethod(name: string, fn: Function): Function;
|
50 | }
|
51 |
|
52 | /**
|
53 | * Define a scope to the class
|
54 | * @param {Model} cls The class where the scope method is added
|
55 | * @param {Model} targetClass The class that a query to run against
|
56 | * @param {String} name The name of the scope
|
57 | * @param {Object|Function} params The parameters object for the query or a function
|
58 | * to return the query object
|
59 | * @param methods An object of methods keyed by the method name to be bound to the class
|
60 | */
|
61 | export declare function defineScope(
|
62 | cls: ModelBaseClass,
|
63 | targetClass: ModelBaseClass,
|
64 | name: string,
|
65 | params: AnyObject,
|
66 | methods: AnyObject<Function>,
|
67 | options?: Options,
|
68 | ): ScopeDefinition;
|
69 |
|
70 | /**
|
71 | * Methods injected by scopes
|
72 | */
|
73 | export interface ScopedMethods<T extends ModelBase = ModelBase> {
|
74 | build(data: ModelData<T>): T;
|
75 |
|
76 | create(
|
77 | data: ModelData<T>,
|
78 | options?: Options,
|
79 | callback?: Callback<T>,
|
80 | ): PromiseOrVoid<T>;
|
81 |
|
82 | destroyAll(
|
83 | where?: Where,
|
84 | options?: Options,
|
85 | callback?: Callback<Count>,
|
86 | ): PromiseOrVoid<Count>;
|
87 |
|
88 | updateAll(
|
89 | where?: Where,
|
90 | data?: ModelData<T>,
|
91 | options?: Options,
|
92 | callback?: Callback<Count>,
|
93 | ): PromiseOrVoid<Count>;
|
94 |
|
95 | findById(
|
96 | id: any,
|
97 | filter: Filter,
|
98 | options?: Options,
|
99 | callback?: Callback<T>,
|
100 | ): PromiseOrVoid<T>;
|
101 |
|
102 | findOne(
|
103 | filter: Filter,
|
104 | options?: Options,
|
105 | callback?: Callback<T>,
|
106 | ): PromiseOrVoid<T>;
|
107 |
|
108 | count(
|
109 | where: Where,
|
110 | options?: Options,
|
111 | callback?: Callback<number>,
|
112 | ): PromiseOrVoid<number>;
|
113 | }
|
114 |
|
\ | No newline at end of file |