gospice

package module
v6.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 29, 2024 License: Apache-2.0 Imports: 16 Imported by: 0

README

gospice

Golang SDK for Spice.ai

See Go Docs at pkg.go.dev/github.com/spiceai/gospice/v6.

For full documentation visit docs.spice.ai.

Usage

  1. Get the gospice package.
go get github.com/spiceai/gospice/v6
  1. Import the package.
import "github.com/spiceai/gospice/v6"
  1. Create a SpiceClient passing in your API key. Get your free API key at spice.ai.
spice := NewSpiceClient()
defer spice.Close()
  1. Initialize the SpiceClient with spice.ai cloud.
if err := spice.Init(
    spice.WithApiKey(ApiKey),
    spice.WithSpiceCloudAddress()
); err != nil {
    panic(fmt.Errorf("error initializing SpiceClient: %w", err))
}
  1. Execute a query and get back an Apache Arrow Reader.
    reader, err := spice.Query(context.Background(), "SELECT * FROM eth.recent_blocks ORDER BY number LIMIT 10")
    if err != nil {
        panic(fmt.Errorf("error querying: %w", err))
    }
    defer reader.Release()
  1. Iterate through the reader to access the records.
    for reader.Next() {
        record := reader.Record()
        defer record.Release()
        fmt.Println(record)
    }
Using local spice runtime

Follow the quickstart guide to install and run spice locally

Initialize the SpiceClient to use local runtime connection:

if err := spice.Init(); err != nil {
    panic(fmt.Errorf("error initializing SpiceClient: %w", err))
}

Configure with a custom flight address:

if err := spice.Init(
    spice.WithFlightAddress("grpc://localhost:50052")
); err != nil {
    panic(fmt.Errorf("error initializing SpiceClient: %w", err))
}

Example

Run go run . to execute a sample query and print the results to the console.

See client_test.go for examples on querying Ethereum and Polygon blocks.

Connection retry

The SpiceClient implements connection retry mechanism (3 attempts by default). The number of attempts can be configured via SetMaxRetries:

spice := NewSpiceClient()
spice.SetMaxRetries(5) // Setting to 0 will disable retries

Retries are performed for connection and system internal errors. It is the SDK user's responsibility to properly handle other errors, for example RESOURCE_EXHAUSTED (HTTP 429).

Documentation

Index

Constants

View Source
const (
	MAX_MESSAGE_SIZE_BYTES = 100 * 1024 * 1024
)

Variables

This section is empty.

Functions

This section is empty.

Types

type ClientConfig

type ClientConfig struct {
	HttpUrl      string `json:"http_url,omitempty"`
	FlightUrl    string `json:"flight_url,omitempty"`
	FirecacheUrl string `json:"firecache_url,omitempty"`
}

func LoadConfig

func LoadConfig() ClientConfig

func LoadLocalConfig

func LoadLocalConfig() ClientConfig

type SpiceClient

type SpiceClient struct {
	// contains filtered or unexported fields
}

SpiceClient is a client for Spice.ai - Data and AI infrastructure for web3 https://spice.ai For documentation visit https://docs.spice.ai/sdks/go-sdk

func NewSpiceClient

func NewSpiceClient() *SpiceClient

NewSpiceClient creates a new SpiceClient

func NewSpiceClientWithAddress

func NewSpiceClientWithAddress(flightAddress string, firecacheAddress string) *SpiceClient

func (*SpiceClient) Close

func (c *SpiceClient) Close() error

Close closes the SpiceClient and cleans up resources

func (*SpiceClient) FireQuery

func (c *SpiceClient) FireQuery(ctx context.Context, sql string) (array.RecordReader, error)

FireQuery executes a query against Spice.ai Firecache and returns a Apache Arrow RecordReader For more information on Apache Arrow RecordReader visit https://godoc.org/github.com/apache/arrow/go/arrow/array#RecordReader

func (*SpiceClient) Init

func (c *SpiceClient) Init(opts ...SpiceClientModifier) error

Init initializes the SpiceClient

func (*SpiceClient) Query

func (c *SpiceClient) Query(ctx context.Context, sql string) (array.RecordReader, error)

Query executes a query against Spice.ai and returns a Apache Arrow RecordReader For more information on Apache Arrow RecordReader visit https://godoc.org/github.com/apache/arrow/go/arrow/array#RecordReader

func (*SpiceClient) SetMaxRetries

func (c *SpiceClient) SetMaxRetries(maxRetries uint)

Sets the maximum number of times to retry Query and FireQuery calls. The default is 3. Setting to 0 will disable retries.

type SpiceClientModifier

type SpiceClientModifier func(c *SpiceClient) error

func WithApiKey

func WithApiKey(apiKey string) SpiceClientModifier

func WithFirecacheAddress

func WithFirecacheAddress(address string) SpiceClientModifier

func WithFlightAddress

func WithFlightAddress(address string) SpiceClientModifier

func WithSpiceCloudAddress

func WithSpiceCloudAddress() SpiceClientModifier

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL