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

Method scanMemory

pkg/memory/logic/store_mysql.go:467–536  ·  view source on GitHub ↗

scanMemory 从单行扫描 Memory

(row *sql.Row)

Source from the content-addressed store, hash-verified

465
466// scanMemory 从单行扫描 Memory
467func (s *MySQLStore) scanMemory(row *sql.Row) (*LogicMemory, error) {
468 mem := &LogicMemory{}
469 var valueJSON, metadataJSON, sourcesJSON []byte
470 var sourceType sql.NullString
471 var confidence float64
472 var provenanceCreatedAt, provenanceUpdatedAt sql.NullTime
473 var provenanceVersion int
474 var category sql.NullString
475 var description sql.NullString
476 var lastAccessed sql.NullTime
477
478 err := row.Scan(
479 &mem.ID, &mem.Namespace, &mem.Scope, &mem.Type, &category, &mem.Key, &valueJSON, &description,
480 &sourceType, &confidence, &sourcesJSON, &provenanceCreatedAt, &provenanceUpdatedAt, &provenanceVersion,
481 &mem.AccessCount, &lastAccessed, &metadataJSON, &mem.CreatedAt, &mem.UpdatedAt,
482 )
483
484 if err == sql.ErrNoRows {
485 return nil, ErrMemoryNotFound
486 }
487 if err != nil {
488 return nil, NewStoreError("SCAN_ERROR", "failed to scan memory", err)
489 }
490
491 // 反序列化
492 if len(valueJSON) > 0 {
493 if err := json.Unmarshal(valueJSON, &mem.Value); err != nil {
494 return nil, NewStoreError("UNMARSHAL_ERROR", "failed to unmarshal value", err)
495 }
496 }
497 if len(metadataJSON) > 0 {
498 if err := json.Unmarshal(metadataJSON, &mem.Metadata); err != nil {
499 // metadata 反序列化失败不是致命错误,使用空 map
500 mem.Metadata = make(map[string]any)
501 }
502 }
503
504 if category.Valid {
505 mem.Category = category.String
506 }
507 if description.Valid {
508 mem.Description = description.String
509 }
510 if lastAccessed.Valid {
511 mem.LastAccessed = lastAccessed.Time
512 }
513
514 // 构建 Provenance
515 if sourceType.Valid {
516 var sources []string
517 if len(sourcesJSON) > 0 {
518 _ = json.Unmarshal(sourcesJSON, &sources) // sources 反序列化失败使用空切片
519 }
520
521 mem.Provenance = &memory.MemoryProvenance{
522 SourceType: memory.SourceType(sourceType.String),
523 Confidence: confidence,
524 Sources: sources,

Callers 1

GetMethod · 0.95

Calls 2

SourceTypeTypeAlias · 0.92
NewStoreErrorFunction · 0.85

Tested by

no test coverage detected