Files
few-line-engine/src/vm/vm.constants.ts

53 lines
1.6 KiB
TypeScript

import { QueryExecuterService } from "src/query/executer/query.executer.service";
import { DatabasePlugin } from "./plugins/database.plugin";
import { Query } from "src/query/entities/query.entity";
import { QueryPlugin } from "./plugins/query.plugin";
import { AxiosPlugin } from "./plugins/axios.plugin";
import { RedisPlugin } from "./plugins/redis.plugin";
export const registeredPlugins = {
db: async (service: QueryExecuterService, query: Query) => {
const databaseConnection =
await service.databaseManagerService.getConnectionOptions(
query.project.id,
query.isCommand == 0
);
if (!databaseConnection) {
throw new Error("Database connection not found");
}
return DatabasePlugin.init("db", databaseConnection);
},
redis: async (service: QueryExecuterService, query: Query) => {
const redisConnection = await service.redisNodeService.getConnectionOptions(
query.project.id
);
if (!redisConnection) {
throw new Error("Redis connection not found");
}
return RedisPlugin.init("redis", redisConnection, query.project.id);
},
axios: async () => {
return AxiosPlugin.init("axios");
},
query: async (service: QueryExecuterService, query: Query) => {
return QueryPlugin.init(query, service);
},
command: async (service: QueryExecuterService, query: Query) => {
return QueryPlugin.init(query, service);
},
};
export const registeredModules = {
squel: "dist/vm/modules/squel.js",
};
export type QueryResponse = {
statusCode: number;
response: any;
headers: Record<string, string>;
};