Hrana Version

This package provides a Dart implementation for the Hrana protocol used by libsql servers to expose sqlite3 databases over web sockets.

Getting started

To use this package, you need a server to connect to. For testing purposes, you can start an ephemeral sqld container:

docker run -p 8080:8080 -ti -e SQLD_NODE=primary ghcr.io/tursodatabase/libsql-server:latest

Usage

With a running server, all this package needs to connect is the web socket URI and optionally a JWT token for authorization:

import 'package:hrana/hrana.dart';

void main() async {
  final database = await Database.connect(
    Uri.parse('ws://localhost:8080/'),
    jwtToken: null,
  );
  print(await database.withSession((session) async {
    await session.select('SELECT 1;');
  }));
}

In addition to web sockets, an HTTP client is available as well and selected automatically when using an http:// or https:// URL.

Additional information

At the moment, this package implements functionality to execute statements and getting their results as rows. Batches and stored statements are supported as well, but no support for streaming cursors is implemented yet.

Contributing

Contributions to expose more functionality of the hrana protocol are welcome!

If you need to re-run the protoc compiler, first run

$ dart pub global activate protoc_plugin

Afterwards, you can use ./proto.sh to re-generate protobuf code.

Libraries

hrana