rqlite-go-http is a Go client for rqlite that interacts directly with the rqlite HTTP API, providing little abstraction. It can be used on its own or as a foundation for higher-level libraries.
This library offers support for:
- Executing SQL statements (
INSERT
,UPDATE
,DELETE
) - Running queries (
SELECT
) - Handling both read and write statements in a single request via the Unified Endpoint.
- Backing up and restoring data to your rqlite system
- Booting a rqlite node from a SQLite database file
- Checking node status, diagnostic info, cluster membership, and readiness
- Ability to customize HTTP communications for control over TLS, mutual TLS, timeouts, etc.
Check out the documentation for more details.
go get github.com/rqlite/rqlite-go-http
package main
import (
"context"
"fmt"
rqlitehttp "github.com/rqlite/rqlite-go-http"
)
func main() {
// Create a client pointing to a rqlite node
client, err := rqlitehttp.NewClient("http://localhost:4001", nil)
if err != nil {
panic(err)
}
// Optionally set Basic Auth
client.SetBasicAuth("user", "password")
// Create a table.
resp, err := client.ExecuteSingle(context.Background(), "CREATE TABLE foo (id INTEGER PRIMARY KEY, name TEXT)")
if err != nil {
panic(err)
}
// Insert a record.
resp, err = client.Execute(
context.Background(),
rqlitehttp.SQLStatements{
{
SQL: "INSERT INTO foo(name) VALUES(?)",
PositionalParams: []any{"fiona"},
},
},
)
if err != nil {
panic(err)
}
fmt.Printf("ExecuteResponse: %+v\n", resp)
// Query the newly created table
qResp, err := client.QuerySingle(context.Background(), "SELECT * FROM foo")
if err != nil {
panic(err)
}
fmt.Printf("QueryResponse: %+v\n", qResp)
}