Skip to content

A Go client for rqlite, useful on its own or as a foundation for higher-level libraries.

License

Notifications You must be signed in to change notification settings

rqlite/rqlite-go-http

Repository files navigation

rqlite-go-http

Circle CI Go Report Card Go Reference

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.

Installation

go get github.com/rqlite/rqlite-go-http

Example use

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)
}

About

A Go client for rqlite, useful on its own or as a foundation for higher-level libraries.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages