infio-copilot/src/database/database-manager.ts

61 lines
1.6 KiB
TypeScript

// @ts-expect-error
import { type PGliteWithLive } from '@electric-sql/pglite/live'
import { App } from 'obsidian'
import { createAndInitDb } from '../pgworker'
import { CommandManager } from './modules/command/command-manager'
import { ConversationManager } from './modules/conversation/conversation-manager'
import { InsightManager } from './modules/insight/insight-manager'
import { VectorManager } from './modules/vector/vector-manager'
export class DBManager {
private app: App
private db: PGliteWithLive | null = null
private vectorManager: VectorManager
private CommandManager: CommandManager
private conversationManager: ConversationManager
private insightManager: InsightManager
constructor(app: App) {
this.app = app
}
static async create(app: App, filesystem: string): Promise<DBManager> {
const dbManager = new DBManager(app)
dbManager.db = await createAndInitDb(filesystem)
dbManager.vectorManager = new VectorManager(app, dbManager)
dbManager.CommandManager = new CommandManager(app, dbManager)
dbManager.conversationManager = new ConversationManager(app, dbManager)
dbManager.insightManager = new InsightManager(app, dbManager)
return dbManager
}
getPgClient(): PGliteWithLive | null {
return this.db
}
getVectorManager(): VectorManager {
return this.vectorManager
}
getCommandManager(): CommandManager {
return this.CommandManager
}
getConversationManager(): ConversationManager {
return this.conversationManager
}
getInsightManager(): InsightManager {
return this.insightManager
}
async cleanup() {
this.db?.close()
this.db = null
}
}