Skip to main content
Glama
orneryd

M.I.M.I.R - Multi-agent Intelligent Memory & Insight Repository

by orneryd
badger_serialization.go1.92 kB
// Package storage - Serialization helpers for BadgerDB. package storage import ( "bytes" "encoding/gob" "fmt" "time" ) // init registers types with gob for proper encoding/decoding of property values. // gob requires type registration for interface{} values in maps. func init() { // Register primitive types that can appear in Properties map gob.Register(int(0)) gob.Register(int64(0)) gob.Register(float64(0)) gob.Register("") gob.Register(true) gob.Register(time.Time{}) // Register slice types for list properties gob.Register([]interface{}{}) gob.Register([]string{}) gob.Register([]int{}) gob.Register([]int64{}) gob.Register([]float64{}) // Register map types for nested properties gob.Register(map[string]interface{}{}) } // serializeNode converts a Node to gob bytes for BadgerDB storage. // gob preserves Go types (int64 vs float64) unlike JSON. func serializeNode(node *Node) ([]byte, error) { var buf bytes.Buffer if err := gob.NewEncoder(&buf).Encode(node); err != nil { return nil, fmt.Errorf("encoding node: %w", err) } return buf.Bytes(), nil } // deserializeNode converts gob bytes back to a Node. func deserializeNode(data []byte) (*Node, error) { var node Node if err := gob.NewDecoder(bytes.NewReader(data)).Decode(&node); err != nil { return nil, fmt.Errorf("decoding node: %w", err) } return &node, nil } // serializeEdge converts an Edge to gob bytes for BadgerDB storage. func serializeEdge(edge *Edge) ([]byte, error) { var buf bytes.Buffer if err := gob.NewEncoder(&buf).Encode(edge); err != nil { return nil, fmt.Errorf("encoding edge: %w", err) } return buf.Bytes(), nil } // deserializeEdge converts gob bytes back to an Edge. func deserializeEdge(data []byte) (*Edge, error) { var edge Edge if err := gob.NewDecoder(bytes.NewReader(data)).Decode(&edge); err != nil { return nil, fmt.Errorf("decoding edge: %w", err) } return &edge, nil }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/orneryd/Mimir'

If you have feedback or need assistance with the MCP directory API, please join our Discord server