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; redirect?: string; };