(sessionID string)
| 297 | } |
| 298 | var content any |
| 299 | if err := json.Unmarshal([]byte(contentJSON), &content); err != nil { |
| 300 | continue |
| 301 | } |
| 302 | messages = append(messages, map[string]any{"role": role, "content": content}) |
| 303 | } |
| 304 | if len(messages) == 0 { |
| 305 | return nil |
| 306 | } |
| 307 | return messages |
| 308 | } |
| 309 | |
| 310 | func (s *Store) loadSQLiteMeta(sessionID string) *Meta { |
| 311 | path := s.sqliteReadPath(sessionID) |
| 312 | if _, err := os.Stat(path); err != nil { |
| 313 | return nil |
| 314 | } |
| 315 | db, err := sql.Open("sqlite", path) |
| 316 | if err != nil { |
| 317 | return nil |
| 318 | } |
| 319 | defer db.Close() |
| 320 | meta := &Meta{SessionID: sessionID} |
| 321 | var messageCount, turnCount int |
| 322 | if err := db.QueryRow(`SELECT created_at, updated_at FROM session_info WHERE session_id = ?`, sessionID).Scan(&meta.CreatedAt, &meta.LastUpdated); err != nil { |
| 323 | if info, statErr := os.Stat(path); statErr == nil { |
| 324 | meta.CreatedAt = float64(info.ModTime().UnixNano()) / 1e9 |
| 325 | meta.LastUpdated = meta.CreatedAt |
| 326 | } else { |
no test coverage detected