feat: implement project settings management with CRUD operations and caching
This commit is contained in:
29
src/vm/plugins/settings.plugin.ts
Normal file
29
src/vm/plugins/settings.plugin.ts
Normal file
@ -0,0 +1,29 @@
|
||||
import { Query } from "src/query/entities/query.entity";
|
||||
import { Plugin } from "../plugin.class";
|
||||
import { QueryExecuterService } from "src/query/executer/query.executer.service";
|
||||
|
||||
export class SettingsPlugin extends Plugin {
|
||||
constructor(
|
||||
name: string,
|
||||
private query: Query,
|
||||
private queryExecuterService: QueryExecuterService
|
||||
) {
|
||||
super(name, ["get"]);
|
||||
}
|
||||
|
||||
static async init(query: Query, queryExecuterService: QueryExecuterService) {
|
||||
return new SettingsPlugin("settings", query, queryExecuterService);
|
||||
}
|
||||
|
||||
async get(property: string): Promise<any> {
|
||||
const settings =
|
||||
await this.queryExecuterService.projectSettingService.getAll(
|
||||
this.query.project.id
|
||||
);
|
||||
return settings[property];
|
||||
}
|
||||
|
||||
onFinish() {
|
||||
// No resources to clean up
|
||||
}
|
||||
}
|
||||
@ -6,6 +6,7 @@ import { AxiosPlugin } from "./plugins/axios.plugin";
|
||||
import { RedisPlugin } from "./plugins/redis.plugin";
|
||||
import { SessionPlugin } from "./plugins/session.plugin";
|
||||
import { TLog } from "src/query/logger/logger.types";
|
||||
import { SettingsPlugin } from "./plugins/settings.plugin";
|
||||
|
||||
export const registeredPlugins = {
|
||||
db: async (service: QueryExecuterService, query: Query) => {
|
||||
@ -32,6 +33,9 @@ export const registeredPlugins = {
|
||||
|
||||
return RedisPlugin.init("redis", redisConnection, query.project.id);
|
||||
},
|
||||
settings: async (service: QueryExecuterService, query: Query) => {
|
||||
return SettingsPlugin.init(query, service);
|
||||
},
|
||||
session: async (
|
||||
service: QueryExecuterService,
|
||||
query: Query,
|
||||
|
||||
Reference in New Issue
Block a user