54 lines
1.6 KiB
TypeScript
54 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>;
|
|
redirect?: string;
|
|
};
|