feat: implement project settings management with CRUD operations and caching
This commit is contained in:
@ -4,6 +4,7 @@ import { Repository } from "typeorm";
|
||||
import { Project } from "./entities/project.entity";
|
||||
import { RedisClient } from "src/redis/redis.service";
|
||||
import { DatabaseManagerService } from "src/databaseManager/database/database.manager.service";
|
||||
import { ProjectSettingService } from "./settings/project.setting.service";
|
||||
|
||||
@Injectable()
|
||||
export class ProjectService {
|
||||
@ -13,9 +14,23 @@ export class ProjectService {
|
||||
@Inject(RedisClient)
|
||||
private readonly redisClient: RedisClient,
|
||||
@Inject(forwardRef(() => DatabaseManagerService))
|
||||
private readonly databaseManagerService: DatabaseManagerService
|
||||
private readonly databaseManagerService: DatabaseManagerService,
|
||||
@Inject(ProjectSettingService)
|
||||
private readonly projectSettingService: ProjectSettingService
|
||||
) {}
|
||||
|
||||
async createDefaultSettings(projectId: string) {
|
||||
const defaultSettings = [{ key: "sessionTTL", value: "3600" }];
|
||||
|
||||
await Promise.all(
|
||||
defaultSettings.map((setting) =>
|
||||
this.projectSettingService.create(projectId, setting.key, setting.value)
|
||||
)
|
||||
);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
async create(name: string, createDatabase: boolean = true) {
|
||||
const project = this.projectRepository.create({ name });
|
||||
const projectSaved = await this.projectRepository.save(project);
|
||||
@ -24,6 +39,9 @@ export class ProjectService {
|
||||
await this.databaseManagerService.createDatabase(projectSaved.id);
|
||||
}
|
||||
|
||||
await this.createDefaultSettings(projectSaved.id);
|
||||
await this.redisClient.set(`project_${projectSaved.id}`, projectSaved, 300);
|
||||
|
||||
return projectSaved;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user