digitaltwin-core 0.8.2 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth/auth_config.d.ts +5 -0
- package/dist/auth/auth_config.d.ts.map +1 -1
- package/dist/auth/auth_config.js +13 -4
- package/dist/auth/auth_config.js.map +1 -1
- package/dist/auth/user_service.d.ts.map +1 -1
- package/dist/auth/user_service.js +4 -1
- package/dist/auth/user_service.js.map +1 -1
- package/dist/components/assets_manager.d.ts.map +1 -1
- package/dist/components/assets_manager.js +27 -1
- package/dist/components/assets_manager.js.map +1 -1
- package/dist/components/custom_table_manager.d.ts +143 -2
- package/dist/components/custom_table_manager.d.ts.map +1 -1
- package/dist/components/custom_table_manager.js +326 -26
- package/dist/components/custom_table_manager.js.map +1 -1
- package/dist/components/handler.d.ts +70 -9
- package/dist/components/handler.d.ts.map +1 -1
- package/dist/components/handler.js +45 -6
- package/dist/components/handler.js.map +1 -1
- package/dist/components/harvester.d.ts +129 -20
- package/dist/components/harvester.d.ts.map +1 -1
- package/dist/components/harvester.js +134 -41
- package/dist/components/harvester.js.map +1 -1
- package/dist/components/interfaces.d.ts +108 -0
- package/dist/components/interfaces.d.ts.map +1 -1
- package/dist/components/interfaces.js +6 -0
- package/dist/components/interfaces.js.map +1 -1
- package/dist/components/map_manager.d.ts.map +1 -1
- package/dist/components/map_manager.js +9 -0
- package/dist/components/map_manager.js.map +1 -1
- package/dist/components/tileset_manager.d.ts.map +1 -1
- package/dist/components/tileset_manager.js +9 -0
- package/dist/components/tileset_manager.js.map +1 -1
- package/dist/database/adapters/knex_database_adapter.d.ts +15 -2
- package/dist/database/adapters/knex_database_adapter.d.ts.map +1 -1
- package/dist/database/adapters/knex_database_adapter.js +68 -12
- package/dist/database/adapters/knex_database_adapter.js.map +1 -1
- package/dist/database/database_adapter.d.ts +22 -0
- package/dist/database/database_adapter.d.ts.map +1 -1
- package/dist/database/database_adapter.js.map +1 -1
- package/dist/engine/digital_twin_engine.d.ts.map +1 -1
- package/dist/engine/digital_twin_engine.js +11 -7
- package/dist/engine/digital_twin_engine.js.map +1 -1
- package/dist/engine/endpoints.d.ts +39 -0
- package/dist/engine/endpoints.d.ts.map +1 -1
- package/dist/engine/endpoints.js +31 -0
- package/dist/engine/endpoints.js.map +1 -1
- package/dist/engine/events.d.ts +80 -0
- package/dist/engine/events.d.ts.map +1 -1
- package/dist/engine/events.js +60 -0
- package/dist/engine/events.js.map +1 -1
- package/dist/engine/initializer.d.ts +51 -0
- package/dist/engine/initializer.d.ts.map +1 -1
- package/dist/engine/initializer.js +72 -0
- package/dist/engine/initializer.js.map +1 -1
- package/dist/env/env.d.ts +101 -0
- package/dist/env/env.d.ts.map +1 -1
- package/dist/env/env.js +101 -0
- package/dist/env/env.js.map +1 -1
- package/dist/index.d.ts +19 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -1
- package/dist/index.js.map +1 -1
- package/dist/types/data_record.d.ts +65 -4
- package/dist/types/data_record.d.ts.map +1 -1
- package/dist/types/data_record.js +6 -0
- package/dist/types/data_record.js.map +1 -1
- package/dist/utils/servable_endpoint.d.ts +59 -2
- package/dist/utils/servable_endpoint.d.ts.map +1 -1
- package/dist/utils/servable_endpoint.js +51 -0
- package/dist/utils/servable_endpoint.js.map +1 -1
- package/dist/utils/zip_utils.js +1 -1
- package/dist/utils/zip_utils.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { UserService } from '../auth/user_service.js';
|
|
2
|
+
import { ApisixAuthParser } from '../auth/apisix_parser.js';
|
|
1
3
|
export class CustomTableManager {
|
|
2
4
|
/**
|
|
3
5
|
* Injects required dependencies into the custom table manager instance.
|
|
@@ -14,6 +16,7 @@ export class CustomTableManager {
|
|
|
14
16
|
*/
|
|
15
17
|
setDependencies(db) {
|
|
16
18
|
this.db = db;
|
|
19
|
+
this.userService = new UserService(db);
|
|
17
20
|
this.tableName = this.getConfiguration().name;
|
|
18
21
|
}
|
|
19
22
|
/**
|
|
@@ -21,6 +24,7 @@ export class CustomTableManager {
|
|
|
21
24
|
*
|
|
22
25
|
* Creates the table if it doesn't exist, with standard columns (id, created_at, updated_at)
|
|
23
26
|
* plus the custom columns defined in the configuration.
|
|
27
|
+
* Automatically adds an 'owner_id' column for user ownership tracking.
|
|
24
28
|
*
|
|
25
29
|
* @returns {Promise<void>}
|
|
26
30
|
*
|
|
@@ -32,8 +36,13 @@ export class CustomTableManager {
|
|
|
32
36
|
*/
|
|
33
37
|
async initializeTable() {
|
|
34
38
|
const config = this.getConfiguration();
|
|
39
|
+
// Add owner_id column automatically for user ownership
|
|
40
|
+
const columnsWithOwnership = {
|
|
41
|
+
owner_id: 'integer',
|
|
42
|
+
...config.columns
|
|
43
|
+
};
|
|
35
44
|
// Use the new createTableWithColumns method from DatabaseAdapter
|
|
36
|
-
await this.db.createTableWithColumns(config.name,
|
|
45
|
+
await this.db.createTableWithColumns(config.name, columnsWithOwnership);
|
|
37
46
|
}
|
|
38
47
|
/**
|
|
39
48
|
* Validate query conditions against requirements.
|
|
@@ -86,17 +95,8 @@ export class CustomTableManager {
|
|
|
86
95
|
* ```
|
|
87
96
|
*/
|
|
88
97
|
async create(data) {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
name: this.tableName,
|
|
92
|
-
type: 'custom_table_record',
|
|
93
|
-
url: '',
|
|
94
|
-
date: now,
|
|
95
|
-
...data
|
|
96
|
-
};
|
|
97
|
-
// Use the existing save method from DatabaseAdapter
|
|
98
|
-
const savedRecord = await this.db.save(record);
|
|
99
|
-
return savedRecord.id;
|
|
98
|
+
// Use the specialized method for custom tables
|
|
99
|
+
return await this.db.insertCustomTableRecord(this.tableName, data);
|
|
100
100
|
}
|
|
101
101
|
/**
|
|
102
102
|
* Find all records in the custom table.
|
|
@@ -110,13 +110,12 @@ export class CustomTableManager {
|
|
|
110
110
|
* ```
|
|
111
111
|
*/
|
|
112
112
|
async findAll() {
|
|
113
|
-
|
|
114
|
-
const
|
|
115
|
-
const records = await this.db.getByDateRange(this.tableName, veryOldDate, farFutureDate, 1000);
|
|
113
|
+
// Use specialized method for custom tables that returns raw rows
|
|
114
|
+
const records = await this.db.findCustomTableRecords(this.tableName, {});
|
|
116
115
|
return records.map(record => ({
|
|
117
116
|
id: record.id,
|
|
118
|
-
created_at: record.
|
|
119
|
-
updated_at: record.
|
|
117
|
+
created_at: new Date(record.created_at),
|
|
118
|
+
updated_at: new Date(record.updated_at),
|
|
120
119
|
...this.extractCustomFields(record)
|
|
121
120
|
}));
|
|
122
121
|
}
|
|
@@ -135,14 +134,14 @@ export class CustomTableManager {
|
|
|
135
134
|
* ```
|
|
136
135
|
*/
|
|
137
136
|
async findById(id) {
|
|
138
|
-
const record = await this.db.
|
|
137
|
+
const record = await this.db.getCustomTableRecordById(this.tableName, id);
|
|
139
138
|
if (!record) {
|
|
140
139
|
return null;
|
|
141
140
|
}
|
|
142
141
|
return {
|
|
143
142
|
id: record.id,
|
|
144
|
-
created_at: record.
|
|
145
|
-
updated_at: record.
|
|
143
|
+
created_at: new Date(record.created_at),
|
|
144
|
+
updated_at: new Date(record.updated_at),
|
|
146
145
|
...this.extractCustomFields(record)
|
|
147
146
|
};
|
|
148
147
|
}
|
|
@@ -215,11 +214,11 @@ export class CustomTableManager {
|
|
|
215
214
|
* ```
|
|
216
215
|
*/
|
|
217
216
|
async findByCondition(conditions) {
|
|
218
|
-
const records = await this.db.
|
|
217
|
+
const records = await this.db.findCustomTableRecords(this.tableName, conditions);
|
|
219
218
|
return records.map(record => ({
|
|
220
219
|
id: record.id,
|
|
221
|
-
created_at: record.
|
|
222
|
-
updated_at: record.
|
|
220
|
+
created_at: new Date(record.created_at),
|
|
221
|
+
updated_at: new Date(record.updated_at),
|
|
223
222
|
...this.extractCustomFields(record)
|
|
224
223
|
}));
|
|
225
224
|
}
|
|
@@ -297,11 +296,16 @@ export class CustomTableManager {
|
|
|
297
296
|
*
|
|
298
297
|
* @private
|
|
299
298
|
* @param {any} record - Database record
|
|
300
|
-
* @returns {Record<string, any>} Custom fields only
|
|
299
|
+
* @returns {Record<string, any>} Custom fields only (including owner_id)
|
|
301
300
|
*/
|
|
302
301
|
extractCustomFields(record) {
|
|
303
302
|
const config = this.getConfiguration();
|
|
304
303
|
const customFields = {};
|
|
304
|
+
// Add owner_id if present
|
|
305
|
+
if ('owner_id' in record) {
|
|
306
|
+
customFields.owner_id = record.owner_id;
|
|
307
|
+
}
|
|
308
|
+
// Add all configured custom columns
|
|
305
309
|
for (const columnName of Object.keys(config.columns)) {
|
|
306
310
|
if (columnName in record) {
|
|
307
311
|
customFields[columnName] = record[columnName];
|
|
@@ -309,6 +313,185 @@ export class CustomTableManager {
|
|
|
309
313
|
}
|
|
310
314
|
return customFields;
|
|
311
315
|
}
|
|
316
|
+
/**
|
|
317
|
+
* AUTHENTICATION HELPERS
|
|
318
|
+
* These methods help custom endpoints implement authentication and authorization.
|
|
319
|
+
*/
|
|
320
|
+
/**
|
|
321
|
+
* Authenticate a request and return the user record.
|
|
322
|
+
*
|
|
323
|
+
* Use this for endpoints that require authentication but don't need ownership checks.
|
|
324
|
+
*
|
|
325
|
+
* @protected
|
|
326
|
+
* @param {any} req - HTTP request object
|
|
327
|
+
* @returns {Promise<UserRecord | null>} User record if authenticated, null otherwise
|
|
328
|
+
*
|
|
329
|
+
* @example
|
|
330
|
+
* ```typescript
|
|
331
|
+
* async myCustomEndpoint(req: any): Promise<DataResponse> {
|
|
332
|
+
* const userRecord = await this.authenticateRequest(req)
|
|
333
|
+
* if (!userRecord) {
|
|
334
|
+
* return this.authErrorResponse()
|
|
335
|
+
* }
|
|
336
|
+
*
|
|
337
|
+
* // Use userRecord.id for your logic
|
|
338
|
+
* console.log(`User ${userRecord.id} is authenticated`)
|
|
339
|
+
* }
|
|
340
|
+
* ```
|
|
341
|
+
*/
|
|
342
|
+
async authenticateRequest(req) {
|
|
343
|
+
if (!ApisixAuthParser.hasValidAuth(req.headers || {})) {
|
|
344
|
+
return null;
|
|
345
|
+
}
|
|
346
|
+
const authUser = ApisixAuthParser.parseAuthHeaders(req.headers || {});
|
|
347
|
+
if (!authUser) {
|
|
348
|
+
return null;
|
|
349
|
+
}
|
|
350
|
+
const userRecord = await this.userService.findOrCreateUser(authUser);
|
|
351
|
+
if (!userRecord.id) {
|
|
352
|
+
return null;
|
|
353
|
+
}
|
|
354
|
+
return userRecord;
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Authenticate a request and verify the user owns the specified record.
|
|
358
|
+
*
|
|
359
|
+
* Use this for endpoints that modify or delete specific records.
|
|
360
|
+
*
|
|
361
|
+
* @protected
|
|
362
|
+
* @param {any} req - HTTP request object
|
|
363
|
+
* @param {number} recordId - ID of the record to check ownership for
|
|
364
|
+
* @returns {Promise<{ userRecord: UserRecord; record: CustomTableRecord } | null>}
|
|
365
|
+
* Both user and record if authenticated and owns the record, null otherwise
|
|
366
|
+
*
|
|
367
|
+
* @example
|
|
368
|
+
* ```typescript
|
|
369
|
+
* async deleteMyRecord(req: any): Promise<DataResponse> {
|
|
370
|
+
* const recordId = parseInt(req.params.id)
|
|
371
|
+
* const auth = await this.authenticateAndCheckOwnership(req, recordId)
|
|
372
|
+
*
|
|
373
|
+
* if (!auth) {
|
|
374
|
+
* return this.authErrorResponse()
|
|
375
|
+
* }
|
|
376
|
+
*
|
|
377
|
+
* if (auth.record.owner_id !== auth.userRecord.id) {
|
|
378
|
+
* return this.forbiddenErrorResponse()
|
|
379
|
+
* }
|
|
380
|
+
*
|
|
381
|
+
* await this.delete(recordId)
|
|
382
|
+
* return { status: 200, content: JSON.stringify({ message: 'Deleted' }) }
|
|
383
|
+
* }
|
|
384
|
+
* ```
|
|
385
|
+
*/
|
|
386
|
+
async authenticateAndCheckOwnership(req, recordId) {
|
|
387
|
+
const userRecord = await this.authenticateRequest(req);
|
|
388
|
+
if (!userRecord) {
|
|
389
|
+
return null;
|
|
390
|
+
}
|
|
391
|
+
const record = await this.findById(recordId);
|
|
392
|
+
if (!record) {
|
|
393
|
+
return null;
|
|
394
|
+
}
|
|
395
|
+
return { userRecord, record };
|
|
396
|
+
}
|
|
397
|
+
/**
|
|
398
|
+
* Get authenticated user from request, throwing an error response if not authenticated.
|
|
399
|
+
*
|
|
400
|
+
* Use this when authentication is required and you want to fail fast.
|
|
401
|
+
*
|
|
402
|
+
* @protected
|
|
403
|
+
* @param {any} req - HTTP request object
|
|
404
|
+
* @returns {Promise<UserRecord | DataResponse>} User record if authenticated, error response otherwise
|
|
405
|
+
*
|
|
406
|
+
* @example
|
|
407
|
+
* ```typescript
|
|
408
|
+
* async myProtectedEndpoint(req: any): Promise<DataResponse> {
|
|
409
|
+
* const userOrError = await this.requireAuthentication(req)
|
|
410
|
+
* if ('status' in userOrError) {
|
|
411
|
+
* return userOrError // Return error response
|
|
412
|
+
* }
|
|
413
|
+
*
|
|
414
|
+
* const userRecord = userOrError
|
|
415
|
+
* // Continue with authenticated user
|
|
416
|
+
* }
|
|
417
|
+
* ```
|
|
418
|
+
*/
|
|
419
|
+
async requireAuthentication(req) {
|
|
420
|
+
const userRecord = await this.authenticateRequest(req);
|
|
421
|
+
if (!userRecord) {
|
|
422
|
+
return this.authErrorResponse();
|
|
423
|
+
}
|
|
424
|
+
return userRecord;
|
|
425
|
+
}
|
|
426
|
+
/**
|
|
427
|
+
* Helper to return a 401 Unauthorized error response.
|
|
428
|
+
*
|
|
429
|
+
* @protected
|
|
430
|
+
* @param {string} message - Custom error message (default: "Authentication required")
|
|
431
|
+
* @returns {DataResponse} 401 error response
|
|
432
|
+
*
|
|
433
|
+
* @example
|
|
434
|
+
* ```typescript
|
|
435
|
+
* if (!userRecord) {
|
|
436
|
+
* return this.authErrorResponse()
|
|
437
|
+
* }
|
|
438
|
+
* ```
|
|
439
|
+
*/
|
|
440
|
+
authErrorResponse(message = 'Authentication required') {
|
|
441
|
+
return {
|
|
442
|
+
status: 401,
|
|
443
|
+
content: JSON.stringify({ error: message }),
|
|
444
|
+
headers: { 'Content-Type': 'application/json' }
|
|
445
|
+
};
|
|
446
|
+
}
|
|
447
|
+
/**
|
|
448
|
+
* Helper to return a 403 Forbidden error response.
|
|
449
|
+
*
|
|
450
|
+
* @protected
|
|
451
|
+
* @param {string} message - Custom error message (default: "You don't have permission to access this resource")
|
|
452
|
+
* @returns {DataResponse} 403 error response
|
|
453
|
+
*
|
|
454
|
+
* @example
|
|
455
|
+
* ```typescript
|
|
456
|
+
* if (record.owner_id !== userRecord.id) {
|
|
457
|
+
* return this.forbiddenErrorResponse('You can only modify your own records')
|
|
458
|
+
* }
|
|
459
|
+
* ```
|
|
460
|
+
*/
|
|
461
|
+
forbiddenErrorResponse(message = "You don't have permission to access this resource") {
|
|
462
|
+
return {
|
|
463
|
+
status: 403,
|
|
464
|
+
content: JSON.stringify({ error: message }),
|
|
465
|
+
headers: { 'Content-Type': 'application/json' }
|
|
466
|
+
};
|
|
467
|
+
}
|
|
468
|
+
/**
|
|
469
|
+
* Helper to check if a user owns a specific record.
|
|
470
|
+
*
|
|
471
|
+
* Returns false if the record doesn't have an owner_id (legacy records without ownership).
|
|
472
|
+
*
|
|
473
|
+
* @protected
|
|
474
|
+
* @param {CustomTableRecord} record - The record to check
|
|
475
|
+
* @param {UserRecord} userRecord - The user to check against
|
|
476
|
+
* @returns {boolean} True if user owns the record, false otherwise
|
|
477
|
+
*
|
|
478
|
+
* @example
|
|
479
|
+
* ```typescript
|
|
480
|
+
* const record = await this.findById(recordId)
|
|
481
|
+
* const userRecord = await this.authenticateRequest(req)
|
|
482
|
+
*
|
|
483
|
+
* if (!this.userOwnsRecord(record, userRecord)) {
|
|
484
|
+
* return this.forbiddenErrorResponse()
|
|
485
|
+
* }
|
|
486
|
+
* ```
|
|
487
|
+
*/
|
|
488
|
+
userOwnsRecord(record, userRecord) {
|
|
489
|
+
// If record doesn't have an owner_id, deny access for security
|
|
490
|
+
if (!record.owner_id) {
|
|
491
|
+
return false;
|
|
492
|
+
}
|
|
493
|
+
return record.owner_id === userRecord.id;
|
|
494
|
+
}
|
|
312
495
|
/**
|
|
313
496
|
* Get HTTP endpoints exposed by this custom table manager.
|
|
314
497
|
*
|
|
@@ -381,7 +564,7 @@ export class CustomTableManager {
|
|
|
381
564
|
/**
|
|
382
565
|
* Standard endpoint handlers for CRUD operations
|
|
383
566
|
*/
|
|
384
|
-
async handleGetAll(
|
|
567
|
+
async handleGetAll(_req) {
|
|
385
568
|
try {
|
|
386
569
|
const records = await this.findAll();
|
|
387
570
|
return {
|
|
@@ -402,6 +585,23 @@ export class CustomTableManager {
|
|
|
402
585
|
}
|
|
403
586
|
async handleCreate(req) {
|
|
404
587
|
try {
|
|
588
|
+
// Check authentication
|
|
589
|
+
if (!ApisixAuthParser.hasValidAuth(req.headers || {})) {
|
|
590
|
+
return {
|
|
591
|
+
status: 401,
|
|
592
|
+
content: JSON.stringify({ error: 'Authentication required' }),
|
|
593
|
+
headers: { 'Content-Type': 'application/json' }
|
|
594
|
+
};
|
|
595
|
+
}
|
|
596
|
+
// Parse authenticated user
|
|
597
|
+
const authUser = ApisixAuthParser.parseAuthHeaders(req.headers || {});
|
|
598
|
+
if (!authUser) {
|
|
599
|
+
return {
|
|
600
|
+
status: 401,
|
|
601
|
+
content: JSON.stringify({ error: 'Invalid authentication headers' }),
|
|
602
|
+
headers: { 'Content-Type': 'application/json' }
|
|
603
|
+
};
|
|
604
|
+
}
|
|
405
605
|
if (!req?.body) {
|
|
406
606
|
return {
|
|
407
607
|
status: 400,
|
|
@@ -409,7 +609,21 @@ export class CustomTableManager {
|
|
|
409
609
|
headers: { 'Content-Type': 'application/json' }
|
|
410
610
|
};
|
|
411
611
|
}
|
|
412
|
-
|
|
612
|
+
// Find or create user in database
|
|
613
|
+
const userRecord = await this.userService.findOrCreateUser(authUser);
|
|
614
|
+
if (!userRecord.id) {
|
|
615
|
+
return {
|
|
616
|
+
status: 500,
|
|
617
|
+
content: JSON.stringify({ error: 'Failed to retrieve user information' }),
|
|
618
|
+
headers: { 'Content-Type': 'application/json' }
|
|
619
|
+
};
|
|
620
|
+
}
|
|
621
|
+
// Add owner_id to the data
|
|
622
|
+
const dataWithOwner = {
|
|
623
|
+
...req.body,
|
|
624
|
+
owner_id: userRecord.id
|
|
625
|
+
};
|
|
626
|
+
const id = await this.create(dataWithOwner);
|
|
413
627
|
return {
|
|
414
628
|
status: 201,
|
|
415
629
|
content: JSON.stringify({ id, message: 'Record created successfully' }),
|
|
@@ -462,6 +676,23 @@ export class CustomTableManager {
|
|
|
462
676
|
}
|
|
463
677
|
async handleUpdate(req) {
|
|
464
678
|
try {
|
|
679
|
+
// Check authentication
|
|
680
|
+
if (!ApisixAuthParser.hasValidAuth(req.headers || {})) {
|
|
681
|
+
return {
|
|
682
|
+
status: 401,
|
|
683
|
+
content: JSON.stringify({ error: 'Authentication required' }),
|
|
684
|
+
headers: { 'Content-Type': 'application/json' }
|
|
685
|
+
};
|
|
686
|
+
}
|
|
687
|
+
// Parse authenticated user
|
|
688
|
+
const authUser = ApisixAuthParser.parseAuthHeaders(req.headers || {});
|
|
689
|
+
if (!authUser) {
|
|
690
|
+
return {
|
|
691
|
+
status: 401,
|
|
692
|
+
content: JSON.stringify({ error: 'Invalid authentication headers' }),
|
|
693
|
+
headers: { 'Content-Type': 'application/json' }
|
|
694
|
+
};
|
|
695
|
+
}
|
|
465
696
|
const { id } = req.params || {};
|
|
466
697
|
if (!id) {
|
|
467
698
|
return {
|
|
@@ -477,6 +708,32 @@ export class CustomTableManager {
|
|
|
477
708
|
headers: { 'Content-Type': 'application/json' }
|
|
478
709
|
};
|
|
479
710
|
}
|
|
711
|
+
// Find or create user in database
|
|
712
|
+
const userRecord = await this.userService.findOrCreateUser(authUser);
|
|
713
|
+
if (!userRecord.id) {
|
|
714
|
+
return {
|
|
715
|
+
status: 500,
|
|
716
|
+
content: JSON.stringify({ error: 'Failed to retrieve user information' }),
|
|
717
|
+
headers: { 'Content-Type': 'application/json' }
|
|
718
|
+
};
|
|
719
|
+
}
|
|
720
|
+
// Check if record exists and belongs to this user
|
|
721
|
+
const existingRecord = await this.findById(parseInt(id));
|
|
722
|
+
if (!existingRecord) {
|
|
723
|
+
return {
|
|
724
|
+
status: 404,
|
|
725
|
+
content: JSON.stringify({ error: 'Record not found' }),
|
|
726
|
+
headers: { 'Content-Type': 'application/json' }
|
|
727
|
+
};
|
|
728
|
+
}
|
|
729
|
+
// Check ownership (only owner can modify their records)
|
|
730
|
+
if (!existingRecord.owner_id || existingRecord.owner_id !== userRecord.id) {
|
|
731
|
+
return {
|
|
732
|
+
status: 403,
|
|
733
|
+
content: JSON.stringify({ error: 'You can only modify your own records' }),
|
|
734
|
+
headers: { 'Content-Type': 'application/json' }
|
|
735
|
+
};
|
|
736
|
+
}
|
|
480
737
|
await this.update(parseInt(id), req.body);
|
|
481
738
|
return {
|
|
482
739
|
status: 200,
|
|
@@ -496,6 +753,23 @@ export class CustomTableManager {
|
|
|
496
753
|
}
|
|
497
754
|
async handleDelete(req) {
|
|
498
755
|
try {
|
|
756
|
+
// Check authentication
|
|
757
|
+
if (!ApisixAuthParser.hasValidAuth(req.headers || {})) {
|
|
758
|
+
return {
|
|
759
|
+
status: 401,
|
|
760
|
+
content: JSON.stringify({ error: 'Authentication required' }),
|
|
761
|
+
headers: { 'Content-Type': 'application/json' }
|
|
762
|
+
};
|
|
763
|
+
}
|
|
764
|
+
// Parse authenticated user
|
|
765
|
+
const authUser = ApisixAuthParser.parseAuthHeaders(req.headers || {});
|
|
766
|
+
if (!authUser) {
|
|
767
|
+
return {
|
|
768
|
+
status: 401,
|
|
769
|
+
content: JSON.stringify({ error: 'Invalid authentication headers' }),
|
|
770
|
+
headers: { 'Content-Type': 'application/json' }
|
|
771
|
+
};
|
|
772
|
+
}
|
|
499
773
|
const { id } = req.params || {};
|
|
500
774
|
if (!id) {
|
|
501
775
|
return {
|
|
@@ -504,6 +778,32 @@ export class CustomTableManager {
|
|
|
504
778
|
headers: { 'Content-Type': 'application/json' }
|
|
505
779
|
};
|
|
506
780
|
}
|
|
781
|
+
// Find or create user in database
|
|
782
|
+
const userRecord = await this.userService.findOrCreateUser(authUser);
|
|
783
|
+
if (!userRecord.id) {
|
|
784
|
+
return {
|
|
785
|
+
status: 500,
|
|
786
|
+
content: JSON.stringify({ error: 'Failed to retrieve user information' }),
|
|
787
|
+
headers: { 'Content-Type': 'application/json' }
|
|
788
|
+
};
|
|
789
|
+
}
|
|
790
|
+
// Check if record exists and belongs to this user
|
|
791
|
+
const existingRecord = await this.findById(parseInt(id));
|
|
792
|
+
if (!existingRecord) {
|
|
793
|
+
return {
|
|
794
|
+
status: 404,
|
|
795
|
+
content: JSON.stringify({ error: 'Record not found' }),
|
|
796
|
+
headers: { 'Content-Type': 'application/json' }
|
|
797
|
+
};
|
|
798
|
+
}
|
|
799
|
+
// Check ownership (only owner can delete their records)
|
|
800
|
+
if (!existingRecord.owner_id || existingRecord.owner_id !== userRecord.id) {
|
|
801
|
+
return {
|
|
802
|
+
status: 403,
|
|
803
|
+
content: JSON.stringify({ error: 'You can only delete your own records' }),
|
|
804
|
+
headers: { 'Content-Type': 'application/json' }
|
|
805
|
+
};
|
|
806
|
+
}
|
|
507
807
|
await this.delete(parseInt(id));
|
|
508
808
|
return {
|
|
509
809
|
status: 200,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom_table_manager.js","sourceRoot":"","sources":["../../src/components/custom_table_manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"custom_table_manager.js","sourceRoot":"","sources":["../../src/components/custom_table_manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,31 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Handler component base class for HTTP endpoint providers
|
|
3
|
+
*
|
|
4
|
+
* Handlers are lightweight, stateless components that expose HTTP endpoints
|
|
5
|
+
* for on-demand data access, computation, or utility services within the digital twin.
|
|
6
|
+
*/
|
|
1
7
|
import type { Component, Servable } from './interfaces.js';
|
|
2
8
|
import type { ComponentConfiguration } from './types.js';
|
|
3
9
|
import type { DataResponse } from './types.js';
|
|
4
10
|
import type { HttpMethod } from '../engine/endpoints.js';
|
|
5
11
|
/**
|
|
6
|
-
*
|
|
12
|
+
* Runtime descriptor for an HTTP endpoint handler.
|
|
13
|
+
*
|
|
14
|
+
* Represents a fully resolved endpoint with its bound handler function,
|
|
15
|
+
* ready for registration with the Express router.
|
|
7
16
|
*/
|
|
8
17
|
type EndpointDescriptor = {
|
|
18
|
+
/** HTTP method for the endpoint */
|
|
9
19
|
method: HttpMethod;
|
|
20
|
+
/** URL path pattern */
|
|
10
21
|
path: string;
|
|
22
|
+
/** Response content type */
|
|
11
23
|
responseType?: string;
|
|
24
|
+
/** Bound handler function */
|
|
12
25
|
handler: (...args: any[]) => Promise<DataResponse>;
|
|
13
26
|
};
|
|
14
27
|
/**
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
28
|
+
* Abstract base class for Handler components.
|
|
29
|
+
*
|
|
30
|
+
* Handlers are lightweight, stateless components that expose HTTP endpoints
|
|
31
|
+
* for on-demand data access, computation, or utility services. Unlike Collectors
|
|
32
|
+
* and Harvesters, they don't run on schedules but respond to HTTP requests.
|
|
33
|
+
*
|
|
34
|
+
* Key features:
|
|
35
|
+
* - Expose HTTP endpoints using the @servableEndpoint decorator
|
|
36
|
+
* - Stateless operation (no database or storage dependencies by default)
|
|
37
|
+
* - Suitable for real-time computations, data queries, or API proxies
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```typescript
|
|
41
|
+
* class CalculatorHandler extends Handler {
|
|
42
|
+
* getConfiguration() {
|
|
43
|
+
* return {
|
|
44
|
+
* name: 'calculator-handler',
|
|
45
|
+
* type: 'handler',
|
|
46
|
+
* contentType: 'application/json'
|
|
47
|
+
* };
|
|
48
|
+
* }
|
|
49
|
+
*
|
|
50
|
+
* @servableEndpoint({ path: '/api/calculate/sum', method: 'post' })
|
|
51
|
+
* async calculateSum(req: Request) {
|
|
52
|
+
* const { a, b } = req.body;
|
|
53
|
+
* return {
|
|
54
|
+
* status: 200,
|
|
55
|
+
* content: { result: a + b }
|
|
56
|
+
* };
|
|
57
|
+
* }
|
|
58
|
+
* }
|
|
59
|
+
* ```
|
|
18
60
|
*/
|
|
19
61
|
export declare abstract class Handler implements Component, Servable {
|
|
20
62
|
/**
|
|
21
|
-
* Returns the
|
|
22
|
-
*
|
|
63
|
+
* Returns the handler's configuration.
|
|
64
|
+
*
|
|
65
|
+
* Implementations must provide basic component information including
|
|
66
|
+
* name, type, and default content type for responses.
|
|
67
|
+
*
|
|
68
|
+
* @returns Component configuration object
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```typescript
|
|
72
|
+
* getConfiguration() {
|
|
73
|
+
* return {
|
|
74
|
+
* name: 'my-handler',
|
|
75
|
+
* type: 'handler',
|
|
76
|
+
* contentType: 'application/json'
|
|
77
|
+
* };
|
|
78
|
+
* }
|
|
79
|
+
* ```
|
|
23
80
|
*/
|
|
24
81
|
abstract getConfiguration(): ComponentConfiguration;
|
|
25
82
|
/**
|
|
26
|
-
* Resolves and returns
|
|
27
|
-
*
|
|
28
|
-
*
|
|
83
|
+
* Resolves and returns HTTP endpoints defined on this handler.
|
|
84
|
+
*
|
|
85
|
+
* Automatically discovers endpoints declared with the @servableEndpoint
|
|
86
|
+
* decorator and creates bound handler functions for registration with
|
|
87
|
+
* the Express router.
|
|
88
|
+
*
|
|
89
|
+
* @returns Array of endpoint descriptors with bound handler functions
|
|
29
90
|
*/
|
|
30
91
|
getEndpoints(): EndpointDescriptor[];
|
|
31
92
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/components/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/components/handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAsBxD;;;;;GAKG;AACH,KAAK,kBAAkB,GAAG;IACtB,mCAAmC;IACnC,MAAM,EAAE,UAAU,CAAA;IAElB,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAA;IAEZ,4BAA4B;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB,6BAA6B;IAC7B,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,YAAY,CAAC,CAAA;CACrD,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,8BAAsB,OAAQ,YAAW,SAAS,EAAE,QAAQ;IACxD;;;;;;;;;;;;;;;;;;OAkBG;IACH,QAAQ,CAAC,gBAAgB,IAAI,sBAAsB;IAEnD;;;;;;;;OAQG;IACH,YAAY,IAAI,kBAAkB,EAAE;CAevC"}
|