فهرست منبع

dev: add support for an "any" interface

Driver interfaces don't require specifying the structure of the return
value when it's a JSON object, but parameters require specifying what
parameters can be provided. This commit adds a special wildcard
parameter for interface definitions. When the wildcard parameter is set,
the entire input object is considered as if it were the value of one
parameter.
KernelDeimos 1 ماه پیش
والد
کامیت
017328420d
1فایلهای تغییر یافته به همراه8 افزوده شده و 1 حذف شده
  1. 8 1
      src/backend/src/services/drivers/DriverService.js

+ 8 - 1
src/backend/src/services/drivers/DriverService.js

@@ -517,7 +517,7 @@ class DriverService extends BaseService {
         }
         
         for ( const [arg_name, arg_descriptor] of Object.entries(method.parameters) ) {
-            const arg_value = args[arg_name];
+            const arg_value = arg_name === '*' ? args : args[arg_name];
             const arg_behaviour = c_types.get(arg_descriptor.type);
 
             // TODO: eventually put this in arg behaviour base class.
@@ -545,6 +545,13 @@ class DriverService extends BaseService {
                 });
             }
         }
+        
+        if ( typeof processed_args['*'] ==='object' ) {
+            for ( const k in processed_args['*'] ) {
+                processed_args[k] = processed_args['*'][k];
+            }
+            delete processed_args['*'];
+        }
 
         return processed_args;
     }