@futdevpro/nts-dynamo 1.14.75 → 1.14.77

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.
Files changed (33) hide show
  1. package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.d.ts +1 -0
  2. package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.d.ts.map +1 -1
  3. package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.js +6 -0
  4. package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.js.map +1 -1
  5. package/build/_modules/defaults/_collections/default-endpoints.util.d.ts +237 -0
  6. package/build/_modules/defaults/_collections/default-endpoints.util.d.ts.map +1 -0
  7. package/build/_modules/defaults/_collections/default-endpoints.util.js +299 -0
  8. package/build/_modules/defaults/_collections/default-endpoints.util.js.map +1 -0
  9. package/build/_modules/defaults/index.d.ts +1 -0
  10. package/build/_modules/defaults/index.d.ts.map +1 -1
  11. package/build/_modules/defaults/index.js +2 -0
  12. package/build/_modules/defaults/index.js.map +1 -1
  13. package/build/_services/base/data.service.d.ts +7 -0
  14. package/build/_services/base/data.service.d.ts.map +1 -1
  15. package/build/_services/base/data.service.js +199 -86
  16. package/build/_services/base/data.service.js.map +1 -1
  17. package/build/_services/route/controller.service.d.ts +18 -0
  18. package/build/_services/route/controller.service.d.ts.map +1 -1
  19. package/build/_services/route/controller.service.js +18 -0
  20. package/build/_services/route/controller.service.js.map +1 -1
  21. package/build/_services/server/app.server.d.ts.map +1 -1
  22. package/build/_services/server/app.server.js +1 -0
  23. package/build/_services/server/app.server.js.map +1 -1
  24. package/build/_services/shared.static-service.spec.js +1 -7
  25. package/build/_services/shared.static-service.spec.js.map +1 -1
  26. package/package.json +4 -4
  27. package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.ts +8 -0
  28. package/src/_modules/defaults/_collections/default-endpoints.util.ts +372 -0
  29. package/src/_modules/defaults/index.ts +3 -0
  30. package/src/_services/base/data.service.ts +205 -87
  31. package/src/_services/route/controller.service.ts +18 -0
  32. package/src/_services/server/app.server.ts +1 -0
  33. package/src/_services/shared.static-service.spec.ts +1 -10
@@ -0,0 +1,372 @@
1
+ import { Request, Response } from 'express';
2
+
3
+ import { DyFM_HttpCallType, DyFM_Metadata, DyFM_SearchResult } from '@futdevpro/fsm-dynamo';
4
+
5
+ import { DyNTS_DataService } from '../../../_services/base/data.service';
6
+ import { DyNTS_Endpoint_Params } from '../../../_models/control-models/endpoint-params.control-model';
7
+
8
+ /**
9
+ * Alapértelmezett endpoint-ok létrehozásához használt utility class.
10
+ * Az Organizer Modules mintáját követve generálja a standard CRUD endpoint-okat.
11
+ *
12
+ * @see {@link DyNTS_Controller} - A controller-ben használható a setupEndpoints metódusban
13
+ */
14
+ export class DyNTS_DefaultEndpoints_Util {
15
+
16
+ /**
17
+ * GET endpoint létrehozása egy adott ID alapján történő adatlekéréshez.
18
+ *
19
+ * @param set.entityName - Az entitás neve (pl. "Task", "Note"),
20
+ * ebből generálódik az endpoint neve és az ID paraméter neve
21
+ * @param set.dataServiceClass - A DataService osztály konstruktora
22
+ * @param set.endpointPath - Az endpoint path (pl. '/:userId/task/get/:taskId')
23
+ * @param set.authService - Az auth service, amely tartalmazza az
24
+ * authenticate_tokenSelf metódust
25
+ * @param set.idParamName - Az ID paraméter neve a request-ben
26
+ * (opcionális, alapértelmezetten: {entityName.toLowerCase()}Id)
27
+ * @returns DyNTS_Endpoint_Params instance a GET endpoint-hoz
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * const getEndpoint = DyNTS_DefaultEndpoints_Util.getGetEndpoint({
32
+ * entityName: 'Task',
33
+ * dataServiceClass: Task_DataService,
34
+ * endpointPath: FDP_organizerApiEnv_endpoints.tasks.task.getTask,
35
+ * authService: this.auth_CS,
36
+ * });
37
+ * ```
38
+ */
39
+ static getGetEndpoint<T_Data extends DyFM_Metadata>(
40
+ set: {
41
+ entityName: string;
42
+ dataServiceClass: new (set: { data?: T_Data; issuer: string }) => DyNTS_DataService<T_Data>;
43
+ endpointPath: string;
44
+ authService: { authenticate_tokenSelf: (req: Request, res: Response) => Promise<void> };
45
+ idParamName?: string;
46
+ }
47
+ ): DyNTS_Endpoint_Params {
48
+ const idParamName: string = set.idParamName ?? `${set.entityName.toLowerCase()}Id`;
49
+ const endpointName: string = `get${set.entityName}`;
50
+
51
+ return new DyNTS_Endpoint_Params({
52
+ name: endpointName,
53
+ type: DyFM_HttpCallType.get,
54
+ endpoint: set.endpointPath,
55
+ preProcesses: [set.authService.authenticate_tokenSelf],
56
+ tasks: [
57
+ async (req: Request, res: Response, issuer: string): Promise<void> => {
58
+ const dataService: DyNTS_DataService<T_Data> = new set.dataServiceClass({
59
+ issuer: issuer,
60
+ });
61
+
62
+ const data: T_Data = await dataService.getDataById(req.params[idParamName]);
63
+
64
+ res.send(dataService.getProvidedData(data));
65
+ },
66
+ ],
67
+ });
68
+ }
69
+
70
+ /**
71
+ * POST endpoint létrehozása adatok kereséséhez.
72
+ *
73
+ * @param set.entityName - Az entitás neve (pl. "Task", "Note"),
74
+ * ebből generálódik az endpoint neve
75
+ * @param set.dataServiceClass - A DataService osztály konstruktora
76
+ * @param set.endpointPath - Az endpoint path (pl. '/:userId/tasks/search')
77
+ * @param set.authService - Az auth service, amely tartalmazza az
78
+ * authenticate_tokenSelf metódust
79
+ * @returns DyNTS_Endpoint_Params instance a POST search endpoint-hoz
80
+ *
81
+ * @example
82
+ * ```typescript
83
+ * const searchEndpoint = DyNTS_DefaultEndpoints_Util.getSearchEndpoint({
84
+ * entityName: 'Task',
85
+ * dataServiceClass: Task_DataService,
86
+ * endpointPath: FDP_organizerApiEnv_endpoints.tasks.task.searchTasks,
87
+ * authService: this.auth_CS,
88
+ * });
89
+ * ```
90
+ */
91
+ static getSearchEndpoint<T_Data extends DyFM_Metadata>(
92
+ set: {
93
+ entityName: string;
94
+ dataServiceClass: new (set: { data?: T_Data; issuer: string }) => DyNTS_DataService<T_Data>;
95
+ endpointPath: string;
96
+ authService: { authenticate_tokenSelf: (req: Request, res: Response) => Promise<void> };
97
+ }
98
+ ): DyNTS_Endpoint_Params {
99
+ const endpointName: string = `search${set.entityName}s`;
100
+
101
+ return new DyNTS_Endpoint_Params({
102
+ name: endpointName,
103
+ type: DyFM_HttpCallType.post,
104
+ endpoint: set.endpointPath,
105
+ preProcesses: [set.authService.authenticate_tokenSelf],
106
+ tasks: [
107
+ async (req: Request, res: Response, issuer: string): Promise<void> => {
108
+ const dataService: DyNTS_DataService<T_Data> = new set.dataServiceClass({
109
+ issuer: issuer,
110
+ });
111
+
112
+ const searchResults: DyFM_SearchResult<T_Data> = await dataService.searchData(req.body);
113
+
114
+ searchResults.results = searchResults.results.map((data: T_Data): T_Data => {
115
+ return dataService.getProvidedData(data);
116
+ });
117
+
118
+ res.send(searchResults);
119
+ },
120
+ ],
121
+ });
122
+ }
123
+
124
+ /**
125
+ * POST endpoint létrehozása adatok módosításához vagy létrehozásához.
126
+ * A modify végpontok mindig create végpontok is egyben.
127
+ *
128
+ * @param set.entityName - Az entitás neve (pl. "Task", "Note"),
129
+ * ebből generálódik az endpoint neve
130
+ * @param set.dataServiceClass - A DataService osztály konstruktora
131
+ * @param set.endpointPath - Az endpoint path (pl. '/:userId/task/modify')
132
+ * @param set.authService - Az auth service, amely tartalmazza az
133
+ * authenticate_tokenSelf metódust
134
+ * @returns DyNTS_Endpoint_Params instance a POST modify endpoint-hoz
135
+ *
136
+ * @example
137
+ * ```typescript
138
+ * const modifyEndpoint = DyNTS_DefaultEndpoints_Util.getModifyEndpoint({
139
+ * entityName: 'Task',
140
+ * dataServiceClass: Task_DataService,
141
+ * endpointPath: FDP_organizerApiEnv_endpoints.tasks.task.modifyTask,
142
+ * authService: this.auth_CS,
143
+ * });
144
+ * ```
145
+ */
146
+ static getModifyEndpoint<T_Data extends DyFM_Metadata>(
147
+ set: {
148
+ entityName: string;
149
+ dataServiceClass: new (set: { data?: T_Data; issuer: string }) => DyNTS_DataService<T_Data>;
150
+ endpointPath: string;
151
+ authService: { authenticate_tokenSelf: (req: Request, res: Response) => Promise<void> };
152
+ }
153
+ ): DyNTS_Endpoint_Params {
154
+ const endpointName: string = `modify${set.entityName}`;
155
+
156
+ return new DyNTS_Endpoint_Params({
157
+ name: endpointName,
158
+ type: DyFM_HttpCallType.post,
159
+ endpoint: set.endpointPath,
160
+ preProcesses: [set.authService.authenticate_tokenSelf],
161
+ tasks: [
162
+ async (req: Request, res: Response, issuer: string): Promise<void> => {
163
+ const dataService: DyNTS_DataService<T_Data> = new set.dataServiceClass({
164
+ issuer: issuer,
165
+ });
166
+
167
+ const data: T_Data = await dataService.saveData(req.body);
168
+
169
+ res.send(dataService.getProvidedData(data));
170
+ },
171
+ ],
172
+ });
173
+ }
174
+
175
+ /**
176
+ * DELETE endpoint létrehozása egy adott ID alapján történő adattörléshez.
177
+ *
178
+ * @param set.entityName - Az entitás neve (pl. "Task", "Note"),
179
+ * ebből generálódik az endpoint neve és az ID paraméter neve
180
+ * @param set.dataServiceClass - A DataService osztály konstruktora
181
+ * @param set.endpointPath - Az endpoint path (pl. '/:userId/task/delete/:taskId')
182
+ * @param set.authService - Az auth service, amely tartalmazza az
183
+ * authenticate_tokenSelf metódust
184
+ * @param set.idParamName - Az ID paraméter neve a request-ben
185
+ * (opcionális, alapértelmezetten: {entityName.toLowerCase()}Id)
186
+ * @returns DyNTS_Endpoint_Params instance a DELETE endpoint-hoz
187
+ *
188
+ * @example
189
+ * ```typescript
190
+ * const deleteEndpoint = DyNTS_DefaultEndpoints_Util.getDeleteEndpoint({
191
+ * entityName: 'Task',
192
+ * dataServiceClass: Task_DataService,
193
+ * endpointPath: FDP_organizerApiEnv_endpoints.tasks.task.deleteTask,
194
+ * authService: this.auth_CS,
195
+ * });
196
+ * ```
197
+ */
198
+ static getDeleteEndpoint<T_Data extends DyFM_Metadata>(
199
+ set: {
200
+ entityName: string;
201
+ dataServiceClass: new (set: { data?: T_Data; issuer: string }) => DyNTS_DataService<T_Data>;
202
+ endpointPath: string;
203
+ authService: { authenticate_tokenSelf: (req: Request, res: Response) => Promise<void> };
204
+ idParamName?: string;
205
+ }
206
+ ): DyNTS_Endpoint_Params {
207
+ const idParamName: string = set.idParamName ?? `${set.entityName.toLowerCase()}Id`;
208
+ const endpointName: string = `delete${set.entityName}`;
209
+
210
+ return new DyNTS_Endpoint_Params({
211
+ name: endpointName,
212
+ type: DyFM_HttpCallType.delete,
213
+ endpoint: set.endpointPath,
214
+ preProcesses: [set.authService.authenticate_tokenSelf],
215
+ tasks: [
216
+ async (req: Request, res: Response, issuer: string): Promise<void> => {
217
+ const dataService: DyNTS_DataService<T_Data> = new set.dataServiceClass({
218
+ issuer: issuer,
219
+ });
220
+
221
+ await dataService.deleteData(req.params[idParamName]);
222
+
223
+ res.send({ result: 'deleted' });
224
+ },
225
+ ],
226
+ });
227
+ }
228
+
229
+ /**
230
+ * PATCH endpoint létrehozása részleges adatmódosításhoz.
231
+ * A PATCH endpoint csak a megadott mezőket módosítja, nem cseréli le az egész objektumot.
232
+ *
233
+ * @param set.entityName - Az entitás neve (pl. "Task", "Note"),
234
+ * ebből generálódik az endpoint neve
235
+ * @param set.dataServiceClass - A DataService osztály konstruktora
236
+ * @param set.endpointPath - Az endpoint path (pl. '/:userId/task/patch')
237
+ * @param set.authService - Az auth service, amely tartalmazza az
238
+ * authenticate_tokenSelf metódust
239
+ * @returns DyNTS_Endpoint_Params instance a PATCH endpoint-hoz
240
+ *
241
+ * @example
242
+ * ```typescript
243
+ * const patchEndpoint = DyNTS_DefaultEndpoints_Util.getPatchEndpoint({
244
+ * entityName: 'Task',
245
+ * dataServiceClass: Task_DataService,
246
+ * endpointPath: '/:userId/task/patch',
247
+ * authService: this.auth_CS,
248
+ * });
249
+ * ```
250
+ */
251
+ static getPatchEndpoint<T_Data extends DyFM_Metadata>(
252
+ set: {
253
+ entityName: string;
254
+ dataServiceClass: new (set: { data?: T_Data; issuer: string }) => DyNTS_DataService<T_Data>;
255
+ endpointPath: string;
256
+ authService: { authenticate_tokenSelf: (req: Request, res: Response) => Promise<void> };
257
+ }
258
+ ): DyNTS_Endpoint_Params {
259
+ const endpointName: string = `patch${set.entityName}`;
260
+
261
+ return new DyNTS_Endpoint_Params({
262
+ name: endpointName,
263
+ type: DyFM_HttpCallType.patch,
264
+ endpoint: set.endpointPath,
265
+ preProcesses: [set.authService.authenticate_tokenSelf],
266
+ tasks: [
267
+ async (req: Request, res: Response, issuer: string): Promise<void> => {
268
+ const dataService: DyNTS_DataService<T_Data> = new set.dataServiceClass({
269
+ issuer: issuer,
270
+ });
271
+
272
+ const data: T_Data = await dataService.patchData(req.body);
273
+
274
+ res.send(dataService.getProvidedData(data));
275
+ },
276
+ ],
277
+ });
278
+ }
279
+
280
+ /**
281
+ * Összes alapértelmezett endpoint létrehozása egy lépésben.
282
+ * Visszaadja a GET, SEARCH, MODIFY, PATCH és DELETE endpoint-okat egy tömbben.
283
+ *
284
+ * @param set.entityName - Az entitás neve (pl. "Task", "Note")
285
+ * @param set.dataServiceClass - A DataService osztály konstruktora
286
+ * @param set.endpoints - Az endpoint path-ek objektuma
287
+ * @param set.endpoints.get - GET endpoint path
288
+ * @param set.endpoints.search - SEARCH endpoint path
289
+ * @param set.endpoints.modify - MODIFY endpoint path
290
+ * @param set.endpoints.patch - PATCH endpoint path (opcionális)
291
+ * @param set.endpoints.delete - DELETE endpoint path
292
+ * @param set.authService - Az auth service, amely tartalmazza az
293
+ * authenticate_tokenSelf metódust
294
+ * @param set.idParamName - Az ID paraméter neve a request-ben
295
+ * (opcionális, alapértelmezetten: {entityName.toLowerCase()}Id)
296
+ * @returns DyNTS_Endpoint_Params tömb az összes alapértelmezett endpoint-tal
297
+ *
298
+ * @example
299
+ * ```typescript
300
+ * setupEndpoints(): void {
301
+ * this.endpoints = [
302
+ * ...DyNTS_DefaultEndpoints_Util.getAllDefaultEndpoints({
303
+ * entityName: 'Task',
304
+ * dataServiceClass: Task_DataService,
305
+ * endpoints: {
306
+ * get: FDP_organizerApiEnv_endpoints.tasks.task.getTask,
307
+ * search: FDP_organizerApiEnv_endpoints.tasks.task.searchTasks,
308
+ * modify: FDP_organizerApiEnv_endpoints.tasks.task.modifyTask,
309
+ * patch: '/:userId/task/patch',
310
+ * delete: FDP_organizerApiEnv_endpoints.tasks.task.deleteTask,
311
+ * },
312
+ * authService: this.auth_CS,
313
+ * }),
314
+ * ];
315
+ * }
316
+ * ```
317
+ */
318
+ static getAllDefaultEndpoints<T_Data extends DyFM_Metadata>(
319
+ set: {
320
+ entityName: string;
321
+ dataServiceClass: new (set: { data?: T_Data; issuer: string }) => DyNTS_DataService<T_Data>;
322
+ endpoints: {
323
+ get: string;
324
+ search?: string;
325
+ modify: string;
326
+ patch?: string;
327
+ delete?: string;
328
+ };
329
+ authService: { authenticate_tokenSelf: (req: Request, res: Response) => Promise<void> };
330
+ idParamName?: string;
331
+ }
332
+ ): DyNTS_Endpoint_Params[] {
333
+ return [
334
+ this.getGetEndpoint<T_Data>({
335
+ entityName: set.entityName,
336
+ dataServiceClass: set.dataServiceClass,
337
+ endpointPath: set.endpoints.get,
338
+ authService: set.authService,
339
+ idParamName: set.idParamName,
340
+ }),
341
+ this.getSearchEndpoint<T_Data>({
342
+ entityName: set.entityName,
343
+ dataServiceClass: set.dataServiceClass,
344
+ endpointPath: set.endpoints.search,
345
+ authService: set.authService,
346
+ }),
347
+ this.getModifyEndpoint<T_Data>({
348
+ entityName: set.entityName,
349
+ dataServiceClass: set.dataServiceClass,
350
+ endpointPath: set.endpoints.modify,
351
+ authService: set.authService,
352
+ }),
353
+ ...(set.endpoints.patch ? [
354
+ this.getPatchEndpoint<T_Data>({
355
+ entityName: set.entityName,
356
+ dataServiceClass: set.dataServiceClass,
357
+ endpointPath: set.endpoints.patch,
358
+ authService: set.authService,
359
+ }),
360
+ ] : []),
361
+ ...(set.endpoints.delete ? [
362
+ this.getDeleteEndpoint<T_Data>({
363
+ entityName: set.entityName,
364
+ dataServiceClass: set.dataServiceClass,
365
+ endpointPath: set.endpoints.delete,
366
+ authService: set.authService,
367
+ idParamName: set.idParamName,
368
+ }),
369
+ ] : []),
370
+ ];
371
+ }
372
+ }
@@ -5,6 +5,9 @@
5
5
  // Can be extended or replaced with custom implementations
6
6
  //
7
7
 
8
+ // COLLECTIONS
9
+ export * from './_collections/default-endpoints.util';
10
+
8
11
  // MODELS
9
12
  export * from './_models/default-user.data-model';
10
13