heroagent/pkg/data/ourdb/client.go
2025-04-23 04:18:28 +02:00

78 lines
1.6 KiB
Go

package ourdb
import (
"errors"
)
// Client provides a simplified interface to the OurDB database
type Client struct {
db *OurDB
}
// NewClient creates a new client for the specified database path
func NewClient(path string) (*Client, error) {
return NewClientWithConfig(path, DefaultConfig())
}
// NewClientWithConfig creates a new client with a custom configuration
func NewClientWithConfig(path string, baseConfig OurDBConfig) (*Client, error) {
config := baseConfig
config.Path = path
db, err := New(config)
if err != nil {
return nil, err
}
return &Client{db: db}, nil
}
// Set stores data with the specified ID
func (c *Client) Set(id uint32, data []byte) error {
if data == nil {
return errors.New("data cannot be nil")
}
_, err := c.db.Set(OurDBSetArgs{
ID: &id,
Data: data,
})
return err
}
// Add stores data and returns the auto-generated ID
func (c *Client) Add(data []byte) (uint32, error) {
if data == nil {
return 0, errors.New("data cannot be nil")
}
return c.db.Set(OurDBSetArgs{
Data: data,
})
}
// Get retrieves data for the specified ID
func (c *Client) Get(id uint32) ([]byte, error) {
return c.db.Get(id)
}
// GetHistory retrieves historical values for the specified ID
func (c *Client) GetHistory(id uint32, depth uint8) ([][]byte, error) {
return c.db.GetHistory(id, depth)
}
// Delete removes data for the specified ID
func (c *Client) Delete(id uint32) error {
return c.db.Delete(id)
}
// Close closes the database
func (c *Client) Close() error {
return c.db.Close()
}
// Destroy closes and removes the database
func (c *Client) Destroy() error {
return c.db.Destroy()
}