- 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.
146 lines
4.6 KiB
Go
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
|
|
}
|