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

Method scanMemory

pkg/memory/logic/store_postgres.go:488–557  ·  view source on GitHub ↗

scanMemory 从单行扫描 Memory

(row *sql.Row)

Source from the content-addressed store, hash-verified

486
487// scanMemory 从单行扫描 Memory
488func (s *PostgreSQLStore) scanMemory(row *sql.Row) (*LogicMemory, error) {
489 mem := &LogicMemory{}
490 var valueJSON, metadataJSON, sourcesJSON []byte
491 var sourceType sql.NullString
492 var confidence float64
493 var provenanceCreatedAt, provenanceUpdatedAt sql.NullTime
494 var provenanceVersion int
495 var category sql.NullString
496 var description sql.NullString
497 var lastAccessed sql.NullTime
498
499 err := row.Scan(
500 &mem.ID, &mem.Namespace, &mem.Scope, &mem.Type, &category, &mem.Key, &valueJSON, &description,
501 &sourceType, &confidence, &sourcesJSON, &provenanceCreatedAt, &provenanceUpdatedAt, &provenanceVersion,
502 &mem.AccessCount, &lastAccessed, &metadataJSON, &mem.CreatedAt, &mem.UpdatedAt,
503 )
504
505 if err == sql.ErrNoRows {
506 return nil, ErrMemoryNotFound
507 }
508 if err != nil {
509 return nil, NewStoreError("SCAN_ERROR", "failed to scan memory", err)
510 }
511
512 // 反序列化
513 if len(valueJSON) > 0 {
514 if err := json.Unmarshal(valueJSON, &mem.Value); err != nil {
515 return nil, NewStoreError("UNMARSHAL_ERROR", "failed to unmarshal value", err)
516 }
517 }
518 if len(metadataJSON) > 0 {
519 if err := json.Unmarshal(metadataJSON, &mem.Metadata); err != nil {
520 // metadata 反序列化失败不是致命错误,使用空 map
521 mem.Metadata = make(map[string]any)
522 }
523 }
524
525 if category.Valid {
526 mem.Category = category.String
527 }
528 if description.Valid {
529 mem.Description = description.String
530 }
531 if lastAccessed.Valid {
532 mem.LastAccessed = lastAccessed.Time
533 }
534
535 // 构建 Provenance
536 if sourceType.Valid {
537 var sources []string
538 if len(sourcesJSON) > 0 {
539 _ = json.Unmarshal(sourcesJSON, &sources) // sources 反序列化失败使用空切片
540 }
541
542 mem.Provenance = &memory.MemoryProvenance{
543 SourceType: memory.SourceType(sourceType.String),
544 Confidence: confidence,
545 Sources: sources,

Callers 1

GetMethod · 0.95

Calls 2

SourceTypeTypeAlias · 0.92
NewStoreErrorFunction · 0.85

Tested by

no test coverage detected