(db: DatabaseAdapter)
| 146 | * 查询会话基础统计(消息数、成员数、时间范围) |
| 147 | */ |
| 148 | export function getSessionOverview(db: DatabaseAdapter): SessionOverview { |
| 149 | const msgRow = db |
| 150 | .prepare( |
| 151 | `SELECT COUNT(*) as count |
| 152 | FROM message msg |
| 153 | JOIN member m ON msg.sender_id = m.id |
| 154 | WHERE COALESCE(m.account_name, '') != '系统消息'` |
| 155 | ) |
| 156 | .get() as { count: number } |
| 157 | |
| 158 | const memberRow = db |
| 159 | .prepare( |
| 160 | `SELECT COUNT(*) as count |
| 161 | FROM member |
| 162 | WHERE COALESCE(account_name, '') != '系统消息'` |
| 163 | ) |
| 164 | .get() as { count: number } |
| 165 | |
| 166 | const firstTs = (db.prepare('SELECT MIN(ts) as v FROM message').get() as { v: number | null })?.v ?? null |
| 167 | const lastTs = (db.prepare('SELECT MAX(ts) as v FROM message').get() as { v: number | null })?.v ?? null |
| 168 | |
| 169 | return { |
| 170 | totalMessages: msgRow.count, |
| 171 | totalMembers: memberRow.count, |
| 172 | firstMessageTs: firstTs, |
| 173 | lastMessageTs: lastTs, |
| 174 | } |
| 175 | } |
| 176 | |
| 177 | /** |
| 178 | * 获取数据库中的表结构(Schema) |
no test coverage detected