(db: DatabaseAdapter, topN: number = 10)
| 230 | * Simpler than Electron version — no cache layer, direct SQL. |
| 231 | */ |
| 232 | export function getChatOverview(db: DatabaseAdapter, topN: number = 10): ChatOverviewData | null { |
| 233 | const meta = getSessionMeta(db) |
| 234 | if (!meta) return null |
| 235 | |
| 236 | const overview = getSessionOverview(db) |
| 237 | const members = getMemberActivity(db) |
| 238 | const summaryCount = getSummaryCount(db) |
| 239 | |
| 240 | const topMembers = members.slice(0, topN).map((m) => ({ |
| 241 | id: m.memberId, |
| 242 | name: m.name, |
| 243 | count: m.messageCount, |
| 244 | })) |
| 245 | |
| 246 | return { |
| 247 | name: meta.name, |
| 248 | platform: meta.platform, |
| 249 | type: meta.type, |
| 250 | totalMessages: overview.totalMessages, |
| 251 | totalMembers: overview.totalMembers, |
| 252 | firstMessageTs: overview.firstMessageTs, |
| 253 | lastMessageTs: overview.lastMessageTs, |
| 254 | topMembers, |
| 255 | summaryCount, |
| 256 | } |
| 257 | } |
| 258 | |
| 259 | /** |
| 260 | * Get messages for a specific chat session |
no test coverage detected