package store import ( "context" "github.com/yaoapp/yao/trace/types" ) // Driver the gou store storage driver implementation type Driver struct { storeName string // Store name in gou } // New creates a new store driver func New(storeName string) (*Driver, error) { // TODO: Implement initialization (connect to gou store, etc.) return &Driver{ storeName: storeName, }, nil } // SaveNode persists a node to store func (d *Driver) SaveNode(ctx context.Context, traceID string, node *types.TraceNode) error { // TODO: Implement store save // Key: trace:{traceID}:node:{nodeID} return nil } // LoadNode loads a node from store func (d *Driver) LoadNode(ctx context.Context, traceID string, nodeID string) (*types.TraceNode, error) { // TODO: Implement store load return nil, nil } // LoadTrace loads the entire trace tree from store func (d *Driver) LoadTrace(ctx context.Context, traceID string) (*types.TraceNode, error) { // TODO: Implement store load trace // Key: trace:{traceID} return nil, nil } // SaveSpace persists a space to store func (d *Driver) SaveSpace(ctx context.Context, traceID string, space *types.TraceSpace) error { // TODO: Implement store save space // Key: trace:{traceID}:space:{spaceID} return nil } // LoadSpace loads a space from store func (d *Driver) LoadSpace(ctx context.Context, traceID string, spaceID string) (*types.TraceSpace, error) { // TODO: Implement store load space return nil, nil } // DeleteSpace removes a space from store func (d *Driver) DeleteSpace(ctx context.Context, traceID string, spaceID string) error { // TODO: Implement store delete space return nil } // ListSpaces lists all space IDs for a trace from store func (d *Driver) ListSpaces(ctx context.Context, traceID string) ([]string, error) { // TODO: Implement store list spaces // Use pattern matching: trace:{traceID}:space:* return nil, nil } // SetSpaceKey stores a value by key in a space func (d *Driver) SetSpaceKey(ctx context.Context, traceID, spaceID, key string, value any) error { // TODO: Implement store set space key // Key: trace:{traceID}:space:{spaceID}:key:{key} return nil } // GetSpaceKey retrieves a value by key from a space func (d *Driver) GetSpaceKey(ctx context.Context, traceID, spaceID, key string) (any, error) { // TODO: Implement store get space key return nil, nil } // HasSpaceKey checks if a key exists in a space func (d *Driver) HasSpaceKey(ctx context.Context, traceID, spaceID, key string) bool { // TODO: Implement store has space key return false } // DeleteSpaceKey removes a key-value pair from a space func (d *Driver) DeleteSpaceKey(ctx context.Context, traceID, spaceID, key string) error { // TODO: Implement store delete space key return nil } // ClearSpaceKeys removes all key-value pairs from a space func (d *Driver) ClearSpaceKeys(ctx context.Context, traceID, spaceID string) error { // TODO: Implement store clear space keys // Delete keys: trace:{traceID}:space:{spaceID}:key:* return nil } // ListSpaceKeys returns all keys in a space func (d *Driver) ListSpaceKeys(ctx context.Context, traceID, spaceID string) ([]string, error) { // TODO: Implement store list space keys // Use pattern matching: trace:{traceID}:space:{spaceID}:key:* return nil, nil } // SaveLog appends a log entry to store func (d *Driver) SaveLog(ctx context.Context, traceID string, log *types.TraceLog) error { // TODO: Implement store save log // Key: trace:{traceID}:logs:{nodeID} (list type, append) return nil } // LoadLogs loads all logs for a trace or specific node from store func (d *Driver) LoadLogs(ctx context.Context, traceID string, nodeID string) ([]*types.TraceLog, error) { // TODO: Implement store load logs // If nodeID is empty, load all logs from trace:{traceID}:logs:* // If nodeID provided, load from trace:{traceID}:logs:{nodeID} return nil, nil } // SaveTraceInfo persists trace metadata to store func (d *Driver) SaveTraceInfo(ctx context.Context, info *types.TraceInfo) error { // TODO: Implement store save trace info // Key: trace:{traceID}:info return nil } // LoadTraceInfo loads trace metadata from store func (d *Driver) LoadTraceInfo(ctx context.Context, traceID string) (*types.TraceInfo, error) { // TODO: Implement store load trace info return nil, nil } // DeleteTrace removes entire trace from store func (d *Driver) DeleteTrace(ctx context.Context, traceID string) error { // TODO: Implement store delete trace // Delete keys: trace:{traceID}* (including all spaces, nodes, and logs) return nil } // Close closes the store driver func (d *Driver) Close() error { // TODO: Implement cleanup if needed return nil }