Refactor VM and Plugin Management
- Removed the `plugins.constants.ts` file as it was no longer needed. - Updated the `vm.class.ts` to improve result handling and logging. - Introduced `vm.constants.ts` to manage registered plugins and modules. - Simplified the test payload in `case1-payload.js` by removing unnecessary insert logic. - Enhanced `case1.ts` to include database and migration setup, improving test clarity. - Deleted unused functions for adding modules and plugins, streamlining the codebase.
This commit is contained in:
5214
src/vm/modules/squel.js
Normal file
5214
src/vm/modules/squel.js
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,7 +0,0 @@
|
||||
import { DatabasePlugin } from "./plugins/database.plugin";
|
||||
import { RedisPlugin } from "./plugins/redis.plugin";
|
||||
|
||||
export const PluginClass = {
|
||||
DATABASE: DatabasePlugin,
|
||||
REDIS: RedisPlugin,
|
||||
};
|
||||
@ -56,10 +56,10 @@ export class Vm {
|
||||
rejectPromise = reject;
|
||||
});
|
||||
|
||||
this.setFunction("returnResult", (...args) => {
|
||||
console.log("Script result:", args);
|
||||
this.setFunction("returnResult", (res) => {
|
||||
console.log("Returning result from VM:", res);
|
||||
|
||||
resolvePromise(args);
|
||||
resolvePromise(JSON.parse(res));
|
||||
});
|
||||
|
||||
// TODO: log
|
||||
@ -77,7 +77,7 @@ export class Vm {
|
||||
${script}
|
||||
try {
|
||||
const result = await main(${JSON.stringify(args)});
|
||||
returnResult(result)
|
||||
returnResult(JSON.stringify(result))
|
||||
} catch (e) {
|
||||
error(e)
|
||||
}
|
||||
|
||||
26
src/vm/vm.constants.ts
Normal file
26
src/vm/vm.constants.ts
Normal file
@ -0,0 +1,26 @@
|
||||
import { QueryExecuterService } from "src/query/executer/query.executer.service";
|
||||
import { DatabasePlugin } from "./plugins/database.plugin";
|
||||
import { Query } from "src/query/entities/query.entity";
|
||||
|
||||
export const registeredPlugins = {
|
||||
db: {
|
||||
class: DatabasePlugin,
|
||||
initMethod: async (service: QueryExecuterService, query: Query) => {
|
||||
const databaseConnection =
|
||||
await service.databaseManagerService.getConnectionOptions(
|
||||
query.project.id
|
||||
);
|
||||
|
||||
if (!databaseConnection) {
|
||||
throw new Error("Database connection not found");
|
||||
}
|
||||
|
||||
return DatabasePlugin.init("db", databaseConnection);
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
export const registeredModules = {
|
||||
squel: "dist/vm/modules/squel.js",
|
||||
asyncCall: "dist/vm/modules/async.js",
|
||||
};
|
||||
Reference in New Issue
Block a user