78 lines
1.6 KiB
Go
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()
|
|
}
|