| 165 | } |
| 166 | |
| 167 | func (m *MemoryDatabase) DeleteMemory(ctx context.Context, memory database.UserMemory) error { |
| 168 | ctx, span := startMemorySpan(ctx, "delete") |
| 169 | defer span.End() |
| 170 | |
| 171 | err := m.withWriteLock(ctx, func(db *sql.DB) error { |
| 172 | _, err := db.ExecContext(ctx, "DELETE FROM memories WHERE id = ?", memory.ID) |
| 173 | return err |
| 174 | }) |
| 175 | if err != nil { |
| 176 | span.RecordError(err) |
| 177 | span.SetStatus(codes.Error, err.Error()) |
| 178 | } |
| 179 | return err |
| 180 | } |
| 181 | |
| 182 | func (m *MemoryDatabase) SearchMemories(ctx context.Context, query, category string) (results []database.UserMemory, err error) { |
| 183 | // SearchMemories is the retrieval shape per the OTel GenAI semconv: |