MCPcopy Create free account
hub / github.com/astercloud/aster / Save

Method Save

pkg/memory/logic/store_inmemory.go:30–62  ·  view source on GitHub ↗

Save 保存或更新 Memory

(ctx context.Context, memory *LogicMemory)

Source from the content-addressed store, hash-verified

28
29// Save 保存或更新 Memory
30func (s *InMemoryStore) Save(ctx context.Context, memory *LogicMemory) error {
31 s.mu.Lock()
32 defer s.mu.Unlock()
33
34 if s.closed {
35 return ErrStoreClosed
36 }
37
38 if memory.Namespace == "" {
39 return ErrInvalidNamespace
40 }
41
42 key := makeKey(memory.Namespace, memory.Key)
43
44 // 如果是新记录,设置创建时间
45 if _, exists := s.memories[key]; !exists {
46 if memory.CreatedAt.IsZero() {
47 memory.CreatedAt = time.Now()
48 }
49 }
50
51 // 更新时间
52 memory.UpdatedAt = time.Now()
53 if memory.LastAccessed.IsZero() {
54 memory.LastAccessed = memory.UpdatedAt
55 }
56
57 // 深拷贝存储
58 stored := *memory
59 s.memories[key] = &stored
60
61 return nil
62}
63
64// Get 获取单个 Memory
65func (s *InMemoryStore) Get(ctx context.Context, namespace, key string) (*LogicMemory, error) {

Calls 1

makeKeyFunction · 0.70