| 545 | } |
| 546 | |
| 547 | func (s *sqliteState) All() iter.Seq2[string, any] { |
| 548 | return func(yield func(string, any) bool) { |
| 549 | s.service.mu.RLock() |
| 550 | defer s.service.mu.RUnlock() |
| 551 | |
| 552 | rows, err := s.service.db.Query( |
| 553 | `SELECT key, value FROM session_state WHERE session_id = ?`, |
| 554 | s.sessionID, |
| 555 | ) |
| 556 | if err != nil { |
| 557 | return |
| 558 | } |
| 559 | defer func() { _ = rows.Close() }() |
| 560 | |
| 561 | for rows.Next() { |
| 562 | var key, valueJSON string |
| 563 | if err := rows.Scan(&key, &valueJSON); err != nil { |
| 564 | return |
| 565 | } |
| 566 | |
| 567 | var value any |
| 568 | if err := json.Unmarshal([]byte(valueJSON), &value); err != nil { |
| 569 | return |
| 570 | } |
| 571 | |
| 572 | if !yield(key, value) { |
| 573 | return |
| 574 | } |
| 575 | } |
| 576 | } |
| 577 | } |
| 578 | |
| 579 | func (s *sqliteState) Has(key string) bool { |
| 580 | s.service.mu.RLock() |