@lilaquadrat/studio 10.0.0-beta.4 → 10.0.0-beta.5
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/lib/main.d.ts +1 -2
- package/lib/main.js +1 -2
- package/lib/main.js.map +1 -1
- package/lib/services.d.ts +1 -2
- package/lib/services.js +4 -2
- package/lib/services.js.map +1 -1
- package/lib/src/services/publishData.service.d.ts +2 -2
- package/lib/src/services/publishData.service.js +26 -13
- package/lib/src/services/publishData.service.js.map +1 -1
- package/lib/src/services/universal.service.d.ts +0 -17
- package/lib/src/services/universal.service.js +166 -141
- package/lib/src/services/universal.service.js.map +1 -1
- package/package.json +1 -1
- package/lib/src/classes/ControllerBase.class.d.ts +0 -114
- package/lib/src/classes/ControllerBase.class.js +0 -268
- package/lib/src/classes/ControllerBase.class.js.map +0 -1
package/lib/main.d.ts
CHANGED
|
@@ -8,10 +8,9 @@ import logger from './src/logger.js';
|
|
|
8
8
|
import Modelv2 from './src/classes/modelv2.class.js';
|
|
9
9
|
import Models from './src/classes/models.class.js';
|
|
10
10
|
import Cache from './src/classes/cache.class.js';
|
|
11
|
-
import ControllerBase from './src/classes/ControllerBase.class.js';
|
|
12
11
|
import mongoClass, { MongoClass } from './src/classes/mongo.class.js';
|
|
13
12
|
import respondCode from './src/functions/respondCode.js';
|
|
14
13
|
import optionsHelper from './src/functions/optionsHelper.js';
|
|
15
14
|
import AzureVault from './src/AzureVault.js';
|
|
16
15
|
import handleError from './src/functions/handleError.js';
|
|
17
|
-
export { Immutable, ShareClientFactory, SSLChallenge, Nginx, DockerCompose, conf, Modelv2, Models, logger, MongoClass, mongoClass, respondCode, optionsHelper, handleError,
|
|
16
|
+
export { Immutable, ShareClientFactory, SSLChallenge, Nginx, DockerCompose, conf, Modelv2, Models, logger, MongoClass, mongoClass, respondCode, optionsHelper, handleError, AzureVault, Cache };
|
package/lib/main.js
CHANGED
|
@@ -8,11 +8,10 @@ import logger from './src/logger.js';
|
|
|
8
8
|
import Modelv2 from './src/classes/modelv2.class.js';
|
|
9
9
|
import Models from './src/classes/models.class.js';
|
|
10
10
|
import Cache from './src/classes/cache.class.js';
|
|
11
|
-
import ControllerBase from './src/classes/ControllerBase.class.js';
|
|
12
11
|
import mongoClass, { MongoClass } from './src/classes/mongo.class.js';
|
|
13
12
|
import respondCode from './src/functions/respondCode.js';
|
|
14
13
|
import optionsHelper from './src/functions/optionsHelper.js';
|
|
15
14
|
import AzureVault from './src/AzureVault.js';
|
|
16
15
|
import handleError from './src/functions/handleError.js';
|
|
17
|
-
export { Immutable, ShareClientFactory, SSLChallenge, Nginx, DockerCompose, conf, Modelv2, Models, logger, MongoClass, mongoClass, respondCode, optionsHelper, handleError,
|
|
16
|
+
export { Immutable, ShareClientFactory, SSLChallenge, Nginx, DockerCompose, conf, Modelv2, Models, logger, MongoClass, mongoClass, respondCode, optionsHelper, handleError, AzureVault, Cache };
|
|
18
17
|
//# sourceMappingURL=main.js.map
|
package/lib/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../main.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,0BAA0B,CAAC;AACjD,OAAO,kBAAkB,MAAM,mCAAmC,CAAC;AAEnE,OAAO,YAAY,MAAM,+BAA+B,CAAC;AACzD,OAAO,KAAK,MAAM,sBAAsB,CAAC;AACzC,OAAO,aAAa,MAAM,+BAA+B,CAAC;AAC1D,OAAO,IAAI,MAAM,gCAAgC,CAAC;AAClD,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,OAAO,MAAM,gCAAgC,CAAC;AACrD,OAAO,MAAM,MAAM,+BAA+B,CAAC;AACnD,OAAO,KAAK,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../main.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,0BAA0B,CAAC;AACjD,OAAO,kBAAkB,MAAM,mCAAmC,CAAC;AAEnE,OAAO,YAAY,MAAM,+BAA+B,CAAC;AACzD,OAAO,KAAK,MAAM,sBAAsB,CAAC;AACzC,OAAO,aAAa,MAAM,+BAA+B,CAAC;AAC1D,OAAO,IAAI,MAAM,gCAAgC,CAAC;AAClD,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,OAAO,MAAM,gCAAgC,CAAC;AACrD,OAAO,MAAM,MAAM,+BAA+B,CAAC;AACnD,OAAO,KAAK,MAAM,8BAA8B,CAAC;AAEjD,OAAO,UAAU,EAAE,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAEtE,OAAO,WAAW,MAAM,gCAAgC,CAAC;AACzD,OAAO,aAAa,MAAM,kCAAkC,CAAC;AAC7D,OAAO,UAAU,MAAM,qBAAqB,CAAC;AAC7C,OAAO,WAAW,MAAM,gCAAgC,CAAC;AAEzD,OAAO,EACH,SAAS,EACT,kBAAkB,EAClB,YAAY,EACZ,KAAK,EACL,aAAa,EACb,IAAI,EACJ,OAAO,EACP,MAAM,EACN,MAAM,EACN,UAAU,EACV,UAAU,EACV,WAAW,EACX,aAAa,EACb,WAAW,EACX,UAAU,EACV,KAAK,EACR,CAAA"}
|
package/lib/services.d.ts
CHANGED
|
@@ -2,7 +2,6 @@ import editorBaseService from './src/services/editorBase.service.js';
|
|
|
2
2
|
import historyService from './src/services/history.service.js';
|
|
3
3
|
import handleFileService from './src/services/handleFile.service.js';
|
|
4
4
|
import idService from './src/services/id.service.js';
|
|
5
|
-
import universalService from './src/services/universal.service.js';
|
|
6
5
|
import publishService from './src/services/publish.service.js';
|
|
7
6
|
import publishMethodService from './src/services/publishMethod.service.js';
|
|
8
7
|
import secretService from './src/services/secret.service.js';
|
|
@@ -36,4 +35,4 @@ import jetstreamService from './src/services/jetstream.service.js';
|
|
|
36
35
|
import storageService from './src/services/storage.service.js';
|
|
37
36
|
import editorService from './src/services/editor.service.js';
|
|
38
37
|
import uploadService from './src/services/upload.service.js';
|
|
39
|
-
export { editorService as EditorService, editorBaseService as EditorBaseService, historyService as HistoryService, handleFileService as HandleFileService, idService as IdService,
|
|
38
|
+
export { editorService as EditorService, editorBaseService as EditorBaseService, historyService as HistoryService, handleFileService as HandleFileService, idService as IdService, publishService as PublishService, secretService as SecretService, publishMethodService as PublishMethodService, certificatesService as CertificatesService, certificatesActionService as CertificatesActionService, domainsService as DomainsService, confService as ConfService, hostingCommandsService as HostingCommandsService, hostingService as HostingService, hostingAdminService as HostingAdminService, mediaService as MediaService, customersService as CustomersService, listsService as ListsService, listParticipantsService as ListParticipantsService, spamAnalasysService as SpamAnalasysService, webhooksCallsService as WebhooksCallsService, paymentsService as PaymentsService, paymentProvidersService as PaymentProvidersService, permissionsService as PermissionsService, importService as ImportService, structuresService as StructuresService, meService, MeService, AccessService, PublishDataService, MailFromService, CartService, AiService, LoggingService, shareService as ShareService, jetstreamService as JetStreamService, storageService as StorageService, uploadService as UploadService };
|
package/lib/services.js
CHANGED
|
@@ -2,7 +2,7 @@ import editorBaseService from './src/services/editorBase.service.js';
|
|
|
2
2
|
import historyService from './src/services/history.service.js';
|
|
3
3
|
import handleFileService from './src/services/handleFile.service.js';
|
|
4
4
|
import idService from './src/services/id.service.js';
|
|
5
|
-
import universalService from './src/services/universal.service.js';
|
|
5
|
+
// import universalService from './src/services/universal.service.js';
|
|
6
6
|
import publishService from './src/services/publish.service.js';
|
|
7
7
|
import publishMethodService from './src/services/publishMethod.service.js';
|
|
8
8
|
import secretService from './src/services/secret.service.js';
|
|
@@ -36,5 +36,7 @@ import jetstreamService from './src/services/jetstream.service.js';
|
|
|
36
36
|
import storageService from './src/services/storage.service.js';
|
|
37
37
|
import editorService from './src/services/editor.service.js';
|
|
38
38
|
import uploadService from './src/services/upload.service.js';
|
|
39
|
-
export { editorService as EditorService, editorBaseService as EditorBaseService, historyService as HistoryService, handleFileService as HandleFileService, idService as IdService,
|
|
39
|
+
export { editorService as EditorService, editorBaseService as EditorBaseService, historyService as HistoryService, handleFileService as HandleFileService, idService as IdService,
|
|
40
|
+
// universalService as UniversalService,
|
|
41
|
+
publishService as PublishService, secretService as SecretService, publishMethodService as PublishMethodService, certificatesService as CertificatesService, certificatesActionService as CertificatesActionService, domainsService as DomainsService, confService as ConfService, hostingCommandsService as HostingCommandsService, hostingService as HostingService, hostingAdminService as HostingAdminService, mediaService as MediaService, customersService as CustomersService, listsService as ListsService, listParticipantsService as ListParticipantsService, spamAnalasysService as SpamAnalasysService, webhooksCallsService as WebhooksCallsService, paymentsService as PaymentsService, paymentProvidersService as PaymentProvidersService, permissionsService as PermissionsService, importService as ImportService, structuresService as StructuresService, meService, MeService, AccessService, PublishDataService, MailFromService, CartService, AiService, LoggingService, shareService as ShareService, jetstreamService as JetStreamService, storageService as StorageService, uploadService as UploadService };
|
|
40
42
|
//# sourceMappingURL=services.js.map
|
package/lib/services.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"services.js","sourceRoot":"","sources":["../services.ts"],"names":[],"mappings":"AACA,OAAO,iBAAiB,MAAM,sCAAsC,CAAC;AACrE,OAAO,cAAc,MAAM,mCAAmC,CAAC;AAC/D,OAAO,iBAAiB,MAAM,sCAAsC,CAAC;AACrE,OAAO,SAAS,MAAM,8BAA8B,CAAC;AACrD,
|
|
1
|
+
{"version":3,"file":"services.js","sourceRoot":"","sources":["../services.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,8 +6,8 @@ export default class PublishDataService {
|
|
|
6
6
|
static getAll(company: string, project: string, app: string, model: string, type: Publish['type'], full: boolean, changed?: Date, affectedStates?: Content['state'][], category?: string): Promise<import("mongodb").WithId<Content>[] | import("mongodb").WithId<Universal>[]>;
|
|
7
7
|
static countAll(company: string, project: string, app: string, model: string, type: Publish['type'], changed?: Date, affectedStates?: Content['state'][], category?: string): Promise<number>;
|
|
8
8
|
static getQuery(company: string, project: string, app: string, model: string, type: Publish['type'], changed?: Date, affectedStates?: Content['state'][], category?: string): Filter<Content> | Filter<Universal>;
|
|
9
|
-
static getSingleInternalId(internalId: ObjectId, company: string, project: string, partials: boolean, children: boolean, genericData: boolean, appPublish: string, modelPublish: string, type: Publish['type'], affectedStates?: Content['state'][]): Promise<
|
|
10
|
-
static getSingle(id: string, company: string, project: string, partials: boolean, children: boolean, genericData: boolean, appPublish: string, modelPublish: string, type: Publish['type'], affectedStates?: Content['state'][]): Promise<
|
|
9
|
+
static getSingleInternalId(internalId: ObjectId, company: string, project: string, partials: boolean, children: boolean, genericData: boolean, appPublish: string, modelPublish: string, type: Publish['type'], affectedStates?: Content['state'][]): Promise<Content & EditorLegacy>;
|
|
10
|
+
static getSingle(id: string, company: string, project: string, partials: boolean, children: boolean, genericData: boolean, appPublish: string, modelPublish: string, type: Publish['type'], affectedStates?: Content['state'][]): Promise<Content & EditorLegacy>;
|
|
11
11
|
static getContextData(arrayOfInternalIds: (ObjectId | ObjectIdString)[], options: {
|
|
12
12
|
company: string;
|
|
13
13
|
project: string;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ObjectId } from 'mongodb';
|
|
2
2
|
import { Modelv2, mongoClass } from '../../main.js';
|
|
3
3
|
import EditorModel from '../models/editor.model.js';
|
|
4
|
-
import UniversalService from './universal.service.js';
|
|
4
|
+
// import UniversalService from './universal.service.js';
|
|
5
5
|
import EditorService from './editor.service.js';
|
|
6
6
|
export default class PublishDataService {
|
|
7
7
|
static async getModel(type, model) {
|
|
@@ -75,12 +75,19 @@ export default class PublishDataService {
|
|
|
75
75
|
affectedStates,
|
|
76
76
|
});
|
|
77
77
|
}
|
|
78
|
-
if (type === 'universal') {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
78
|
+
// if (type === 'universal') {
|
|
79
|
+
// const model = new Modelv2<Universal>(modelPublish, 'universal', undefined, true);
|
|
80
|
+
// await model.setMongoConnection(mongoClass.client);
|
|
81
|
+
// const universalService = new UniversalService(model);
|
|
82
|
+
// data = await universalService.getByInternalId(
|
|
83
|
+
// internalId,
|
|
84
|
+
// company,
|
|
85
|
+
// project,
|
|
86
|
+
// appPublish,
|
|
87
|
+
// modelPublish,
|
|
88
|
+
// affectedStates,
|
|
89
|
+
// );
|
|
90
|
+
// }
|
|
84
91
|
if (!data)
|
|
85
92
|
throw new Error('DATA_SINGLE_NOT_FOUND');
|
|
86
93
|
return data;
|
|
@@ -97,12 +104,18 @@ export default class PublishDataService {
|
|
|
97
104
|
affectedStates,
|
|
98
105
|
});
|
|
99
106
|
}
|
|
100
|
-
if (type === 'universal') {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
107
|
+
// if (type === 'universal') {
|
|
108
|
+
// const model = new Modelv2<Universal>(modelPublish, 'universal', undefined, true);
|
|
109
|
+
// await model.setMongoConnection(mongoClass.client);
|
|
110
|
+
// const universalService = new UniversalService(model);
|
|
111
|
+
// data = await universalService.single(
|
|
112
|
+
// id,
|
|
113
|
+
// company,
|
|
114
|
+
// project,
|
|
115
|
+
// appPublish,
|
|
116
|
+
// modelPublish,
|
|
117
|
+
// );
|
|
118
|
+
// }
|
|
106
119
|
if (!data)
|
|
107
120
|
throw new Error('DATA_SINGLE_ID_NOT_FOUND');
|
|
108
121
|
return data;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publishData.service.js","sourceRoot":"","sources":["../../../src/services/publishData.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAuB,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,WAAW,MAAM,2BAA2B,CAAC;AACpD,
|
|
1
|
+
{"version":3,"file":"publishData.service.js","sourceRoot":"","sources":["../../../src/services/publishData.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { Filter, WithId, ObjectId } from 'mongodb';
|
|
2
|
-
import { Immutable, Modelv2 } from '../../main.js';
|
|
3
|
-
import { BasicData, Content, DatabaseQueryOptions, Universal } from '@lilaquadrat/interfaces';
|
|
4
|
-
export default class UniversalService extends Immutable<Universal> {
|
|
5
|
-
limit: number;
|
|
6
|
-
search: string[];
|
|
7
|
-
constructor(model: Modelv2<Universal>);
|
|
8
|
-
single(stringOrObjectID: BasicData<Content>['_id'] | string | number, company: string, project: string, app: string, model: string, affectedStates?: Content['state'][]): Promise<WithId<BasicData<Universal>> | null>;
|
|
9
|
-
existsById(id: string | number, company: string, project: string, app: string, model: string): Promise<boolean>;
|
|
10
|
-
getByInternalId(_id: ObjectId, company: string, project: string, app: string, model: string, affectedStates?: Content['state'][]): Promise<WithId<BasicData<Universal>> | null>;
|
|
11
|
-
list(query: Filter<WithId<Universal>>, select: Record<string, number>, site: number, limit: number, model: Modelv2<Universal>, sort?: string, order?: number): Promise<{
|
|
12
|
-
data: WithId<Universal>[];
|
|
13
|
-
all: number;
|
|
14
|
-
count: number;
|
|
15
|
-
}>;
|
|
16
|
-
buildQuery(query: Filter<WithId<Universal>>, company?: string, project?: string | boolean, options?: DatabaseQueryOptions): Filter<WithId<Universal>>;
|
|
17
|
-
}
|
|
@@ -1,142 +1,167 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
1
|
+
// import {
|
|
2
|
+
// Filter, WithId, Sort, SortDirection, ObjectId,
|
|
3
|
+
// } from 'mongodb';
|
|
4
|
+
// import { Immutable, Modelv2, ControllerBase } from '../../main.js';
|
|
5
|
+
// import { BasicData, Content, DatabaseQueryOptions, Universal } from '@lilaquadrat/interfaces';
|
|
6
|
+
// export default class UniversalService extends Immutable<Universal> {
|
|
7
|
+
// limit = 30;
|
|
8
|
+
// search = ['name', 'id'];
|
|
9
|
+
// constructor(model: Modelv2<Universal>) {
|
|
10
|
+
// super();
|
|
11
|
+
// if (!model) throw new Error('UNIVERSAL_SERVICE_MODEL_MISSING');
|
|
12
|
+
// this.model = model;
|
|
13
|
+
// }
|
|
14
|
+
// single(
|
|
15
|
+
// stringOrObjectID: BasicData<Content>['_id'] | string | number,
|
|
16
|
+
// company: string,
|
|
17
|
+
// project: string,
|
|
18
|
+
// app: string,
|
|
19
|
+
// model: string,
|
|
20
|
+
// affectedStates?: Content['state'][],
|
|
21
|
+
// ) {
|
|
22
|
+
// const query: Filter<Universal> = {
|
|
23
|
+
// company,
|
|
24
|
+
// project,
|
|
25
|
+
// app,
|
|
26
|
+
// model,
|
|
27
|
+
// };
|
|
28
|
+
// if (typeof stringOrObjectID === 'string' || typeof stringOrObjectID === 'number') {
|
|
29
|
+
// query.id = stringOrObjectID;
|
|
30
|
+
// }
|
|
31
|
+
// if (typeof stringOrObjectID === 'object') {
|
|
32
|
+
// query._id = stringOrObjectID;
|
|
33
|
+
// }
|
|
34
|
+
// if (affectedStates) {
|
|
35
|
+
// query.state = { $in: affectedStates };
|
|
36
|
+
// }
|
|
37
|
+
// return this.model.db.findOne(query);
|
|
38
|
+
// }
|
|
39
|
+
// existsById(
|
|
40
|
+
// id: string | number,
|
|
41
|
+
// company: string,
|
|
42
|
+
// project: string,
|
|
43
|
+
// app: string,
|
|
44
|
+
// model: string,
|
|
45
|
+
// ) {
|
|
46
|
+
// return this.model.db
|
|
47
|
+
// .countDocuments({
|
|
48
|
+
// id,
|
|
49
|
+
// company,
|
|
50
|
+
// project,
|
|
51
|
+
// app,
|
|
52
|
+
// model,
|
|
53
|
+
// })
|
|
54
|
+
// .then((found) => found > 0);
|
|
55
|
+
// }
|
|
56
|
+
// getByInternalId(
|
|
57
|
+
// _id: ObjectId,
|
|
58
|
+
// company: string,
|
|
59
|
+
// project: string,
|
|
60
|
+
// app: string,
|
|
61
|
+
// model: string,
|
|
62
|
+
// affectedStates?: Content['state'][],
|
|
63
|
+
// ) {
|
|
64
|
+
// return this.single(_id, company, project, app, model, affectedStates);
|
|
65
|
+
// }
|
|
66
|
+
// list(
|
|
67
|
+
// query: Filter<WithId<Universal>>,
|
|
68
|
+
// select: Record<string, number>,
|
|
69
|
+
// site: number,
|
|
70
|
+
// limit: number,
|
|
71
|
+
// model: Modelv2<Universal>,
|
|
72
|
+
// sort?: string,
|
|
73
|
+
// order?: number,
|
|
74
|
+
// ) {
|
|
75
|
+
// let realSite: number = 0;
|
|
76
|
+
// let realSelect: Record<keyof Universal, number>;
|
|
77
|
+
// let realSort: Record<string, SortDirection> = {};
|
|
78
|
+
// let all: number;
|
|
79
|
+
// /**
|
|
80
|
+
// * see comment from this function
|
|
81
|
+
// */
|
|
82
|
+
// if (site) realSite = site - 1;
|
|
83
|
+
// const skipLimit = ControllerBase.getLimit(realSite, limit, this.limit);
|
|
84
|
+
// if (select) {
|
|
85
|
+
// realSelect = { ...select };
|
|
86
|
+
// } else {
|
|
87
|
+
// realSelect = { history: 0 };
|
|
88
|
+
// }
|
|
89
|
+
// if (sort && order) {
|
|
90
|
+
// realSort[`${sort === 'updated' ? 'history.updated' : sort}`] = +order as SortDirection;
|
|
91
|
+
// } else {
|
|
92
|
+
// realSort = { _id: 1 };
|
|
93
|
+
// }
|
|
94
|
+
// return model.db
|
|
95
|
+
// .countDocuments(query as Filter<Universal>)
|
|
96
|
+
// .then((count: number) => {
|
|
97
|
+
// all = count;
|
|
98
|
+
// return model.db
|
|
99
|
+
// .find(query, { projection: realSelect })
|
|
100
|
+
// .limit(skipLimit.limit)
|
|
101
|
+
// .skip(skipLimit.skip)
|
|
102
|
+
// .sort(realSort)
|
|
103
|
+
// .toArray();
|
|
104
|
+
// })
|
|
105
|
+
// .then((data) => ({ data, all, count: data.length }));
|
|
106
|
+
// }
|
|
107
|
+
// buildQuery(
|
|
108
|
+
// query: Filter<WithId<Universal>>,
|
|
109
|
+
// company?: string,
|
|
110
|
+
// project?: string | boolean,
|
|
111
|
+
// options?: DatabaseQueryOptions,
|
|
112
|
+
// ) {
|
|
113
|
+
// const realQuery: Record<string, any> = { ...query };
|
|
114
|
+
// const orArray: Object[] = [];
|
|
115
|
+
// let tags: string[];
|
|
116
|
+
// let keepTags = false;
|
|
117
|
+
// let keepSearch = false;
|
|
118
|
+
// let keepSort = false;
|
|
119
|
+
// if (company) realQuery.company = company;
|
|
120
|
+
// if (project) realQuery.project = project;
|
|
121
|
+
// if (project === false) realQuery.project = { $exists: false };
|
|
122
|
+
// if (options) {
|
|
123
|
+
// if (options.keepTags) keepTags = true;
|
|
124
|
+
// if (options.keepSearch) keepSearch = true;
|
|
125
|
+
// if (options.keepSort) keepSort = true;
|
|
126
|
+
// }
|
|
127
|
+
// if (!keepSort) {
|
|
128
|
+
// delete realQuery.sort;
|
|
129
|
+
// delete realQuery.order;
|
|
130
|
+
// }
|
|
131
|
+
// if (query.available) {
|
|
132
|
+
// realQuery.available = query.available === 'true';
|
|
133
|
+
// }
|
|
134
|
+
// /**
|
|
135
|
+
// * make sure tags are an array
|
|
136
|
+
// */
|
|
137
|
+
// if (query.tags && !keepTags) {
|
|
138
|
+
// if (!Array.isArray(query.tags)) {
|
|
139
|
+
// tags = [query.tags];
|
|
140
|
+
// } else {
|
|
141
|
+
// tags = query.tags;
|
|
142
|
+
// }
|
|
143
|
+
// realQuery.tags = { $in: tags };
|
|
144
|
+
// }
|
|
145
|
+
// if (query.search && !keepSearch) {
|
|
146
|
+
// if (this.search.length > 1) {
|
|
147
|
+
// this.search.forEach((single: string) => {
|
|
148
|
+
// orArray.push({
|
|
149
|
+
// [single]: {
|
|
150
|
+
// $regex: query.search.toLowerCase().trim(),
|
|
151
|
+
// $options: 'i',
|
|
152
|
+
// },
|
|
153
|
+
// });
|
|
154
|
+
// });
|
|
155
|
+
// realQuery.$or = orArray;
|
|
156
|
+
// } else {
|
|
157
|
+
// realQuery[this.search[0]] = {
|
|
158
|
+
// $regex: query.search.toLowerCase().trim(),
|
|
159
|
+
// $options: 'i',
|
|
160
|
+
// };
|
|
161
|
+
// }
|
|
162
|
+
// delete realQuery.search;
|
|
163
|
+
// }
|
|
164
|
+
// return realQuery as Filter<WithId<Universal>>;
|
|
165
|
+
// }
|
|
166
|
+
// }
|
|
142
167
|
//# sourceMappingURL=universal.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"universal.service.js","sourceRoot":"","sources":["../../../src/services/universal.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"universal.service.js","sourceRoot":"","sources":["../../../src/services/universal.service.ts"],"names":[],"mappings":"AAAA,WAAW;AACX,mDAAmD;AACnD,oBAAoB;AACpB,sEAAsE;AACtE,iGAAiG;AAEjG,uEAAuE;AAEvE,gBAAgB;AAEhB,6BAA6B;AAE7B,6CAA6C;AAE7C,eAAe;AAEf,sEAAsE;AAEtE,0BAA0B;AAE1B,MAAM;AAEN,YAAY;AACZ,qEAAqE;AACrE,uBAAuB;AACvB,uBAAuB;AACvB,mBAAmB;AACnB,qBAAqB;AACrB,2CAA2C;AAC3C,QAAQ;AAER,yCAAyC;AACzC,iBAAiB;AACjB,iBAAiB;AACjB,aAAa;AACb,eAAe;AACf,SAAS;AAET,0FAA0F;AAE1F,qCAAqC;AAErC,QAAQ;AAER,kDAAkD;AAElD,sCAAsC;AAEtC,QAAQ;AAER,4BAA4B;AAE5B,+CAA+C;AAE/C,QAAQ;AAER,2CAA2C;AAE3C,MAAM;AAEN,gBAAgB;AAChB,2BAA2B;AAC3B,uBAAuB;AACvB,uBAAuB;AACvB,mBAAmB;AACnB,qBAAqB;AACrB,QAAQ;AAER,2BAA2B;AAC3B,0BAA0B;AAC1B,cAAc;AACd,mBAAmB;AACnB,mBAAmB;AACnB,eAAe;AACf,iBAAiB;AACjB,WAAW;AACX,qCAAqC;AAErC,MAAM;AAEN,qBAAqB;AACrB,qBAAqB;AACrB,uBAAuB;AACvB,uBAAuB;AACvB,mBAAmB;AACnB,qBAAqB;AACrB,2CAA2C;AAC3C,QAAQ;AAER,6EAA6E;AAE7E,MAAM;AAEN,UAAU;AACV,wCAAwC;AACxC,sCAAsC;AACtC,oBAAoB;AACpB,qBAAqB;AACrB,iCAAiC;AACjC,qBAAqB;AACrB,sBAAsB;AACtB,QAAQ;AAER,gCAAgC;AAChC,uDAAuD;AACvD,wDAAwD;AACxD,uBAAuB;AAEvB,UAAU;AACV,wCAAwC;AACxC,UAAU;AACV,qCAAqC;AAErC,8EAA8E;AAE9E,oBAAoB;AAEpB,oCAAoC;AAEpC,eAAe;AAEf,qCAAqC;AAErC,QAAQ;AAER,2BAA2B;AAE3B,gGAAgG;AAEhG,eAAe;AAEf,+BAA+B;AAE/B,QAAQ;AAER,sBAAsB;AACtB,oDAAoD;AACpD,mCAAmC;AAEnC,uBAAuB;AAEvB,0BAA0B;AAC1B,qDAAqD;AACrD,oCAAoC;AACpC,kCAAkC;AAClC,4BAA4B;AAC5B,wBAAwB;AAExB,WAAW;AACX,8DAA8D;AAE9D,MAAM;AAEN,gBAAgB;AAChB,wCAAwC;AACxC,wBAAwB;AACxB,kCAAkC;AAClC,sCAAsC;AACtC,QAAQ;AAER,2DAA2D;AAC3D,oCAAoC;AAEpC,0BAA0B;AAC1B,4BAA4B;AAC5B,8BAA8B;AAC9B,4BAA4B;AAE5B,gDAAgD;AAChD,gDAAgD;AAChD,qEAAqE;AAErE,qBAAqB;AAErB,+CAA+C;AAC/C,mDAAmD;AACnD,+CAA+C;AAE/C,QAAQ;AAER,uBAAuB;AAEvB,+BAA+B;AAC/B,gCAAgC;AAEhC,QAAQ;AAER,6BAA6B;AAE7B,0DAA0D;AAE1D,QAAQ;AAER,UAAU;AACV,qCAAqC;AACrC,UAAU;AACV,qCAAqC;AAErC,0CAA0C;AAE1C,+BAA+B;AAE/B,iBAAiB;AAEjB,6BAA6B;AAE7B,UAAU;AAEV,wCAAwC;AAExC,QAAQ;AAER,yCAAyC;AAEzC,sCAAsC;AAEtC,oDAAoD;AAEpD,2BAA2B;AAC3B,0BAA0B;AAC1B,2DAA2D;AAC3D,+BAA+B;AAC/B,iBAAiB;AACjB,gBAAgB;AAEhB,cAAc;AAEd,mCAAmC;AAEnC,iBAAiB;AAEjB,wCAAwC;AACxC,uDAAuD;AACvD,2BAA2B;AAC3B,aAAa;AAEb,UAAU;AAEV,iCAAiC;AAEjC,QAAQ;AAER,qDAAqD;AAErD,MAAM;AAEN,IAAI"}
|
package/package.json
CHANGED
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
import { Router, Response } from 'express';
|
|
2
|
-
import { Filter, MongoServerError, SortDirection, WithId, Document } from 'mongodb';
|
|
3
|
-
import { Modelv2 } from '../../main.js';
|
|
4
|
-
import ImmutableError from './errors/Immutable.error.js';
|
|
5
|
-
import { DatabaseQuerySites, DatabaseQueryOptions, ListOfModels } from '@lilaquadrat/interfaces';
|
|
6
|
-
import { ListCustomQueries } from '@lilaquadrat/interfaces';
|
|
7
|
-
import InvalidIdError from './errors/InvalidId.error.js';
|
|
8
|
-
import ForbiddenError from './errors/Forbidden.error.js';
|
|
9
|
-
export default abstract class ControllerBase {
|
|
10
|
-
logger: Console;
|
|
11
|
-
router: Router;
|
|
12
|
-
/**
|
|
13
|
-
* max documents per call.
|
|
14
|
-
* custom limit cant be higher than this
|
|
15
|
-
*
|
|
16
|
-
* @abstract
|
|
17
|
-
* @type {number}
|
|
18
|
-
* @memberof ControllerBase
|
|
19
|
-
*/
|
|
20
|
-
limit: number;
|
|
21
|
-
/**
|
|
22
|
-
* defines which fields are included or excluded if nothing is emitet
|
|
23
|
-
*
|
|
24
|
-
* @type {string}
|
|
25
|
-
* @memberof ControllerBase
|
|
26
|
-
*/
|
|
27
|
-
selectDefault: any;
|
|
28
|
-
/**
|
|
29
|
-
* defines which keys are used for regex search
|
|
30
|
-
* if more then one entry, it will be an $or
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
* For example:
|
|
34
|
-
*
|
|
35
|
-
* ```ts
|
|
36
|
-
* {$or: [{ $regex: key1, $options: 'i' }, { $regex: key2, $options: 'i' }]}
|
|
37
|
-
* ```
|
|
38
|
-
*
|
|
39
|
-
* @type {string[]}
|
|
40
|
-
* @memberof ControllerBase
|
|
41
|
-
*/
|
|
42
|
-
search: string[];
|
|
43
|
-
cleanErrors(errors: {
|
|
44
|
-
[key: string]: any;
|
|
45
|
-
}): {
|
|
46
|
-
[key: string]: any;
|
|
47
|
-
};
|
|
48
|
-
handleError(error: MongoServerError | ImmutableError | InvalidIdError | ForbiddenError, res: Response): void;
|
|
49
|
-
response(res: any, data: any, count?: number): void;
|
|
50
|
-
static buildResponse<M>(data: ListOfModels<M>, site: number, limit: number, hardLimit?: number): {
|
|
51
|
-
data: M[] | undefined;
|
|
52
|
-
all: number | undefined;
|
|
53
|
-
sites: DatabaseQuerySites;
|
|
54
|
-
count: number | undefined;
|
|
55
|
-
};
|
|
56
|
-
static getLimit(site: number, limit: number, hardLimit?: number): {
|
|
57
|
-
skip: number;
|
|
58
|
-
limit: number;
|
|
59
|
-
};
|
|
60
|
-
static getRealLimit(limit: number, hardLimit?: number): number;
|
|
61
|
-
getSort(sort?: string, order?: '1' | 0): {};
|
|
62
|
-
/**
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
* @param {number} site
|
|
66
|
-
* @param {number} limit
|
|
67
|
-
* @param {number} count all data count regardless of site
|
|
68
|
-
* @param {number} current current count of documents
|
|
69
|
-
* @returns {DatabaseQuerySites}
|
|
70
|
-
* @memberof ControllerBase
|
|
71
|
-
*/
|
|
72
|
-
static getSites(site: number, limit: number, count: number, current: number): DatabaseQuerySites;
|
|
73
|
-
exec(): void;
|
|
74
|
-
/**
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
* @param {DatabaseQuery} query
|
|
78
|
-
* @param {string} [company]
|
|
79
|
-
* @param {string} [project]
|
|
80
|
-
* @param {DatabaseQueryOptions} [options]
|
|
81
|
-
* @returns
|
|
82
|
-
* @memberof ControllerBase
|
|
83
|
-
*/
|
|
84
|
-
buildQuery<M>(query: Filter<WithId<M>>, company?: string, project?: string | boolean, options?: DatabaseQueryOptions): Filter<WithId<M>>;
|
|
85
|
-
/**
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
* @param {DatabaseQuery} query
|
|
89
|
-
* @param {string} select
|
|
90
|
-
* @param {number} site start counting at 1 instead of zero. no site / zero will be the same as 1
|
|
91
|
-
* @param {number} limit
|
|
92
|
-
* @param {Model<Document>} model
|
|
93
|
-
* @param {string} [sort]
|
|
94
|
-
* @param {string} [order]
|
|
95
|
-
* @returns
|
|
96
|
-
* @memberof ControllerBase
|
|
97
|
-
*/
|
|
98
|
-
list<M extends Document>(query: Filter<M>, select: Record<string, number>, site: number, limit: number, model: Modelv2<M>, sort?: string, order?: number): Promise<{
|
|
99
|
-
data: WithId<M>[];
|
|
100
|
-
all: number;
|
|
101
|
-
count: number;
|
|
102
|
-
}>;
|
|
103
|
-
listCustomQuery<M extends Document>(queries: ListCustomQueries<M>, model: Modelv2<M>): Promise<{
|
|
104
|
-
all: number;
|
|
105
|
-
data: M[];
|
|
106
|
-
count: number;
|
|
107
|
-
}>;
|
|
108
|
-
static getSkipLimitSort(site: number, limit: number, sort?: string, order?: number): {
|
|
109
|
-
skip: number;
|
|
110
|
-
limit: number;
|
|
111
|
-
sort: Record<string, SortDirection>;
|
|
112
|
-
};
|
|
113
|
-
abstract routing(): void;
|
|
114
|
-
}
|
|
@@ -1,268 +0,0 @@
|
|
|
1
|
-
import { Router } from 'express';
|
|
2
|
-
import handleError from '../functions/handleError.js';
|
|
3
|
-
export default class ControllerBase {
|
|
4
|
-
constructor() {
|
|
5
|
-
this.logger = console;
|
|
6
|
-
this.router = Router({ mergeParams: true });
|
|
7
|
-
/**
|
|
8
|
-
* defines which fields are included or excluded if nothing is emitet
|
|
9
|
-
*
|
|
10
|
-
* @type {string}
|
|
11
|
-
* @memberof ControllerBase
|
|
12
|
-
*/
|
|
13
|
-
this.selectDefault = {};
|
|
14
|
-
/**
|
|
15
|
-
* defines which keys are used for regex search
|
|
16
|
-
* if more then one entry, it will be an $or
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* For example:
|
|
20
|
-
*
|
|
21
|
-
* ```ts
|
|
22
|
-
* {$or: [{ $regex: key1, $options: 'i' }, { $regex: key2, $options: 'i' }]}
|
|
23
|
-
* ```
|
|
24
|
-
*
|
|
25
|
-
* @type {string[]}
|
|
26
|
-
* @memberof ControllerBase
|
|
27
|
-
*/
|
|
28
|
-
this.search = [];
|
|
29
|
-
}
|
|
30
|
-
cleanErrors(errors) {
|
|
31
|
-
const errorObject = {};
|
|
32
|
-
if (errors.errors) {
|
|
33
|
-
Object.keys(errors.errors).forEach((key) => {
|
|
34
|
-
errorObject[key] = errors.errors[key].message;
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
else if (typeof errors === 'object') {
|
|
38
|
-
if (errors.code === 11000) {
|
|
39
|
-
const message = errors.message.match(/index: (.*)_/i);
|
|
40
|
-
errorObject[message[1]] = `${message[1]}_duplicate`;
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
errorObject.error = errors.message;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
return errorObject;
|
|
47
|
-
}
|
|
48
|
-
handleError(error, res) {
|
|
49
|
-
handleError(error, res);
|
|
50
|
-
}
|
|
51
|
-
response(res, data, count) {
|
|
52
|
-
count || count === 0
|
|
53
|
-
? res.json({ data, count })
|
|
54
|
-
: res.json({ data, count: data.length });
|
|
55
|
-
}
|
|
56
|
-
static buildResponse(data, site, limit, hardLimit = 30) {
|
|
57
|
-
return {
|
|
58
|
-
data: data.data,
|
|
59
|
-
all: data.all,
|
|
60
|
-
sites: ControllerBase.getSites(+site, ControllerBase.getRealLimit(limit, hardLimit), data.all, data.count),
|
|
61
|
-
count: data.count,
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
static getLimit(site, limit, hardLimit) {
|
|
65
|
-
const realLimit = ControllerBase.getRealLimit(limit, hardLimit);
|
|
66
|
-
return {
|
|
67
|
-
skip: site * realLimit || 0,
|
|
68
|
-
limit: realLimit,
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
static getRealLimit(limit, hardLimit) {
|
|
72
|
-
let realLimit;
|
|
73
|
-
if (hardLimit) {
|
|
74
|
-
realLimit = limit > hardLimit ? hardLimit : limit;
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
realLimit = limit;
|
|
78
|
-
}
|
|
79
|
-
return realLimit;
|
|
80
|
-
}
|
|
81
|
-
getSort(sort, order) {
|
|
82
|
-
const sortObject = {};
|
|
83
|
-
if (sort && order) {
|
|
84
|
-
sortObject[sort] = order === '1' ? 1 : -1;
|
|
85
|
-
return sortObject;
|
|
86
|
-
}
|
|
87
|
-
return { _id: 1 };
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
* @param {number} site
|
|
93
|
-
* @param {number} limit
|
|
94
|
-
* @param {number} count all data count regardless of site
|
|
95
|
-
* @param {number} current current count of documents
|
|
96
|
-
* @returns {DatabaseQuerySites}
|
|
97
|
-
* @memberof ControllerBase
|
|
98
|
-
*/
|
|
99
|
-
static getSites(site, limit, count, current) {
|
|
100
|
-
const realSite = site - 1;
|
|
101
|
-
if (count === 0) {
|
|
102
|
-
return {
|
|
103
|
-
first: 0,
|
|
104
|
-
current: 0,
|
|
105
|
-
last: 0,
|
|
106
|
-
range: [0, 0],
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
return {
|
|
110
|
-
first: 1,
|
|
111
|
-
current: site || 1,
|
|
112
|
-
last: count ? Math.ceil(count / limit) : 1,
|
|
113
|
-
range: [
|
|
114
|
-
(realSite * limit) + 1 || 1,
|
|
115
|
-
realSite * limit + current || current,
|
|
116
|
-
],
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
exec() {
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
*
|
|
123
|
-
*
|
|
124
|
-
* @param {DatabaseQuery} query
|
|
125
|
-
* @param {string} [company]
|
|
126
|
-
* @param {string} [project]
|
|
127
|
-
* @param {DatabaseQueryOptions} [options]
|
|
128
|
-
* @returns
|
|
129
|
-
* @memberof ControllerBase
|
|
130
|
-
*/
|
|
131
|
-
buildQuery(query, company, project, options) {
|
|
132
|
-
const realQuery = { ...query };
|
|
133
|
-
const orArray = [];
|
|
134
|
-
let tags;
|
|
135
|
-
let category;
|
|
136
|
-
let keepTags = false;
|
|
137
|
-
let keepSearch = false;
|
|
138
|
-
let keepSort = false;
|
|
139
|
-
if (company)
|
|
140
|
-
realQuery.company = company;
|
|
141
|
-
if (project)
|
|
142
|
-
realQuery.project = project;
|
|
143
|
-
if (project === false)
|
|
144
|
-
realQuery.project = { $exists: false };
|
|
145
|
-
if (options) {
|
|
146
|
-
if (options.keepTags)
|
|
147
|
-
keepTags = true;
|
|
148
|
-
if (options.keepSearch)
|
|
149
|
-
keepSearch = true;
|
|
150
|
-
if (options.keepSort)
|
|
151
|
-
keepSort = true;
|
|
152
|
-
}
|
|
153
|
-
if (!keepSort) {
|
|
154
|
-
delete realQuery.sort;
|
|
155
|
-
delete realQuery.order;
|
|
156
|
-
}
|
|
157
|
-
if (query.partial !== undefined) {
|
|
158
|
-
realQuery.partial = query.partial
|
|
159
|
-
? true
|
|
160
|
-
: { $exists: false };
|
|
161
|
-
}
|
|
162
|
-
if (query.layout !== undefined) {
|
|
163
|
-
realQuery.layout = query.layout
|
|
164
|
-
? true
|
|
165
|
-
: { $exists: false };
|
|
166
|
-
}
|
|
167
|
-
if (query.available) {
|
|
168
|
-
realQuery.available = query.available === true || (query.available === 'true');
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* make sure tags are an array
|
|
172
|
-
*/
|
|
173
|
-
if (query.tags && !keepTags) {
|
|
174
|
-
if (!Array.isArray(query.tags)) {
|
|
175
|
-
tags = [query.tags];
|
|
176
|
-
}
|
|
177
|
-
else {
|
|
178
|
-
tags = query.tags;
|
|
179
|
-
}
|
|
180
|
-
realQuery.tags = { $in: tags };
|
|
181
|
-
}
|
|
182
|
-
if (query.category) {
|
|
183
|
-
if (!Array.isArray(query.category)) {
|
|
184
|
-
category = [query.category];
|
|
185
|
-
}
|
|
186
|
-
else {
|
|
187
|
-
category = query.category;
|
|
188
|
-
}
|
|
189
|
-
realQuery.category = { $in: category };
|
|
190
|
-
}
|
|
191
|
-
if (query.search && !keepSearch) {
|
|
192
|
-
if (this.search.length > 1) {
|
|
193
|
-
this.search.forEach((single) => {
|
|
194
|
-
orArray.push({ [single]: { $regex: query.search.toString().toLowerCase().trim(), $options: 'i' } });
|
|
195
|
-
});
|
|
196
|
-
realQuery.$or = orArray;
|
|
197
|
-
}
|
|
198
|
-
else {
|
|
199
|
-
realQuery[this.search[0]] = { $regex: query.search.toString().toLowerCase().trim(), $options: 'i' };
|
|
200
|
-
}
|
|
201
|
-
delete realQuery.search;
|
|
202
|
-
}
|
|
203
|
-
return realQuery;
|
|
204
|
-
}
|
|
205
|
-
/**
|
|
206
|
-
*
|
|
207
|
-
*
|
|
208
|
-
* @param {DatabaseQuery} query
|
|
209
|
-
* @param {string} select
|
|
210
|
-
* @param {number} site start counting at 1 instead of zero. no site / zero will be the same as 1
|
|
211
|
-
* @param {number} limit
|
|
212
|
-
* @param {Model<Document>} model
|
|
213
|
-
* @param {string} [sort]
|
|
214
|
-
* @param {string} [order]
|
|
215
|
-
* @returns
|
|
216
|
-
* @memberof ControllerBase
|
|
217
|
-
*/
|
|
218
|
-
async list(query, select, site, limit, model, sort, order) {
|
|
219
|
-
let realSelect;
|
|
220
|
-
const skipLimitSort = ControllerBase.getSkipLimitSort(site, limit, sort, order);
|
|
221
|
-
realSelect = this.selectDefault;
|
|
222
|
-
if (select) {
|
|
223
|
-
realSelect = { ...select, ...realSelect };
|
|
224
|
-
}
|
|
225
|
-
const all = await model.db.countDocuments(query);
|
|
226
|
-
const data = await model.db.find(query, { projection: realSelect })
|
|
227
|
-
.limit(skipLimitSort.limit)
|
|
228
|
-
.skip(skipLimitSort.skip)
|
|
229
|
-
.sort(skipLimitSort.sort)
|
|
230
|
-
.toArray();
|
|
231
|
-
return { data, all, count: data.length };
|
|
232
|
-
}
|
|
233
|
-
async listCustomQuery(queries, model) {
|
|
234
|
-
const all = await model.db.countDocuments(queries.countQuery);
|
|
235
|
-
const data = await model.db.aggregate(queries.aggregation)
|
|
236
|
-
.toArray();
|
|
237
|
-
return { all, data, count: data.length };
|
|
238
|
-
}
|
|
239
|
-
static getSkipLimitSort(site, limit, sort, order) {
|
|
240
|
-
let realSite = 0;
|
|
241
|
-
let realSort = {};
|
|
242
|
-
let sortKey;
|
|
243
|
-
/**
|
|
244
|
-
* see comment from this function
|
|
245
|
-
*/
|
|
246
|
-
if (site)
|
|
247
|
-
realSite = site - 1;
|
|
248
|
-
const skipLimit = ControllerBase.getLimit(realSite, limit, limit);
|
|
249
|
-
if (sort && order) {
|
|
250
|
-
if (sort === 'updated') {
|
|
251
|
-
sortKey = 'history.updated';
|
|
252
|
-
}
|
|
253
|
-
else if (sort === 'created') {
|
|
254
|
-
sortKey = 'history.created';
|
|
255
|
-
}
|
|
256
|
-
else
|
|
257
|
-
sortKey = sort;
|
|
258
|
-
realSort[sortKey] = +order;
|
|
259
|
-
}
|
|
260
|
-
else {
|
|
261
|
-
realSort = { _id: 1 };
|
|
262
|
-
}
|
|
263
|
-
return {
|
|
264
|
-
sort: realSort, ...skipLimit,
|
|
265
|
-
};
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
//# sourceMappingURL=ControllerBase.class.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ControllerBase.class.js","sourceRoot":"","sources":["../../../src/classes/ControllerBase.class.ts"],"names":[],"mappings":"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"}
|