UNPKG

2.96 kBTypeScriptView Raw
1// Copyright IBM Corp. 2018. All Rights Reserved.
2// Node module: loopback-datasource-juggler
3// This file is licensed under the MIT License.
4// License text available at https://opensource.org/licenses/MIT
5
6import {AnyObject, Callback, Options, PromiseOrVoid} from './common';
7import {ModelBase, ModelBaseClass, ModelData} from './model';
8import {Count} from './persisted-model';
9import {Filter, Where} from './query';
10
11/**
12 * Definition metadata for scopes
13 */
14export 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 */
61export 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 */
73export 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