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

Method scanMemoryFromRows

pkg/memory/logic/store_mysql.go:539–605  ·  view source on GitHub ↗

scanMemoryFromRows 从 rows 扫描 Memory

(rows *sql.Rows)

Source from the content-addressed store, hash-verified

537
538// scanMemoryFromRows 从 rows 扫描 Memory
539func (s *MySQLStore) scanMemoryFromRows(rows *sql.Rows) (*LogicMemory, error) {
540 mem := &LogicMemory{}
541 var valueJSON, metadataJSON, sourcesJSON []byte
542 var sourceType sql.NullString
543 var confidence float64
544 var provenanceCreatedAt, provenanceUpdatedAt sql.NullTime
545 var provenanceVersion int
546 var category sql.NullString
547 var description sql.NullString
548 var lastAccessed sql.NullTime
549
550 err := rows.Scan(
551 &mem.ID, &mem.Namespace, &mem.Scope, &mem.Type, &category, &mem.Key, &valueJSON, &description,
552 &sourceType, &confidence, &sourcesJSON, &provenanceCreatedAt, &provenanceUpdatedAt, &provenanceVersion,
553 &mem.AccessCount, &lastAccessed, &metadataJSON, &mem.CreatedAt, &mem.UpdatedAt,
554 )
555
556 if err != nil {
557 return nil, NewStoreError("SCAN_ERROR", "failed to scan memory", err)
558 }
559
560 // 反序列化
561 if len(valueJSON) > 0 {
562 if err := json.Unmarshal(valueJSON, &mem.Value); err != nil {
563 return nil, NewStoreError("UNMARSHAL_ERROR", "failed to unmarshal value", err)
564 }
565 }
566 if len(metadataJSON) > 0 {
567 if err := json.Unmarshal(metadataJSON, &mem.Metadata); err != nil {
568 // metadata 反序列化失败不是致命错误,使用空 map
569 mem.Metadata = make(map[string]any)
570 }
571 }
572
573 if category.Valid {
574 mem.Category = category.String
575 }
576 if description.Valid {
577 mem.Description = description.String
578 }
579 if lastAccessed.Valid {
580 mem.LastAccessed = lastAccessed.Time
581 }
582
583 // 构建 Provenance
584 if sourceType.Valid {
585 var sources []string
586 if len(sourcesJSON) > 0 {
587 _ = json.Unmarshal(sourcesJSON, &sources) // sources 反序列化失败使用空切片
588 }
589
590 mem.Provenance = &memory.MemoryProvenance{
591 SourceType: memory.SourceType(sourceType.String),
592 Confidence: confidence,
593 Sources: sources,
594 Version: provenanceVersion,
595 }
596 if provenanceCreatedAt.Valid {

Callers 1

ListMethod · 0.95

Calls 2

SourceTypeTypeAlias · 0.92
NewStoreErrorFunction · 0.85

Tested by

no test coverage detected