| 253 | } |
| 254 | |
| 255 | func (m *MemoryDatabase) UpdateMemory(ctx context.Context, memory database.UserMemory) error { |
| 256 | ctx, span := startMemorySpan(ctx, "update") |
| 257 | defer span.End() |
| 258 | |
| 259 | if memory.ID == "" { |
| 260 | return database.ErrEmptyID |
| 261 | } |
| 262 | |
| 263 | return m.withWriteLock(ctx, func(db *sql.DB) error { |
| 264 | result, err := db.ExecContext(ctx, "UPDATE memories SET memory = ?, category = ? WHERE id = ?", |
| 265 | memory.Memory, memory.Category, memory.ID) |
| 266 | if err != nil { |
| 267 | return err |
| 268 | } |
| 269 | |
| 270 | rows, err := result.RowsAffected() |
| 271 | if err != nil { |
| 272 | return err |
| 273 | } |
| 274 | if rows == 0 { |
| 275 | return fmt.Errorf("%w: %s", database.ErrMemoryNotFound, memory.ID) |
| 276 | } |
| 277 | |
| 278 | return nil |
| 279 | }) |
| 280 | } |