@akanjs/service 0.9.42 → 0.9.44
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/cjs/src/base.service.js +14 -6
- package/cjs/src/serviceDecorators.js +118 -130
- package/esm/src/base.service.js +14 -6
- package/esm/src/serviceDecorators.js +117 -127
- package/package.json +1 -1
- package/src/base.service.d.ts +11 -1
- package/src/serviceDecorators.d.ts +46 -81
package/cjs/src/base.service.js
CHANGED
|
@@ -30,13 +30,24 @@ __export(base_service_exports, {
|
|
|
30
30
|
allSrvs: () => allSrvs
|
|
31
31
|
});
|
|
32
32
|
module.exports = __toCommonJS(base_service_exports);
|
|
33
|
-
var
|
|
33
|
+
var import_dictionary = require("@akanjs/dictionary");
|
|
34
34
|
var import_serviceDecorators = require("./serviceDecorators");
|
|
35
35
|
let BaseService = class extends (0, import_serviceDecorators.LogService)("BaseService") {
|
|
36
36
|
onCleanup;
|
|
37
37
|
baseSignal;
|
|
38
|
-
|
|
39
|
-
this.baseSignal.pubsubPing(
|
|
38
|
+
publishPing() {
|
|
39
|
+
this.baseSignal.pubsubPing("ping");
|
|
40
|
+
}
|
|
41
|
+
l(lang, key) {
|
|
42
|
+
try {
|
|
43
|
+
const res = { lang, key, str: (0, import_dictionary.translate)(lang, key) };
|
|
44
|
+
return res;
|
|
45
|
+
} catch (e) {
|
|
46
|
+
return { lang, key, str: key };
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
getDictionary(lang) {
|
|
50
|
+
return (0, import_dictionary.getDictionary)(lang);
|
|
40
51
|
}
|
|
41
52
|
async cleanup() {
|
|
42
53
|
if (!this.onCleanup)
|
|
@@ -50,9 +61,6 @@ __decorateClass([
|
|
|
50
61
|
__decorateClass([
|
|
51
62
|
(0, import_serviceDecorators.Sig)()
|
|
52
63
|
], BaseService.prototype, "baseSignal", 2);
|
|
53
|
-
__decorateClass([
|
|
54
|
-
(0, import_nest.Interval)(5e3)
|
|
55
|
-
], BaseService.prototype, "intervalPing", 1);
|
|
56
64
|
BaseService = __decorateClass([
|
|
57
65
|
(0, import_serviceDecorators.Service)("BaseService")
|
|
58
66
|
], BaseService);
|
|
@@ -29,9 +29,6 @@ __export(serviceDecorators_exports, {
|
|
|
29
29
|
Db: () => Db,
|
|
30
30
|
DbService: () => DbService,
|
|
31
31
|
Env: () => Env,
|
|
32
|
-
ExtendedSettingService: () => ExtendedSettingService,
|
|
33
|
-
ExtendedSummaryService: () => ExtendedSummaryService,
|
|
34
|
-
ExtendedUserService: () => ExtendedUserService,
|
|
35
32
|
Gen: () => Gen,
|
|
36
33
|
LogService: () => LogService,
|
|
37
34
|
MixSrvs: () => MixSrvs,
|
|
@@ -40,6 +37,7 @@ __export(serviceDecorators_exports, {
|
|
|
40
37
|
Sig: () => Sig,
|
|
41
38
|
Srv: () => Srv,
|
|
42
39
|
Use: () => Use,
|
|
40
|
+
getAllServiceRefs: () => getAllServiceRefs,
|
|
43
41
|
getServiceMeta: () => getServiceMeta,
|
|
44
42
|
getServiceRefs: () => getServiceRefs,
|
|
45
43
|
isServiceEnabled: () => isServiceEnabled,
|
|
@@ -57,6 +55,10 @@ class ServiceStorage {
|
|
|
57
55
|
const getServiceRefs = (refName) => {
|
|
58
56
|
return Reflect.getMetadata(refName, ServiceStorage.prototype) ?? [];
|
|
59
57
|
};
|
|
58
|
+
const getAllServiceRefs = () => {
|
|
59
|
+
const keys = Reflect.getMetadataKeys(ServiceStorage.prototype);
|
|
60
|
+
return keys.map((key) => getServiceRefs(key)[0]);
|
|
61
|
+
};
|
|
60
62
|
const setServiceRefs = (refName, services) => {
|
|
61
63
|
Reflect.defineMetadata(refName, services, ServiceStorage.prototype);
|
|
62
64
|
};
|
|
@@ -157,14 +159,16 @@ const serviceOf = (target) => {
|
|
|
157
159
|
(0, import_common2.Injectable)()(srvRef);
|
|
158
160
|
return srvRef;
|
|
159
161
|
};
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
162
|
+
function MixSrvs(...services) {
|
|
163
|
+
if (services.length === 0)
|
|
164
|
+
throw new Error("MixSrvs requires at least one service");
|
|
165
|
+
const [baseService, ...restServices] = services;
|
|
166
|
+
class Mix extends baseService {
|
|
163
167
|
}
|
|
164
168
|
const injectMetadataMap = new Map(
|
|
165
|
-
|
|
169
|
+
restServices.reduce((acc, srvRef) => {
|
|
166
170
|
const injectMetadataMap2 = getServiceInjectMetaMapOnPrototype(srvRef);
|
|
167
|
-
(0, import_common.applyMixins)(Mix, [srvRef]
|
|
171
|
+
(0, import_common.applyMixins)(Mix, [srvRef]);
|
|
168
172
|
return [...acc, ...injectMetadataMap2];
|
|
169
173
|
}, [])
|
|
170
174
|
);
|
|
@@ -187,102 +191,112 @@ const LogService = (name) => {
|
|
|
187
191
|
}
|
|
188
192
|
return LogService2;
|
|
189
193
|
};
|
|
190
|
-
const DbService = (database,
|
|
194
|
+
const DbService = (database, ...libSrvRefs) => {
|
|
191
195
|
const [modelName, className] = [database.refName, (0, import_common.capitalize)(database.refName)];
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
196
|
+
const getDefaultDbService = () => {
|
|
197
|
+
class DbService3 {
|
|
198
|
+
logger = new import_common.Logger(`${(0, import_common.capitalize)(modelName)}Service`);
|
|
199
|
+
__databaseModel;
|
|
200
|
+
async __list(query, queryOption) {
|
|
201
|
+
return await this.__databaseModel.__list(query, queryOption);
|
|
202
|
+
}
|
|
203
|
+
async __listIds(query, queryOption) {
|
|
204
|
+
return await this.__databaseModel.__listIds(query, queryOption);
|
|
205
|
+
}
|
|
206
|
+
async __find(query, queryOption) {
|
|
207
|
+
return await this.__databaseModel.__find(query, queryOption);
|
|
208
|
+
}
|
|
209
|
+
async __findId(query, queryOption) {
|
|
210
|
+
return await this.__databaseModel.__findId(query, queryOption);
|
|
211
|
+
}
|
|
212
|
+
async __pick(query, queryOption) {
|
|
213
|
+
return await this.__databaseModel.__pick(query, queryOption);
|
|
214
|
+
}
|
|
215
|
+
async __pickId(query, queryOption) {
|
|
216
|
+
return await this.__databaseModel.__pickId(query, queryOption);
|
|
217
|
+
}
|
|
218
|
+
async __exists(query) {
|
|
219
|
+
return await this.__databaseModel.__exists(query);
|
|
220
|
+
}
|
|
221
|
+
async __count(query) {
|
|
222
|
+
return await this.__databaseModel.__count(query);
|
|
223
|
+
}
|
|
224
|
+
async __insight(query) {
|
|
225
|
+
return await this.__databaseModel.__insight(query);
|
|
226
|
+
}
|
|
227
|
+
async __search(searchText, queryOption) {
|
|
228
|
+
return await this.__databaseModel[`search${className}`](searchText, queryOption);
|
|
229
|
+
}
|
|
230
|
+
async __searchDocs(searchText, queryOption) {
|
|
231
|
+
return await this.__databaseModel[`searchDocs${className}`](searchText, queryOption);
|
|
232
|
+
}
|
|
233
|
+
async __searchCount(searchText) {
|
|
234
|
+
return await this.__databaseModel[`searchCount${className}`](searchText);
|
|
235
|
+
}
|
|
236
|
+
async _preCreate(data) {
|
|
237
|
+
return data;
|
|
238
|
+
}
|
|
239
|
+
async _postCreate(doc) {
|
|
240
|
+
return doc;
|
|
241
|
+
}
|
|
242
|
+
async _preUpdate(id, data) {
|
|
243
|
+
return data;
|
|
244
|
+
}
|
|
245
|
+
async _postUpdate(doc) {
|
|
246
|
+
return doc;
|
|
247
|
+
}
|
|
248
|
+
async _preRemove(id) {
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
async _postRemove(doc) {
|
|
252
|
+
return doc;
|
|
253
|
+
}
|
|
254
|
+
listenPre(type, listener) {
|
|
255
|
+
return this.__databaseModel.listenPre(type, listener);
|
|
256
|
+
}
|
|
257
|
+
listenPost(type, listener) {
|
|
258
|
+
return this.__databaseModel.listenPost(type, listener);
|
|
259
|
+
}
|
|
260
|
+
async [`get${className}`](id) {
|
|
261
|
+
return await this.__databaseModel[`get${className}`](id);
|
|
262
|
+
}
|
|
263
|
+
async [`load${className}`](id) {
|
|
264
|
+
return await this.__databaseModel[`load${className}`](id);
|
|
265
|
+
}
|
|
266
|
+
async [`load${className}Many`](ids) {
|
|
267
|
+
return await this.__databaseModel[`load${className}Many`](ids);
|
|
268
|
+
}
|
|
269
|
+
async [`create${className}`](data) {
|
|
270
|
+
const input = await this._preCreate(data);
|
|
271
|
+
const doc = await this.__databaseModel[`create${className}`](input);
|
|
272
|
+
return await this._postCreate(doc);
|
|
273
|
+
}
|
|
274
|
+
async [`update${className}`](id, data) {
|
|
275
|
+
const input = await this._preUpdate(id, data);
|
|
276
|
+
const doc = await this.__databaseModel[`update${className}`](id, input);
|
|
277
|
+
return await this._postUpdate(doc);
|
|
278
|
+
}
|
|
279
|
+
async [`remove${className}`](id) {
|
|
280
|
+
await this._preRemove(id);
|
|
281
|
+
const doc = await this.__databaseModel[`remove${className}`](id);
|
|
282
|
+
return await this._postRemove(doc);
|
|
283
|
+
}
|
|
284
|
+
async [`search${className}`](query, queryOption) {
|
|
285
|
+
return await this.__databaseModel[`search${className}`](query, queryOption);
|
|
286
|
+
}
|
|
287
|
+
async [`searchDocs${className}`](query, queryOption) {
|
|
288
|
+
return await this.__databaseModel[`searchDocs${className}`](query, queryOption);
|
|
289
|
+
}
|
|
290
|
+
async [`searchCount${className}`](query) {
|
|
291
|
+
return await this.__databaseModel[`searchCount${className}`](query);
|
|
292
|
+
}
|
|
267
293
|
}
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
return await this.__databaseModel[`search${className}`](query, queryOption);
|
|
275
|
-
}
|
|
276
|
-
async [`searchDocs${className}`](query, queryOption) {
|
|
277
|
-
return await this.__databaseModel[`searchDocs${className}`](query, queryOption);
|
|
278
|
-
}
|
|
279
|
-
async [`searchCount${className}`](query) {
|
|
280
|
-
return await this.__databaseModel[`searchCount${className}`](query);
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
__decorateClass([
|
|
284
|
-
Use(`${modelName}Model`)
|
|
285
|
-
], DbService2.prototype, "__databaseModel", 2);
|
|
294
|
+
__decorateClass([
|
|
295
|
+
Use(`${modelName}Model`)
|
|
296
|
+
], DbService3.prototype, "__databaseModel", 2);
|
|
297
|
+
Use(`${modelName}Model`)(DbService3.prototype, `${modelName}Model`);
|
|
298
|
+
return DbService3;
|
|
299
|
+
};
|
|
286
300
|
const getQueryDataFromKey = (queryKey, args) => {
|
|
287
301
|
const lastArg = args.at(-1);
|
|
288
302
|
const hasQueryOption = lastArg && typeof lastArg === "object" && (typeof lastArg.select === "object" || typeof lastArg.skip === "number" || typeof lastArg.limit === "number" || typeof lastArg.sort === "string");
|
|
@@ -291,6 +305,7 @@ const DbService = (database, sigRef) => {
|
|
|
291
305
|
const queryOption = hasQueryOption ? lastArg : {};
|
|
292
306
|
return { query, queryOption };
|
|
293
307
|
};
|
|
308
|
+
const DbService2 = libSrvRefs.length > 0 ? MixSrvs(...libSrvRefs) : getDefaultDbService();
|
|
294
309
|
const filterKeyMetaMap = (0, import_constant.getFilterKeyMetaMapOnPrototype)(database.Filter.prototype);
|
|
295
310
|
const queryKeys = [...filterKeyMetaMap.keys()];
|
|
296
311
|
queryKeys.forEach((queryKey) => {
|
|
@@ -332,33 +347,8 @@ const DbService = (database, sigRef) => {
|
|
|
332
347
|
return this.__insight(query);
|
|
333
348
|
};
|
|
334
349
|
});
|
|
335
|
-
Use(`${modelName}Model`)(DbService2.prototype, `${modelName}Model`);
|
|
336
350
|
return DbService2;
|
|
337
351
|
};
|
|
338
|
-
const ExtendedUserService = (database, srvRef, sigRef) => {
|
|
339
|
-
const filterKeyMetaMap = (0, import_constant.getFilterKeyMetaMapOnPrototype)(database.Filter.prototype);
|
|
340
|
-
const queryKeys = [...filterKeyMetaMap.keys()];
|
|
341
|
-
queryKeys.forEach((queryKey) => {
|
|
342
|
-
const queryFn = (0, import_constant.getFilterQuery)(database.Filter, queryKey);
|
|
343
|
-
srvRef.prototype[`list${(0, import_common.capitalize)(queryKey)}`] = async function(...args) {
|
|
344
|
-
const queryOption = args.at(-1);
|
|
345
|
-
const hasQueryOption = typeof queryOption === "object" && (typeof queryOption.select === "object" || typeof queryOption.skip === "number" || typeof queryOption.limit === "number" || typeof queryOption.sort === "string");
|
|
346
|
-
const query = queryFn(...hasQueryOption ? args.slice(0, -1) : args);
|
|
347
|
-
return this.__list(query, queryOption);
|
|
348
|
-
};
|
|
349
|
-
srvRef.prototype[`insight${(0, import_common.capitalize)(queryKey)}`] = async function(...args) {
|
|
350
|
-
const query = queryFn(...args);
|
|
351
|
-
return this.__insight(query);
|
|
352
|
-
};
|
|
353
|
-
});
|
|
354
|
-
return srvRef;
|
|
355
|
-
};
|
|
356
|
-
const ExtendedSummaryService = (database, srvRef, sigRef) => {
|
|
357
|
-
return srvRef;
|
|
358
|
-
};
|
|
359
|
-
const ExtendedSettingService = (database, srvRef, sigRef) => {
|
|
360
|
-
return srvRef;
|
|
361
|
-
};
|
|
362
352
|
const makeProvidersForSrv = (srvRef) => {
|
|
363
353
|
const injectMetaMap = getServiceInjectMetaMapOnPrototype(srvRef.prototype);
|
|
364
354
|
const providers = [];
|
|
@@ -387,9 +377,6 @@ const makeProvidersForSrv = (srvRef) => {
|
|
|
387
377
|
Db,
|
|
388
378
|
DbService,
|
|
389
379
|
Env,
|
|
390
|
-
ExtendedSettingService,
|
|
391
|
-
ExtendedSummaryService,
|
|
392
|
-
ExtendedUserService,
|
|
393
380
|
Gen,
|
|
394
381
|
LogService,
|
|
395
382
|
MixSrvs,
|
|
@@ -398,6 +385,7 @@ const makeProvidersForSrv = (srvRef) => {
|
|
|
398
385
|
Sig,
|
|
399
386
|
Srv,
|
|
400
387
|
Use,
|
|
388
|
+
getAllServiceRefs,
|
|
401
389
|
getServiceMeta,
|
|
402
390
|
getServiceRefs,
|
|
403
391
|
isServiceEnabled,
|
package/esm/src/base.service.js
CHANGED
|
@@ -9,13 +9,24 @@ var __decorateClass = (decorators, target, key, kind) => {
|
|
|
9
9
|
__defProp(target, key, result);
|
|
10
10
|
return result;
|
|
11
11
|
};
|
|
12
|
-
import {
|
|
12
|
+
import { getDictionary, translate } from "@akanjs/dictionary";
|
|
13
13
|
import { Gen, LogService, Service, Sig } from "./serviceDecorators";
|
|
14
14
|
let BaseService = class extends LogService("BaseService") {
|
|
15
15
|
onCleanup;
|
|
16
16
|
baseSignal;
|
|
17
|
-
|
|
18
|
-
this.baseSignal.pubsubPing(
|
|
17
|
+
publishPing() {
|
|
18
|
+
this.baseSignal.pubsubPing("ping");
|
|
19
|
+
}
|
|
20
|
+
l(lang, key) {
|
|
21
|
+
try {
|
|
22
|
+
const res = { lang, key, str: translate(lang, key) };
|
|
23
|
+
return res;
|
|
24
|
+
} catch (e) {
|
|
25
|
+
return { lang, key, str: key };
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
getDictionary(lang) {
|
|
29
|
+
return getDictionary(lang);
|
|
19
30
|
}
|
|
20
31
|
async cleanup() {
|
|
21
32
|
if (!this.onCleanup)
|
|
@@ -29,9 +40,6 @@ __decorateClass([
|
|
|
29
40
|
__decorateClass([
|
|
30
41
|
Sig()
|
|
31
42
|
], BaseService.prototype, "baseSignal", 2);
|
|
32
|
-
__decorateClass([
|
|
33
|
-
Interval(5e3)
|
|
34
|
-
], BaseService.prototype, "intervalPing", 1);
|
|
35
43
|
BaseService = __decorateClass([
|
|
36
44
|
Service("BaseService")
|
|
37
45
|
], BaseService);
|
|
@@ -22,6 +22,10 @@ class ServiceStorage {
|
|
|
22
22
|
const getServiceRefs = (refName) => {
|
|
23
23
|
return Reflect.getMetadata(refName, ServiceStorage.prototype) ?? [];
|
|
24
24
|
};
|
|
25
|
+
const getAllServiceRefs = () => {
|
|
26
|
+
const keys = Reflect.getMetadataKeys(ServiceStorage.prototype);
|
|
27
|
+
return keys.map((key) => getServiceRefs(key)[0]);
|
|
28
|
+
};
|
|
25
29
|
const setServiceRefs = (refName, services) => {
|
|
26
30
|
Reflect.defineMetadata(refName, services, ServiceStorage.prototype);
|
|
27
31
|
};
|
|
@@ -122,14 +126,16 @@ const serviceOf = (target) => {
|
|
|
122
126
|
Injectable()(srvRef);
|
|
123
127
|
return srvRef;
|
|
124
128
|
};
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
129
|
+
function MixSrvs(...services) {
|
|
130
|
+
if (services.length === 0)
|
|
131
|
+
throw new Error("MixSrvs requires at least one service");
|
|
132
|
+
const [baseService, ...restServices] = services;
|
|
133
|
+
class Mix extends baseService {
|
|
128
134
|
}
|
|
129
135
|
const injectMetadataMap = new Map(
|
|
130
|
-
|
|
136
|
+
restServices.reduce((acc, srvRef) => {
|
|
131
137
|
const injectMetadataMap2 = getServiceInjectMetaMapOnPrototype(srvRef);
|
|
132
|
-
applyMixins(Mix, [srvRef]
|
|
138
|
+
applyMixins(Mix, [srvRef]);
|
|
133
139
|
return [...acc, ...injectMetadataMap2];
|
|
134
140
|
}, [])
|
|
135
141
|
);
|
|
@@ -152,102 +158,112 @@ const LogService = (name) => {
|
|
|
152
158
|
}
|
|
153
159
|
return LogService2;
|
|
154
160
|
};
|
|
155
|
-
const DbService = (database,
|
|
161
|
+
const DbService = (database, ...libSrvRefs) => {
|
|
156
162
|
const [modelName, className] = [database.refName, capitalize(database.refName)];
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
163
|
+
const getDefaultDbService = () => {
|
|
164
|
+
class DbService3 {
|
|
165
|
+
logger = new Logger(`${capitalize(modelName)}Service`);
|
|
166
|
+
__databaseModel;
|
|
167
|
+
async __list(query, queryOption) {
|
|
168
|
+
return await this.__databaseModel.__list(query, queryOption);
|
|
169
|
+
}
|
|
170
|
+
async __listIds(query, queryOption) {
|
|
171
|
+
return await this.__databaseModel.__listIds(query, queryOption);
|
|
172
|
+
}
|
|
173
|
+
async __find(query, queryOption) {
|
|
174
|
+
return await this.__databaseModel.__find(query, queryOption);
|
|
175
|
+
}
|
|
176
|
+
async __findId(query, queryOption) {
|
|
177
|
+
return await this.__databaseModel.__findId(query, queryOption);
|
|
178
|
+
}
|
|
179
|
+
async __pick(query, queryOption) {
|
|
180
|
+
return await this.__databaseModel.__pick(query, queryOption);
|
|
181
|
+
}
|
|
182
|
+
async __pickId(query, queryOption) {
|
|
183
|
+
return await this.__databaseModel.__pickId(query, queryOption);
|
|
184
|
+
}
|
|
185
|
+
async __exists(query) {
|
|
186
|
+
return await this.__databaseModel.__exists(query);
|
|
187
|
+
}
|
|
188
|
+
async __count(query) {
|
|
189
|
+
return await this.__databaseModel.__count(query);
|
|
190
|
+
}
|
|
191
|
+
async __insight(query) {
|
|
192
|
+
return await this.__databaseModel.__insight(query);
|
|
193
|
+
}
|
|
194
|
+
async __search(searchText, queryOption) {
|
|
195
|
+
return await this.__databaseModel[`search${className}`](searchText, queryOption);
|
|
196
|
+
}
|
|
197
|
+
async __searchDocs(searchText, queryOption) {
|
|
198
|
+
return await this.__databaseModel[`searchDocs${className}`](searchText, queryOption);
|
|
199
|
+
}
|
|
200
|
+
async __searchCount(searchText) {
|
|
201
|
+
return await this.__databaseModel[`searchCount${className}`](searchText);
|
|
202
|
+
}
|
|
203
|
+
async _preCreate(data) {
|
|
204
|
+
return data;
|
|
205
|
+
}
|
|
206
|
+
async _postCreate(doc) {
|
|
207
|
+
return doc;
|
|
208
|
+
}
|
|
209
|
+
async _preUpdate(id, data) {
|
|
210
|
+
return data;
|
|
211
|
+
}
|
|
212
|
+
async _postUpdate(doc) {
|
|
213
|
+
return doc;
|
|
214
|
+
}
|
|
215
|
+
async _preRemove(id) {
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
async _postRemove(doc) {
|
|
219
|
+
return doc;
|
|
220
|
+
}
|
|
221
|
+
listenPre(type, listener) {
|
|
222
|
+
return this.__databaseModel.listenPre(type, listener);
|
|
223
|
+
}
|
|
224
|
+
listenPost(type, listener) {
|
|
225
|
+
return this.__databaseModel.listenPost(type, listener);
|
|
226
|
+
}
|
|
227
|
+
async [`get${className}`](id) {
|
|
228
|
+
return await this.__databaseModel[`get${className}`](id);
|
|
229
|
+
}
|
|
230
|
+
async [`load${className}`](id) {
|
|
231
|
+
return await this.__databaseModel[`load${className}`](id);
|
|
232
|
+
}
|
|
233
|
+
async [`load${className}Many`](ids) {
|
|
234
|
+
return await this.__databaseModel[`load${className}Many`](ids);
|
|
235
|
+
}
|
|
236
|
+
async [`create${className}`](data) {
|
|
237
|
+
const input = await this._preCreate(data);
|
|
238
|
+
const doc = await this.__databaseModel[`create${className}`](input);
|
|
239
|
+
return await this._postCreate(doc);
|
|
240
|
+
}
|
|
241
|
+
async [`update${className}`](id, data) {
|
|
242
|
+
const input = await this._preUpdate(id, data);
|
|
243
|
+
const doc = await this.__databaseModel[`update${className}`](id, input);
|
|
244
|
+
return await this._postUpdate(doc);
|
|
245
|
+
}
|
|
246
|
+
async [`remove${className}`](id) {
|
|
247
|
+
await this._preRemove(id);
|
|
248
|
+
const doc = await this.__databaseModel[`remove${className}`](id);
|
|
249
|
+
return await this._postRemove(doc);
|
|
250
|
+
}
|
|
251
|
+
async [`search${className}`](query, queryOption) {
|
|
252
|
+
return await this.__databaseModel[`search${className}`](query, queryOption);
|
|
253
|
+
}
|
|
254
|
+
async [`searchDocs${className}`](query, queryOption) {
|
|
255
|
+
return await this.__databaseModel[`searchDocs${className}`](query, queryOption);
|
|
256
|
+
}
|
|
257
|
+
async [`searchCount${className}`](query) {
|
|
258
|
+
return await this.__databaseModel[`searchCount${className}`](query);
|
|
259
|
+
}
|
|
232
260
|
}
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
return await this.__databaseModel[`search${className}`](query, queryOption);
|
|
240
|
-
}
|
|
241
|
-
async [`searchDocs${className}`](query, queryOption) {
|
|
242
|
-
return await this.__databaseModel[`searchDocs${className}`](query, queryOption);
|
|
243
|
-
}
|
|
244
|
-
async [`searchCount${className}`](query) {
|
|
245
|
-
return await this.__databaseModel[`searchCount${className}`](query);
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
__decorateClass([
|
|
249
|
-
Use(`${modelName}Model`)
|
|
250
|
-
], DbService2.prototype, "__databaseModel", 2);
|
|
261
|
+
__decorateClass([
|
|
262
|
+
Use(`${modelName}Model`)
|
|
263
|
+
], DbService3.prototype, "__databaseModel", 2);
|
|
264
|
+
Use(`${modelName}Model`)(DbService3.prototype, `${modelName}Model`);
|
|
265
|
+
return DbService3;
|
|
266
|
+
};
|
|
251
267
|
const getQueryDataFromKey = (queryKey, args) => {
|
|
252
268
|
const lastArg = args.at(-1);
|
|
253
269
|
const hasQueryOption = lastArg && typeof lastArg === "object" && (typeof lastArg.select === "object" || typeof lastArg.skip === "number" || typeof lastArg.limit === "number" || typeof lastArg.sort === "string");
|
|
@@ -256,6 +272,7 @@ const DbService = (database, sigRef) => {
|
|
|
256
272
|
const queryOption = hasQueryOption ? lastArg : {};
|
|
257
273
|
return { query, queryOption };
|
|
258
274
|
};
|
|
275
|
+
const DbService2 = libSrvRefs.length > 0 ? MixSrvs(...libSrvRefs) : getDefaultDbService();
|
|
259
276
|
const filterKeyMetaMap = getFilterKeyMetaMapOnPrototype(database.Filter.prototype);
|
|
260
277
|
const queryKeys = [...filterKeyMetaMap.keys()];
|
|
261
278
|
queryKeys.forEach((queryKey) => {
|
|
@@ -297,33 +314,8 @@ const DbService = (database, sigRef) => {
|
|
|
297
314
|
return this.__insight(query);
|
|
298
315
|
};
|
|
299
316
|
});
|
|
300
|
-
Use(`${modelName}Model`)(DbService2.prototype, `${modelName}Model`);
|
|
301
317
|
return DbService2;
|
|
302
318
|
};
|
|
303
|
-
const ExtendedUserService = (database, srvRef, sigRef) => {
|
|
304
|
-
const filterKeyMetaMap = getFilterKeyMetaMapOnPrototype(database.Filter.prototype);
|
|
305
|
-
const queryKeys = [...filterKeyMetaMap.keys()];
|
|
306
|
-
queryKeys.forEach((queryKey) => {
|
|
307
|
-
const queryFn = getFilterQuery(database.Filter, queryKey);
|
|
308
|
-
srvRef.prototype[`list${capitalize(queryKey)}`] = async function(...args) {
|
|
309
|
-
const queryOption = args.at(-1);
|
|
310
|
-
const hasQueryOption = typeof queryOption === "object" && (typeof queryOption.select === "object" || typeof queryOption.skip === "number" || typeof queryOption.limit === "number" || typeof queryOption.sort === "string");
|
|
311
|
-
const query = queryFn(...hasQueryOption ? args.slice(0, -1) : args);
|
|
312
|
-
return this.__list(query, queryOption);
|
|
313
|
-
};
|
|
314
|
-
srvRef.prototype[`insight${capitalize(queryKey)}`] = async function(...args) {
|
|
315
|
-
const query = queryFn(...args);
|
|
316
|
-
return this.__insight(query);
|
|
317
|
-
};
|
|
318
|
-
});
|
|
319
|
-
return srvRef;
|
|
320
|
-
};
|
|
321
|
-
const ExtendedSummaryService = (database, srvRef, sigRef) => {
|
|
322
|
-
return srvRef;
|
|
323
|
-
};
|
|
324
|
-
const ExtendedSettingService = (database, srvRef, sigRef) => {
|
|
325
|
-
return srvRef;
|
|
326
|
-
};
|
|
327
319
|
const makeProvidersForSrv = (srvRef) => {
|
|
328
320
|
const injectMetaMap = getServiceInjectMetaMapOnPrototype(srvRef.prototype);
|
|
329
321
|
const providers = [];
|
|
@@ -351,9 +343,6 @@ export {
|
|
|
351
343
|
Db,
|
|
352
344
|
DbService,
|
|
353
345
|
Env,
|
|
354
|
-
ExtendedSettingService,
|
|
355
|
-
ExtendedSummaryService,
|
|
356
|
-
ExtendedUserService,
|
|
357
346
|
Gen,
|
|
358
347
|
LogService,
|
|
359
348
|
MixSrvs,
|
|
@@ -362,6 +351,7 @@ export {
|
|
|
362
351
|
Sig,
|
|
363
352
|
Srv,
|
|
364
353
|
Use,
|
|
354
|
+
getAllServiceRefs,
|
|
365
355
|
getServiceMeta,
|
|
366
356
|
getServiceRefs,
|
|
367
357
|
isServiceEnabled,
|
package/package.json
CHANGED
package/src/base.service.d.ts
CHANGED
|
@@ -8,7 +8,17 @@ declare const BaseService_base: {
|
|
|
8
8
|
export declare class BaseService extends BaseService_base {
|
|
9
9
|
onCleanup?: () => Promise<void>;
|
|
10
10
|
baseSignal: Sig<BaseSignal>;
|
|
11
|
-
|
|
11
|
+
publishPing(): void;
|
|
12
|
+
l(lang: string, key: string): {
|
|
13
|
+
lang: string;
|
|
14
|
+
key: string;
|
|
15
|
+
str: string;
|
|
16
|
+
};
|
|
17
|
+
getDictionary(lang: string): {
|
|
18
|
+
[key: string]: {
|
|
19
|
+
[key: string]: string;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
12
22
|
cleanup(): Promise<void>;
|
|
13
23
|
}
|
|
14
24
|
export declare const allSrvs: {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import "reflect-metadata";
|
|
2
|
-
import {
|
|
2
|
+
import type { GetActionObject, MergeAllTypes, Prettify, PromiseOrObject, Type, UnType } from "@akanjs/base";
|
|
3
3
|
import { Logger } from "@akanjs/common";
|
|
4
|
-
import { type DocumentModel, type FilterType, FindQueryOption,
|
|
5
|
-
import type { BaseMiddleware, Database, DatabaseModel, DataInputOf } from "@akanjs/document";
|
|
4
|
+
import { type DocumentModel, type FilterType, FindQueryOption, ListQueryOption, QueryOf, type SortOf } from "@akanjs/constant";
|
|
5
|
+
import type { BaseMiddleware, CRUDEventType, Database, DatabaseModel, DataInputOf, Doc as DbDoc, GetDocObject, QueryMethodPart, SaveEventType } from "@akanjs/document";
|
|
6
6
|
import { FilterOutInternalArgs } from "@akanjs/signal";
|
|
7
7
|
import { type Provider } from "@nestjs/common";
|
|
8
8
|
import type { Job, Queue as BullQueue } from "bull";
|
|
@@ -11,7 +11,7 @@ import type { Server } from "socket.io";
|
|
|
11
11
|
export type GetServices<AllSrvs extends {
|
|
12
12
|
[key: string]: Type | undefined;
|
|
13
13
|
}> = {
|
|
14
|
-
[
|
|
14
|
+
[K in keyof AllSrvs]: UnType<NonNullable<AllSrvs[K]>>;
|
|
15
15
|
};
|
|
16
16
|
export declare class ServiceStorage {
|
|
17
17
|
}
|
|
@@ -20,6 +20,7 @@ interface ServiceMeta {
|
|
|
20
20
|
enabled: boolean;
|
|
21
21
|
}
|
|
22
22
|
export declare const getServiceRefs: (refName: string) => Type[];
|
|
23
|
+
export declare const getAllServiceRefs: () => Type[];
|
|
23
24
|
export declare const getServiceMeta: (srvRef: Type) => ServiceMeta | undefined;
|
|
24
25
|
export declare const isServiceEnabled: (srvRef: Type) => boolean;
|
|
25
26
|
export interface ServiceInjectMeta {
|
|
@@ -37,117 +38,81 @@ export declare function Srv(name?: string): PropertyDecorator;
|
|
|
37
38
|
export declare function Use(name?: string): PropertyDecorator;
|
|
38
39
|
export declare function Env(envKey: string, generateFactory?: (envValue: string, options: any) => any): PropertyDecorator;
|
|
39
40
|
export declare function Gen(generateFactory: (options: any) => any): PropertyDecorator;
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
queue: BullQueue;
|
|
41
|
+
export declare function Sig(name?: string): PropertyDecorator;
|
|
42
|
+
type ServiceSignalReturnType = {
|
|
43
|
+
__Returns__: "Done";
|
|
44
|
+
} | {
|
|
45
|
+
__Returns__: "Subscribe";
|
|
46
46
|
};
|
|
47
|
-
type
|
|
48
|
-
[K in keyof Signal as K extends
|
|
49
|
-
__Returns__: "
|
|
50
|
-
}> ?
|
|
51
|
-
__Returns__: "Subscribe";
|
|
52
|
-
} ? K : never : never]: Signal[K] extends (...args: infer Args) => Promise<{
|
|
53
|
-
__Returns__: "Subscribe";
|
|
54
|
-
} & infer R> ? (...args: [...FilterOutInternalArgs<Args>, data: DocumentModel<R>]) => Promise<void> : Signal[K] extends (...args: infer Args) => {
|
|
47
|
+
export type Sig<Signal> = {
|
|
48
|
+
[K in keyof Signal as Signal[K] extends (...args: any) => PromiseOrObject<ServiceSignalReturnType> ? K : never]: Signal[K] extends (...args: infer Args) => PromiseOrObject<{
|
|
49
|
+
__Returns__: "Done";
|
|
50
|
+
}> ? (...args: FilterOutInternalArgs<Args>) => Promise<Job> : Signal[K] extends (...args: infer Args) => PromiseOrObject<{
|
|
55
51
|
__Returns__: "Subscribe";
|
|
56
|
-
} & infer
|
|
52
|
+
} & infer Return> ? (...args: [...FilterOutInternalArgs<Args>, data: DocumentModel<Return>]) => void : never;
|
|
57
53
|
} & {
|
|
54
|
+
queue: BullQueue;
|
|
58
55
|
websocket: Server;
|
|
59
56
|
};
|
|
60
|
-
export declare function Sig(name?: string): PropertyDecorator;
|
|
61
|
-
export type Sig<Signal> = Queue<Signal> & Websocket<Signal>;
|
|
62
57
|
export declare function Db(name: string): PropertyDecorator;
|
|
63
58
|
export declare const serviceOf: (target: Type) => Type;
|
|
64
|
-
export declare function MixSrvs<
|
|
59
|
+
export declare function MixSrvs<T extends Type[]>(...services: [...T]): Type<MergeAllTypes<T>>;
|
|
65
60
|
export declare const LogService: <T extends string>(name: T) => {
|
|
66
61
|
new (): {
|
|
67
62
|
logger: Logger;
|
|
68
63
|
};
|
|
69
64
|
};
|
|
70
|
-
type
|
|
71
|
-
|
|
72
|
-
__Returns__: "Done";
|
|
73
|
-
}> ? K : never : never]: Signal[K] extends (...args: infer Args) => Promise<infer R> ? (...args: FilterOutInternalArgs<Args>) => Promise<Job> : never;
|
|
74
|
-
};
|
|
75
|
-
type DatabaseService<T extends string, Input, Doc, Obj, Model, Insight, Filter, Summary> = DatabaseServiceWithQuerySort<T, Input, Doc, Obj, Model, Insight, GetActionObject<Filter>, SortOf<Filter>>;
|
|
76
|
-
type DatabaseServiceWithQuerySort<T extends string, Input, Doc, Obj, Model, Insight, Query, Sort> = {
|
|
65
|
+
type DatabaseService<T extends string, Input, Doc, Obj, Model, Insight, Filter> = DatabaseServiceWithQuerySort<T, Input, Doc, Obj, Model, Insight, GetActionObject<Filter>, SortOf<Filter>>;
|
|
66
|
+
type DatabaseServiceWithQuerySort<T extends string, Input, Doc, Obj, Model, Insight, Query, Sort, _CapitalizedT extends Capitalize<T> = Capitalize<T>, _DataInputOfDoc extends DataInputOf<Input, Doc> = DataInputOf<Input, Doc>, _QueryOfDoc extends QueryOf<Doc> = QueryOf<Doc>, _FindQueryOption extends FindQueryOption<Sort, Obj> = FindQueryOption<Sort, Obj>, _ListQueryOption extends ListQueryOption<Sort, Obj> = ListQueryOption<Sort, Obj>> = {
|
|
77
67
|
logger: Logger;
|
|
78
68
|
__databaseModel: Model;
|
|
79
|
-
__list(query?:
|
|
80
|
-
__listIds(query?:
|
|
81
|
-
__find(query?:
|
|
82
|
-
__findId(query?:
|
|
83
|
-
__pick(query?:
|
|
84
|
-
__pickId(query?:
|
|
85
|
-
__exists(query?:
|
|
86
|
-
__count(query?:
|
|
87
|
-
__insight(query?:
|
|
88
|
-
__search(query:
|
|
69
|
+
__list(query?: _QueryOfDoc, queryOption?: _ListQueryOption): Promise<Doc[]>;
|
|
70
|
+
__listIds(query?: _QueryOfDoc, queryOption?: _ListQueryOption): Promise<string[]>;
|
|
71
|
+
__find(query?: _QueryOfDoc, queryOption?: _FindQueryOption): Promise<Doc | null>;
|
|
72
|
+
__findId(query?: _QueryOfDoc, queryOption?: _FindQueryOption): Promise<string | null>;
|
|
73
|
+
__pick(query?: _QueryOfDoc, queryOption?: _FindQueryOption): Promise<Doc>;
|
|
74
|
+
__pickId(query?: _QueryOfDoc, queryOption?: _FindQueryOption): Promise<string>;
|
|
75
|
+
__exists(query?: _QueryOfDoc): Promise<string | null>;
|
|
76
|
+
__count(query?: _QueryOfDoc): Promise<number>;
|
|
77
|
+
__insight(query?: _QueryOfDoc): Promise<Insight>;
|
|
78
|
+
__search(query: _QueryOfDoc, queryOption?: _ListQueryOption): Promise<{
|
|
89
79
|
docs: Doc[];
|
|
90
80
|
count: number;
|
|
91
81
|
}>;
|
|
92
|
-
__searchDocs(query:
|
|
93
|
-
__searchCount(query:
|
|
94
|
-
_preCreate(data:
|
|
82
|
+
__searchDocs(query: _QueryOfDoc, queryOption?: _ListQueryOption): Promise<Doc[]>;
|
|
83
|
+
__searchCount(query: _QueryOfDoc): Promise<number>;
|
|
84
|
+
_preCreate(data: _DataInputOfDoc): PromiseOrObject<_DataInputOfDoc>;
|
|
95
85
|
_postCreate(doc: Doc): Promise<Doc> | Doc;
|
|
96
|
-
_preUpdate(id: string, data: Partial<Doc>):
|
|
86
|
+
_preUpdate(id: string, data: Partial<Doc>): PromiseOrObject<Partial<Doc>>;
|
|
97
87
|
_postUpdate(doc: Doc): Promise<Doc> | Doc;
|
|
98
88
|
_preRemove(id: string): Promise<void> | void;
|
|
99
89
|
_postRemove(doc: Doc): Promise<Doc> | Doc;
|
|
90
|
+
listenPre: (type: SaveEventType, listener: (doc: Doc, type: CRUDEventType) => PromiseOrObject<void>) => () => void;
|
|
91
|
+
listenPost: (type: SaveEventType, listener: (doc: Doc, type: CRUDEventType) => PromiseOrObject<void>) => () => void;
|
|
100
92
|
} & Prettify<{
|
|
101
93
|
[key in `${T}Model`]: Model;
|
|
102
94
|
} & {
|
|
103
|
-
[K in `get${
|
|
95
|
+
[K in `get${_CapitalizedT}`]: (id: string) => Promise<Doc>;
|
|
104
96
|
} & {
|
|
105
|
-
[K in `load${
|
|
97
|
+
[K in `load${_CapitalizedT}`]: (id?: string) => Promise<Doc | null>;
|
|
106
98
|
} & {
|
|
107
|
-
[K in `load${
|
|
99
|
+
[K in `load${_CapitalizedT}Many`]: (ids: string[]) => Promise<Doc[]>;
|
|
108
100
|
} & {
|
|
109
|
-
[K in `create${
|
|
101
|
+
[K in `create${_CapitalizedT}`]: (data: _DataInputOfDoc) => Promise<Doc>;
|
|
110
102
|
} & {
|
|
111
|
-
[K in `update${
|
|
103
|
+
[K in `update${_CapitalizedT}`]: (id: string, data: Partial<Doc>) => Promise<Doc>;
|
|
112
104
|
} & {
|
|
113
|
-
[K in `remove${
|
|
105
|
+
[K in `remove${_CapitalizedT}`]: (id: string) => Promise<Doc>;
|
|
114
106
|
} & {
|
|
115
|
-
[K in `search${
|
|
107
|
+
[K in `search${_CapitalizedT}`]: (searchText: string, queryOption?: _ListQueryOption) => Promise<{
|
|
116
108
|
docs: Doc[];
|
|
117
109
|
count: number;
|
|
118
110
|
}>;
|
|
119
111
|
} & {
|
|
120
|
-
[K in `searchDocs${
|
|
121
|
-
} & {
|
|
122
|
-
[K in `searchCount${Capitalize<T>}`]: (searchText: string) => Promise<number>;
|
|
123
|
-
} & {
|
|
124
|
-
[K in keyof Query as K extends string ? `list${Capitalize<K>}` : never]: Query[K] extends (...args: infer Args) => any ? (...args: [...Args, queryOption?: ListQueryOption<Sort, Obj>]) => Promise<Doc[]> : never;
|
|
125
|
-
} & {
|
|
126
|
-
[K in keyof Query as K extends string ? `listIds${Capitalize<K>}` : never]: Query[K] extends (...args: infer Args) => any ? (...args: [...Args, queryOption?: ListQueryOption<Sort, Obj>]) => Promise<string[]> : never;
|
|
127
|
-
} & {
|
|
128
|
-
[K in keyof Query as K extends string ? `find${Capitalize<K>}` : never]: Query[K] extends (...args: infer Args) => any ? (...args: [...Args, queryOption?: FindQueryOption<Sort, Obj>]) => Promise<Doc | null> : never;
|
|
129
|
-
} & {
|
|
130
|
-
[K in keyof Query as K extends string ? `findId${Capitalize<K>}` : never]: Query[K] extends (...args: infer Args) => any ? (...args: [...Args, queryOption?: FindQueryOption<Sort, Obj>]) => Promise<string | null> : never;
|
|
131
|
-
} & {
|
|
132
|
-
[K in keyof Query as K extends string ? `pick${Capitalize<K>}` : never]: Query[K] extends (...args: infer Args) => any ? (...args: [...Args, queryOption?: FindQueryOption<Sort, Obj>]) => Promise<Doc> : never;
|
|
133
|
-
} & {
|
|
134
|
-
[K in keyof Query as K extends string ? `pickId${Capitalize<K>}` : never]: Query[K] extends (...args: infer Args) => any ? (...args: [...Args, queryOption?: FindQueryOption<Sort, Obj>]) => Promise<string> : never;
|
|
135
|
-
} & {
|
|
136
|
-
[K in keyof Query as K extends string ? `exists${Capitalize<K>}` : never]: Query[K] extends (...args: infer Args) => any ? (...args: [...Args]) => Promise<string | null> : never;
|
|
137
|
-
} & {
|
|
138
|
-
[K in keyof Query as K extends string ? `count${Capitalize<K>}` : never]: Query[K] extends (...args: infer Args) => any ? (...args: [...Args]) => Promise<number> : never;
|
|
112
|
+
[K in `searchDocs${_CapitalizedT}`]: (searchText: string, queryOption?: _ListQueryOption) => Promise<Doc[]>;
|
|
139
113
|
} & {
|
|
140
|
-
[K in
|
|
141
|
-
}
|
|
142
|
-
export declare const DbService: <T extends string, Input, Doc extends HydratedDocument<any>, Model extends DatabaseModel<T, Input, Doc, Obj, Insight, Filter,
|
|
143
|
-
export declare const ExtendedUserService: <T extends string, Input, Doc extends HydratedDocument<any>, Model extends DatabaseModel<T, Input, Doc, Obj, Insight, Filter, Summary>, Middleware extends BaseMiddleware, Obj, Insight, Filter extends FilterType, Summary, Srv, Signal = unknown>(database: Database<T, Input, Doc, Model, Middleware, Obj, Insight, Filter, Summary>, srvRef: Type<Srv>, sigRef?: Type<Signal>) => Type<DatabaseService<T, Input, Doc, BaseObject, Model, Insight, Filter, Summary> & {
|
|
144
|
-
queue: QueueService<Signal>;
|
|
145
|
-
} & { [K in keyof Srv]: Srv[K] extends (...args: infer Args) => Promise<BaseObject> ? (...args: Args) => Promise<Doc> : Srv[K] extends (...args: infer Args) => Promise<BaseObject[]> ? (...args: Args) => Promise<Doc[]> : Srv[K] extends BaseObject ? Doc : Srv[K] extends BaseObject[] ? Doc[] : Srv[K]; }>;
|
|
146
|
-
export declare const ExtendedSummaryService: <T extends string, Input, Doc extends HydratedDocument<any>, Model, Middleware extends BaseMiddleware, Obj, Insight, Filter extends FilterType, Summary, Srv, Signal = unknown>(database: Database<T, Input, Doc, Model, Middleware, Obj, Insight, Filter, Summary>, srvRef: Type<Srv>, sigRef?: Type<Signal>) => Type<Omit<DatabaseService<T, Input, Doc, Obj, Model, Insight, Filter, Summary> & {
|
|
147
|
-
queue: QueueService<Signal>;
|
|
148
|
-
} & { [K in keyof Srv]: Srv[K] extends (...args: infer Args) => Promise<BaseObject> ? (...args: Args) => Promise<Doc> : Srv[K] extends (...args: infer Args) => Promise<BaseObject[]> ? (...args: Args) => Promise<Doc[]> : Srv[K] extends BaseObject ? Doc : Srv[K] extends BaseObject[] ? Doc[] : Srv[K]; }, "userService">>;
|
|
149
|
-
export declare const ExtendedSettingService: <T extends string, Input, Doc extends HydratedDocument<any>, Model extends DatabaseModel<T, Input, Doc, Obj, Insight, Filter, Summary>, Middleware extends BaseMiddleware, Obj, Insight, Filter extends FilterType, Summary, Srv, Signal = unknown>(database: Database<T, Input, Doc, Model, Middleware, Obj, Insight, Filter, Summary>, srvRef: Type<Srv>, sigRef?: Type<Signal>) => Type<DatabaseService<T, Input, Doc, BaseObject, Model, Insight, Filter, Summary> & {
|
|
150
|
-
queue: QueueService<Signal>;
|
|
151
|
-
} & { [K in keyof Srv]: Srv[K] extends (...args: infer Args) => Promise<BaseObject> ? (...args: Args) => Promise<Doc> : Srv[K] extends (...args: infer Args) => Promise<BaseObject[]> ? (...args: Args) => Promise<Doc[]> : Srv[K] extends BaseObject ? Doc : Srv[K] extends BaseObject[] ? Doc[] : Srv[K]; }>;
|
|
114
|
+
[K in `searchCount${_CapitalizedT}`]: (searchText: string) => Promise<number>;
|
|
115
|
+
} & QueryMethodPart<Query, Sort, Obj, Doc, Insight, _FindQueryOption, _ListQueryOption>>;
|
|
116
|
+
export declare const DbService: <T extends string, Input, Doc extends HydratedDocument<any>, Model extends DatabaseModel<T, Input, Doc, Obj, Insight, Filter, _CapitalizedT, _QueryOfDoc, _Query, _Sort, _DataInputOfDoc, _FindQueryOption, _ListQueryOption>, Middleware extends BaseMiddleware, Obj, Insight, Filter extends FilterType, LibSrvs extends Type[], _CapitalizedT extends string = Capitalize<T>, _QueryOfDoc extends QueryOf<Doc> = QueryOf<Doc>, _Query extends GetActionObject<Filter> = GetActionObject<Filter>, _Sort extends SortOf<Filter> = SortOf<Filter>, _DataInputOfDoc extends DataInputOf<Input, Doc> = DataInputOf<Input, Doc>, _FindQueryOption extends FindQueryOption<_Sort, Obj> = FindQueryOption<_Sort, Obj>, _ListQueryOption extends ListQueryOption<_Sort, Obj> = ListQueryOption<_Sort, Obj>, _DocObjectOfDoc = GetDocObject<Doc>, _MixedLibSrv = MergeAllTypes<LibSrvs>>(database: Database<T, Input, Doc, Model, Middleware, Obj, Insight, Filter>, ...libSrvRefs: LibSrvs) => Type<DatabaseService<T, Input, Doc, Obj, Model, Insight, Filter> & { [K in keyof _MixedLibSrv]: _MixedLibSrv[K] extends (...args: infer Args) => Promise<infer Value> ? Value extends (infer SingleValue)[] ? SingleValue extends DbDoc<any> ? _DocObjectOfDoc extends GetDocObject<SingleValue> ? (...args: Args) => Promise<Doc[]> : _MixedLibSrv[K] : _MixedLibSrv[K] : Value extends DbDoc<any> ? _DocObjectOfDoc extends GetDocObject<Value> ? (...args: Args) => Promise<Doc> : _MixedLibSrv[K] : _MixedLibSrv[K] : _MixedLibSrv[K]; }>;
|
|
152
117
|
export declare const makeProvidersForSrv: (srvRef: Type) => Provider[];
|
|
153
118
|
export {};
|