Skip to content
go-libfossil Artifact [0ed38ec9ea]
Login

Artifact [0ed38ec9ea]

Artifact 0ed38ec9ea5235dced89d09edb6894e543142d6961305eeb514581a8c890bf86:


// Example: the whole public API, sync included, built with TinyGo for the
// js/wasm target, as an application ships go-libfossil to a browser or an
// edge runtime.
//
// It imports no SQLite driver. A TinyGo host supplies one for its own
// storage (a database/sql driver over the host's SQLite) and registers it;
// the ncruces driver, which embeds SQLite as a wasm module run by an
// interpreter, is for standard Go builds. CI builds this example with TinyGo
// so the module keeps compiling there.
package main

import (
	"context"
	"log"

	"github.com/danmestas/go-libfossil"
)

func main() {
	r, err := libfossil.Open("notes.fossil")
	if err != nil {
		log.Fatalf("open: %v", err)
	}
	defer r.Close()
	t := libfossil.NewHTTPTransport("https://example.org/notes")
	res, err := r.Sync(context.Background(), t, libfossil.SyncOpts{Pull: true})
	if err != nil {
		log.Fatalf("sync: %v", err)
	}
	log.Printf("pulled %d artifacts in %d rounds", res.FilesRecvd, res.Rounds)
}