yao/trace/store/driver.go
Max b582f0c685 Refactor trace package structure and improve trace ID validation
- Updated trace ID validation in `TestEnterStack_RootCreation` to ensure it is at least 8 digits long.
- Changed import path for the trace package in `stack.go` for consistency.
- Removed the entire `manager.go`, `node.go`, `space.go`, `subscription.go`, `trace.go`, `local/driver.go`, `store/driver.go`, and related types and events files to streamline the trace package, focusing on essential functionality.
2025-11-18 14:09:28 +08:00

146 lines
4.6 KiB
Go

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
}