From 54680539085d354ac9473fa451e284963e12000a Mon Sep 17 00:00:00 2001 From: Grail Finder Date: Sun, 9 Feb 2025 18:21:34 +0300 Subject: Enha: rewrite (upsert) memory --- storage/memory.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'storage/memory.go') diff --git a/storage/memory.go b/storage/memory.go index 088ce1c..c9fc853 100644 --- a/storage/memory.go +++ b/storage/memory.go @@ -9,7 +9,13 @@ type Memories interface { } func (p ProviderSQL) Memorise(m *models.Memory) (*models.Memory, error) { - query := "INSERT INTO memories (agent, topic, mind) VALUES (:agent, :topic, :mind) RETURNING *;" + query := ` + INSERT INTO memories (agent, topic, mind) + VALUES (:agent, :topic, :mind) + ON CONFLICT (agent, topic) DO UPDATE + SET mind = excluded.mind, + updated_at = CURRENT_TIMESTAMP + RETURNING *;` stmt, err := p.db.PrepareNamed(query) if err != nil { p.logger.Error("failed to prepare stmt", "query", query, "error", err) @@ -19,7 +25,7 @@ func (p ProviderSQL) Memorise(m *models.Memory) (*models.Memory, error) { var memory models.Memory err = stmt.Get(&memory, m) if err != nil { - p.logger.Error("failed to insert memory", "query", query, "error", err) + p.logger.Error("failed to upsert memory", "query", query, "error", err) return nil, err } return &memory, nil -- cgit v1.2.3