@fjell/client-api 4.4.1 → 4.4.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/dist/AItemAPI.js +8 -1
- package/dist/AItemAPI.js.map +1 -1
- package/dist/CItemAPI.d.ts +12 -9
- package/dist/CItemAPI.js +4 -1
- package/dist/CItemAPI.js.map +1 -1
- package/dist/ClientApi.d.ts +12 -10
- package/dist/ClientApiOptions.d.ts +5 -0
- package/dist/PItemAPI.d.ts +13 -10
- package/dist/PItemAPI.js +16 -10
- package/dist/PItemAPI.js.map +1 -1
- package/dist/index.cjs +173 -73
- package/dist/index.cjs.map +1 -1
- package/dist/ops/action.d.ts +2 -2
- package/dist/ops/action.js +6 -5
- package/dist/ops/action.js.map +1 -1
- package/dist/ops/all.d.ts +2 -2
- package/dist/ops/all.js +7 -6
- package/dist/ops/all.js.map +1 -1
- package/dist/ops/allAction.d.ts +2 -2
- package/dist/ops/allAction.js +6 -5
- package/dist/ops/allAction.js.map +1 -1
- package/dist/ops/allFacet.d.ts +5 -0
- package/dist/ops/allFacet.js +24 -0
- package/dist/ops/allFacet.js.map +1 -0
- package/dist/ops/create.d.ts +2 -2
- package/dist/ops/create.js +6 -5
- package/dist/ops/create.js.map +1 -1
- package/dist/ops/facet.d.ts +5 -0
- package/dist/ops/facet.js +34 -0
- package/dist/ops/facet.js.map +1 -0
- package/dist/ops/find.d.ts +2 -2
- package/dist/ops/find.js +10 -9
- package/dist/ops/find.js.map +1 -1
- package/dist/ops/findOne.d.ts +5 -0
- package/dist/ops/findOne.js +27 -0
- package/dist/ops/findOne.js.map +1 -0
- package/dist/ops/get.d.ts +2 -2
- package/dist/ops/get.js +6 -5
- package/dist/ops/get.js.map +1 -1
- package/dist/ops/index.js +6 -0
- package/dist/ops/index.js.map +1 -1
- package/dist/ops/one.d.ts +2 -2
- package/dist/ops/one.js +7 -6
- package/dist/ops/one.js.map +1 -1
- package/dist/ops/remove.d.ts +2 -2
- package/dist/ops/remove.js +6 -5
- package/dist/ops/remove.js.map +1 -1
- package/dist/ops/update.d.ts +2 -2
- package/dist/ops/update.js +6 -5
- package/dist/ops/update.js.map +1 -1
- package/dist/util/general.d.ts +4 -0
- package/package.json +6 -6
- package/src/AItemAPI.ts +17 -9
- package/src/CItemAPI.ts +22 -16
- package/src/ClientApi.ts +59 -54
- package/src/ClientApiOptions.ts +5 -0
- package/src/PItemAPI.ts +56 -42
- package/src/ops/action.ts +19 -23
- package/src/ops/all.ts +17 -19
- package/src/ops/allAction.ts +18 -21
- package/src/ops/allFacet.ts +46 -0
- package/src/ops/create.ts +21 -23
- package/src/ops/facet.ts +58 -0
- package/src/ops/find.ts +20 -23
- package/src/ops/findOne.ts +51 -0
- package/src/ops/get.ts +17 -20
- package/src/ops/index.ts +80 -61
- package/src/ops/one.ts +3 -5
- package/src/ops/remove.ts +17 -20
- package/src/ops/update.ts +17 -19
- package/src/util/general.ts +65 -0
package/dist/index.cjs
CHANGED
|
@@ -8,74 +8,78 @@ const deepmerge = require('deepmerge');
|
|
|
8
8
|
|
|
9
9
|
const LibLogger = Logging.getLogger('@fjell/client-api');
|
|
10
10
|
|
|
11
|
-
const logger$
|
|
11
|
+
const logger$f = LibLogger.get('client-api', 'ops', 'all');
|
|
12
12
|
const getAllOperation = (api, apiOptions, utilities)=>{
|
|
13
|
-
const all = async (query = {},
|
|
14
|
-
logger$c.default('all', {
|
|
15
|
-
query,
|
|
16
|
-
locations
|
|
17
|
-
});
|
|
13
|
+
const all = async (query = {}, locations = [])=>{
|
|
18
14
|
utilities.verifyLocations(locations);
|
|
19
15
|
const loc = locations;
|
|
20
16
|
const params = core.queryToParams(query);
|
|
21
|
-
const requestOptions = Object.assign({},
|
|
17
|
+
const requestOptions = Object.assign({}, apiOptions.getOptions, {
|
|
22
18
|
isAuthenticated: apiOptions.allAuthenticated,
|
|
23
19
|
params
|
|
24
20
|
});
|
|
21
|
+
logger$f.default('all', {
|
|
22
|
+
query,
|
|
23
|
+
locations,
|
|
24
|
+
requestOptions
|
|
25
|
+
});
|
|
25
26
|
return utilities.validatePK(await utilities.processArray(api.httpGet(utilities.getPath(loc), requestOptions)));
|
|
26
27
|
};
|
|
27
28
|
return all;
|
|
28
29
|
};
|
|
29
30
|
|
|
30
|
-
const logger$
|
|
31
|
+
const logger$e = LibLogger.get('client-api', 'ops', 'action');
|
|
31
32
|
const getActionOperation = (api, apiOptions, utilities)=>{
|
|
32
|
-
const action = async (ik, action, body = {}
|
|
33
|
-
|
|
33
|
+
const action = async (ik, action, body = {})=>{
|
|
34
|
+
const requestOptions = Object.assign({}, apiOptions.postOptions, {
|
|
35
|
+
isAuthenticated: apiOptions.writeAuthenticated
|
|
36
|
+
});
|
|
37
|
+
logger$e.default('action', {
|
|
34
38
|
ik,
|
|
35
39
|
action,
|
|
36
|
-
body
|
|
37
|
-
|
|
38
|
-
const requestOptions = Object.assign({}, options, {
|
|
39
|
-
isAuthenticated: apiOptions.writeAuthenticated
|
|
40
|
+
body,
|
|
41
|
+
requestOptions
|
|
40
42
|
});
|
|
41
43
|
return utilities.validatePK(await utilities.processOne(api.httpPost(`${utilities.getPath(ik)}/${action}`, body, requestOptions)));
|
|
42
44
|
};
|
|
43
45
|
return action;
|
|
44
46
|
};
|
|
45
47
|
|
|
46
|
-
const logger$
|
|
48
|
+
const logger$d = LibLogger.get('client-api', 'ops', 'allAction');
|
|
47
49
|
const getAllActionOperation = (api, apiOptions, utilities)=>{
|
|
48
|
-
const allAction = async (action, body = {},
|
|
49
|
-
|
|
50
|
+
const allAction = async (action, body = {}, locations = [])=>{
|
|
51
|
+
const requestOptions = Object.assign({}, apiOptions.postOptions, {
|
|
52
|
+
isAuthenticated: apiOptions.writeAuthenticated
|
|
53
|
+
});
|
|
54
|
+
logger$d.default('allAction', {
|
|
50
55
|
action,
|
|
51
56
|
body,
|
|
52
|
-
locations
|
|
57
|
+
locations,
|
|
58
|
+
requestOptions
|
|
53
59
|
});
|
|
54
60
|
utilities.verifyLocations(locations);
|
|
55
61
|
const loc = locations;
|
|
56
|
-
const requestOptions = Object.assign({}, options, {
|
|
57
|
-
isAuthenticated: apiOptions.writeAuthenticated
|
|
58
|
-
});
|
|
59
62
|
// TODO: This should respond to either a single object, or multiple objects in an array.
|
|
60
63
|
return utilities.validatePK(await utilities.processArray(api.httpPost(utilities.getPath(loc), body, requestOptions)));
|
|
61
64
|
};
|
|
62
65
|
return allAction;
|
|
63
66
|
};
|
|
64
67
|
|
|
65
|
-
const logger$
|
|
68
|
+
const logger$c = LibLogger.get('client-api', 'ops', 'one');
|
|
66
69
|
const getOneOperation = (api, apiOptions, utilities)=>{
|
|
67
|
-
const one = async (query = {},
|
|
68
|
-
logger$9.default('one', {
|
|
69
|
-
query,
|
|
70
|
-
locations
|
|
71
|
-
});
|
|
70
|
+
const one = async (query = {}, locations = [])=>{
|
|
72
71
|
utilities.verifyLocations(locations);
|
|
73
72
|
const loc = locations;
|
|
74
73
|
const params = core.queryToParams(query);
|
|
75
|
-
const requestOptions = Object.assign({},
|
|
74
|
+
const requestOptions = Object.assign({}, apiOptions.getOptions, {
|
|
76
75
|
isAuthenticated: apiOptions.readAuthenticated,
|
|
77
76
|
params
|
|
78
77
|
});
|
|
78
|
+
logger$c.default('one', {
|
|
79
|
+
query,
|
|
80
|
+
locations,
|
|
81
|
+
requestOptions
|
|
82
|
+
});
|
|
79
83
|
let item = null;
|
|
80
84
|
const items = utilities.validatePK(await utilities.processArray(api.httpGet(utilities.getPath(loc), requestOptions)));
|
|
81
85
|
if (items.length > 0) {
|
|
@@ -86,85 +90,162 @@ const getOneOperation = (api, apiOptions, utilities)=>{
|
|
|
86
90
|
return one;
|
|
87
91
|
};
|
|
88
92
|
|
|
89
|
-
const logger$
|
|
93
|
+
const logger$b = LibLogger.get('client-api', 'ops', 'create');
|
|
90
94
|
const getCreateOperation = (api, apiOptions, utilities)=>{
|
|
91
|
-
const create = async (item,
|
|
92
|
-
|
|
95
|
+
const create = async (item, locations = [])=>{
|
|
96
|
+
const requestOptions = Object.assign({}, apiOptions.postOptions, {
|
|
97
|
+
isAuthenticated: apiOptions.writeAuthenticated
|
|
98
|
+
});
|
|
99
|
+
logger$b.default('create', {
|
|
93
100
|
item,
|
|
94
|
-
locations
|
|
101
|
+
locations,
|
|
102
|
+
requestOptions
|
|
95
103
|
});
|
|
96
104
|
utilities.verifyLocations(locations);
|
|
97
105
|
const loc = locations;
|
|
98
|
-
const requestOptions = Object.assign({}, options, {
|
|
99
|
-
isAuthenticated: apiOptions.writeAuthenticated
|
|
100
|
-
});
|
|
101
106
|
const created = utilities.validatePK(await utilities.processOne(api.httpPost(utilities.getPath(loc), item, requestOptions)));
|
|
102
107
|
return created;
|
|
103
108
|
};
|
|
104
109
|
return create;
|
|
105
110
|
};
|
|
106
111
|
|
|
107
|
-
const logger$
|
|
112
|
+
const logger$a = LibLogger.get('client-api', 'ops', 'update');
|
|
108
113
|
const getUpdateOperation = (api, apiOptions, utilities)=>{
|
|
109
|
-
const update = async (ik, item
|
|
110
|
-
|
|
111
|
-
ik,
|
|
112
|
-
item
|
|
113
|
-
});
|
|
114
|
-
const requestOptions = Object.assign({}, options, {
|
|
114
|
+
const update = async (ik, item)=>{
|
|
115
|
+
const requestOptions = Object.assign({}, apiOptions.putOptions, {
|
|
115
116
|
isAuthenticated: apiOptions.writeAuthenticated
|
|
116
117
|
});
|
|
118
|
+
logger$a.default('update', {
|
|
119
|
+
ik,
|
|
120
|
+
item,
|
|
121
|
+
requestOptions
|
|
122
|
+
});
|
|
117
123
|
return utilities.validatePK(await utilities.processOne(api.httpPut(utilities.getPath(ik), item, requestOptions)));
|
|
118
124
|
};
|
|
119
125
|
return update;
|
|
120
126
|
};
|
|
121
127
|
|
|
122
|
-
const logger$
|
|
128
|
+
const logger$9 = LibLogger.get('client-api', 'ops', 'get');
|
|
123
129
|
const getGetOperation = (api, apiOptions, utilities)=>{
|
|
124
|
-
const get = async (ik
|
|
125
|
-
|
|
126
|
-
ik
|
|
127
|
-
});
|
|
128
|
-
const requestOptions = Object.assign({}, options, {
|
|
130
|
+
const get = async (ik)=>{
|
|
131
|
+
const requestOptions = Object.assign({}, apiOptions.getOptions, {
|
|
129
132
|
isAuthenticated: apiOptions.readAuthenticated
|
|
130
133
|
});
|
|
134
|
+
logger$9.default('get', {
|
|
135
|
+
ik,
|
|
136
|
+
requestOptions
|
|
137
|
+
});
|
|
131
138
|
return utilities.validatePK(await utilities.processOne(api.httpGet(utilities.getPath(ik), requestOptions)));
|
|
132
139
|
};
|
|
133
140
|
return get;
|
|
134
141
|
};
|
|
135
142
|
|
|
136
|
-
const logger$
|
|
143
|
+
const logger$8 = LibLogger.get('client-api', 'ops', 'remove');
|
|
137
144
|
const getRemoveOperation = (api, apiOptions, utilities)=>{
|
|
138
|
-
const remove = async (ik
|
|
139
|
-
|
|
140
|
-
ik
|
|
141
|
-
});
|
|
142
|
-
const requestOptions = Object.assign({}, options, {
|
|
145
|
+
const remove = async (ik)=>{
|
|
146
|
+
const requestOptions = Object.assign({}, apiOptions.deleteOptions, {
|
|
143
147
|
isAuthenticated: apiOptions.writeAuthenticated
|
|
144
148
|
});
|
|
149
|
+
logger$8.default('remove', {
|
|
150
|
+
ik,
|
|
151
|
+
requestOptions
|
|
152
|
+
});
|
|
145
153
|
return api.httpDelete(utilities.getPath(ik), requestOptions);
|
|
146
154
|
};
|
|
147
155
|
return remove;
|
|
148
156
|
};
|
|
149
157
|
|
|
150
|
-
const logger$
|
|
158
|
+
const logger$7 = LibLogger.get('client-api', 'ops', 'find');
|
|
151
159
|
const getFindOperation = (api, apiOptions, utilities)=>{
|
|
152
|
-
const find = async (finder, finderParams
|
|
153
|
-
|
|
160
|
+
const find = async (finder, finderParams = {}, locations = [])=>{
|
|
161
|
+
utilities.verifyLocations(locations);
|
|
162
|
+
const loc = locations;
|
|
163
|
+
const mergedParams = finderToParams(finder, finderParams);
|
|
164
|
+
const requestOptions = Object.assign({}, apiOptions.getOptions, {
|
|
165
|
+
isAuthenticated: apiOptions.allAuthenticated,
|
|
166
|
+
params: mergedParams
|
|
167
|
+
});
|
|
168
|
+
logger$7.default('find', {
|
|
154
169
|
finder,
|
|
155
170
|
finderParams,
|
|
156
|
-
locations
|
|
171
|
+
locations,
|
|
172
|
+
requestOptions
|
|
157
173
|
});
|
|
174
|
+
return utilities.validatePK(await utilities.processArray(api.httpGet(utilities.getPath(loc), requestOptions)));
|
|
175
|
+
};
|
|
176
|
+
return find;
|
|
177
|
+
};
|
|
178
|
+
|
|
179
|
+
const logger$6 = LibLogger.get('client-api', 'ops', 'find');
|
|
180
|
+
const getFindOneOperation = (api, apiOptions, utilities)=>{
|
|
181
|
+
const findOne = async (finder, finderParams = {}, locations = [])=>{
|
|
158
182
|
utilities.verifyLocations(locations);
|
|
159
183
|
const loc = locations;
|
|
160
184
|
const params = finderToParams(finder, finderParams);
|
|
161
|
-
|
|
185
|
+
params.one = true;
|
|
186
|
+
const requestOptions = Object.assign({}, apiOptions.getOptions, {
|
|
162
187
|
isAuthenticated: apiOptions.allAuthenticated,
|
|
163
188
|
params
|
|
164
189
|
});
|
|
165
|
-
|
|
190
|
+
logger$6.default('findOne', {
|
|
191
|
+
finder,
|
|
192
|
+
finderParams,
|
|
193
|
+
locations,
|
|
194
|
+
requestOptions
|
|
195
|
+
});
|
|
196
|
+
return utilities.validatePK(await utilities.processArray(api.httpGet(utilities.getPath(loc), requestOptions)))[0];
|
|
166
197
|
};
|
|
167
|
-
return
|
|
198
|
+
return findOne;
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
const logger$5 = LibLogger.get('client-api', 'ops', 'facet');
|
|
202
|
+
const getFacetOperation = (api, apiOptions, utilities)=>{
|
|
203
|
+
/**
|
|
204
|
+
* Executes a facet operation on an item.
|
|
205
|
+
*
|
|
206
|
+
* A facet is a piece of information that is related to an item - it represents
|
|
207
|
+
* a specific aspect or characteristic of the item. Unlike actions which may
|
|
208
|
+
* return items or perform operations, facets are informational queries that
|
|
209
|
+
* return data about a particular facet of an item.
|
|
210
|
+
*
|
|
211
|
+
* @param ik - The item key (composite or primary key) identifying the item
|
|
212
|
+
* @param facet - The name of the facet to query
|
|
213
|
+
* @param body - Optional request body for the facet operation
|
|
214
|
+
* @param options - Optional HTTP request options
|
|
215
|
+
* @returns Promise resolving to the facet data
|
|
216
|
+
*/ const facet = async (ik, facet, params = {})=>{
|
|
217
|
+
const requestOptions = Object.assign({}, apiOptions.getOptions, {
|
|
218
|
+
isAuthenticated: apiOptions.writeAuthenticated,
|
|
219
|
+
params
|
|
220
|
+
});
|
|
221
|
+
logger$5.default('facet', {
|
|
222
|
+
ik,
|
|
223
|
+
facet,
|
|
224
|
+
requestOptions
|
|
225
|
+
});
|
|
226
|
+
return api.httpGet(`${utilities.getPath(ik)}/${facet}`, requestOptions);
|
|
227
|
+
};
|
|
228
|
+
return facet;
|
|
229
|
+
};
|
|
230
|
+
|
|
231
|
+
const logger$4 = LibLogger.get('client-api', 'ops', 'allFacet');
|
|
232
|
+
const getAllFacetOperation = (api, apiOptions, utilities)=>{
|
|
233
|
+
const allFacet = async (facet, params = {}, locations = [])=>{
|
|
234
|
+
const requestOptions = Object.assign({}, apiOptions.getOptions, {
|
|
235
|
+
isAuthenticated: apiOptions.writeAuthenticated,
|
|
236
|
+
params
|
|
237
|
+
});
|
|
238
|
+
logger$4.default('allFacet', {
|
|
239
|
+
facet,
|
|
240
|
+
locations,
|
|
241
|
+
requestOptions
|
|
242
|
+
});
|
|
243
|
+
utilities.verifyLocations(locations);
|
|
244
|
+
const loc = locations;
|
|
245
|
+
// TODO: This should respond to either a single object, or multiple objects in an array.
|
|
246
|
+
return api.httpGet(utilities.getPath(loc), requestOptions);
|
|
247
|
+
};
|
|
248
|
+
return allFacet;
|
|
168
249
|
};
|
|
169
250
|
|
|
170
251
|
const getOperations = (api, apiOptions, utilities)=>{
|
|
@@ -172,7 +253,10 @@ const getOperations = (api, apiOptions, utilities)=>{
|
|
|
172
253
|
action: getActionOperation(api, apiOptions, utilities),
|
|
173
254
|
all: getAllOperation(api, apiOptions, utilities),
|
|
174
255
|
allAction: getAllActionOperation(api, apiOptions, utilities),
|
|
256
|
+
allFacet: getAllFacetOperation(api, apiOptions, utilities),
|
|
175
257
|
create: getCreateOperation(api, apiOptions, utilities),
|
|
258
|
+
facet: getFacetOperation(api, apiOptions, utilities),
|
|
259
|
+
findOne: getFindOneOperation(api, apiOptions, utilities),
|
|
176
260
|
find: getFindOperation(api, apiOptions, utilities),
|
|
177
261
|
get: getGetOperation(api, apiOptions, utilities),
|
|
178
262
|
one: getOneOperation(api, apiOptions, utilities),
|
|
@@ -345,7 +429,11 @@ const createAItemAPI = (api, pkType, pathNames, options)=>{
|
|
|
345
429
|
const defaultOptions = {
|
|
346
430
|
readAuthenticated: true,
|
|
347
431
|
allAuthenticated: true,
|
|
348
|
-
writeAuthenticated: true
|
|
432
|
+
writeAuthenticated: true,
|
|
433
|
+
getOptions: {},
|
|
434
|
+
postOptions: {},
|
|
435
|
+
putOptions: {},
|
|
436
|
+
deleteOptions: {}
|
|
349
437
|
};
|
|
350
438
|
if (options) {
|
|
351
439
|
mergedOptions = Object.assign({}, defaultOptions, options);
|
|
@@ -358,8 +446,11 @@ const createAItemAPI = (api, pkType, pathNames, options)=>{
|
|
|
358
446
|
action: operations.action,
|
|
359
447
|
all: operations.all,
|
|
360
448
|
allAction: operations.allAction,
|
|
449
|
+
allFacet: operations.allFacet,
|
|
361
450
|
create: operations.create,
|
|
451
|
+
facet: operations.facet,
|
|
362
452
|
find: operations.find,
|
|
453
|
+
findOne: operations.findOne,
|
|
363
454
|
get: operations.get,
|
|
364
455
|
one: operations.one,
|
|
365
456
|
remove: operations.remove,
|
|
@@ -380,12 +471,15 @@ const createCItemApi = (api, type, pathNames, options)=>{
|
|
|
380
471
|
action: aItemAPI.action,
|
|
381
472
|
all: aItemAPI.all,
|
|
382
473
|
allAction: aItemAPI.allAction,
|
|
474
|
+
allFacet: aItemAPI.allFacet,
|
|
383
475
|
one: aItemAPI.one,
|
|
384
476
|
get: aItemAPI.get,
|
|
385
477
|
create: aItemAPI.create,
|
|
386
478
|
remove: aItemAPI.remove,
|
|
387
479
|
update: aItemAPI.update,
|
|
388
|
-
|
|
480
|
+
facet: aItemAPI.facet,
|
|
481
|
+
find: aItemAPI.find,
|
|
482
|
+
findOne: aItemAPI.findOne
|
|
389
483
|
};
|
|
390
484
|
};
|
|
391
485
|
|
|
@@ -399,26 +493,32 @@ const createPItemApi = (api, type, pathName, options)=>{
|
|
|
399
493
|
const aItemAPI = createAItemAPI(api, type, [
|
|
400
494
|
pathName
|
|
401
495
|
], options);
|
|
402
|
-
const action = async (ik, action, body = {}
|
|
403
|
-
const all = async (query = {}
|
|
404
|
-
const allAction = async (action, body = {}
|
|
405
|
-
const
|
|
406
|
-
const
|
|
407
|
-
const
|
|
408
|
-
const
|
|
409
|
-
const
|
|
410
|
-
const
|
|
496
|
+
const action = async (ik, action, body = {})=>await aItemAPI.action(ik, action, body);
|
|
497
|
+
const all = async (query = {})=>await aItemAPI.all(query, []);
|
|
498
|
+
const allAction = async (action, body = {})=>await aItemAPI.allAction(action, body, []);
|
|
499
|
+
const allFacet = async (facet, params = {})=>await aItemAPI.allFacet(facet, params);
|
|
500
|
+
const one = async (query = {})=>await aItemAPI.one(query, []);
|
|
501
|
+
const get = async (ik)=>await aItemAPI.get(ik);
|
|
502
|
+
const create = async (item)=>await aItemAPI.create(item, []);
|
|
503
|
+
const remove = async (ik)=>await aItemAPI.remove(ik);
|
|
504
|
+
const update = async (ik, item)=>await aItemAPI.update(ik, item);
|
|
505
|
+
const facet = async (ik, facet, params = {})=>await aItemAPI.facet(ik, facet, params);
|
|
506
|
+
const find = async (finder, finderParams = {})=>await aItemAPI.find(finder, finderParams);
|
|
507
|
+
const findOne = async (finder, finderParams = {})=>await aItemAPI.findOne(finder, finderParams);
|
|
411
508
|
return {
|
|
412
509
|
...aItemAPI,
|
|
413
510
|
action,
|
|
414
511
|
all,
|
|
415
512
|
allAction,
|
|
513
|
+
allFacet,
|
|
416
514
|
one,
|
|
417
515
|
get,
|
|
418
516
|
create,
|
|
419
517
|
remove,
|
|
420
518
|
update,
|
|
421
|
-
|
|
519
|
+
facet,
|
|
520
|
+
find,
|
|
521
|
+
findOne
|
|
422
522
|
};
|
|
423
523
|
};
|
|
424
524
|
|