A Tinybird module for Go. Why need this module? It provides an easy and standard way of getting data through the Tinybird API.
- Lightweight and fast.
- Native Go implementation. No C-bindings, just pure Go
- Connection pooling for HTTP.
- Test your code with mocks.
- Allow JSON, NDJSON and CSV between tinybird and this module.
- Parallelize HTTP requests.
- Add custom logic
after
andbefore
execute request. For example a cache system. - Shared logger with logrus.
Go 1.19 or higher.
Simple install the package to your $GOPATH with the go tool from shell:
go get -u github.com/the-hotels-network/go-tinybird
Make sure Git is installed on your machine and in your system's PATH.
You can configure it by environment variable TB_NDJSON
or pipe. By default NDJSON is disabled. Please see this example to enable via pipe.
package main
import (
"fmt"
"net/http"
"net/url"
"os"
"github.com/the-hotels-network/go-tinybird"
)
func main() {
params := url.Values{}
params.Add("start_date", "2022-05-01")
params.Add("end_date", "2022-05-30")
params.Add("property_id", "1234")
req := tinybird.Request{
Method: http.MethodGet,
Pipe: tinybird.Pipe{
Name: "tinybird_endpoint",
Parameters: params,
Workspace: tinybird.Workspace{
Token: "token-demo",
},
},
}
err := req.Execute()
if err != nil {
fmt.Println(err)
os.Exit(1)
}
res := req.Response
fmt.Println("Status:", res.Status)
fmt.Println("Error:", res.Error)
fmt.Println("Data:", res.Data)
}
To see more examples, please go to this directory.
make tests
To point to the local version of a dependency in Go rather than the one over the web, use the replace keyword.
And now when you compile this module (go install), it will use your local code rather than the other dependency.
go mod edit -replace github.com/the-hotels-network/go-tinybird=$HOME/go/src/github.com/the-hotels-network/go-tinybird
Revert replacement:
go mod edit -dropreplace github.com/the-hotels-network/go-tinybird
go get -u