src/renderer/src/services/db/README.md
This module provides a unified interface for accessing message data from different sources:
dbService (Facade)
├── Determines data source based on topicId
├── Routes to DexieMessageDataSource (regular chats)
└── Routes to AgentMessageDataSource (agent sessions)
import { dbService } from '@renderer/services/db'
// Fetch messages (automatically routes to correct source)
const { messages, blocks } = await dbService.fetchMessages(topicId)
// Save a message exchange
await dbService.persistExchange(topicId, {
user: { message: userMsg, blocks: userBlocks },
assistant: { message: assistantMsg, blocks: assistantBlocks }
})
// Append a single message
await dbService.appendMessage(topicId, message, blocks)
// Check if topic exists
const exists = await dbService.topicExists(topicId)
// In thunks
if (isAgentSessionTopicId(topicId)) {
// Special handling for agent sessions
const messages = await window.electron.ipcRenderer.invoke(...)
} else {
// Regular DB access
const topic = await db.topics.get(topicId)
}
// In thunks
const { messages, blocks } = await dbService.fetchMessages(topicId)
// No need to check topic type!
Phase 2: Update Redux thunks to use dbService Phase 3: Update components to use unified hooks Phase 4: Remove AgentSessionMessages component