Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/levydsa/libsql-go
https://github.com/levydsa/libsql-go
Last synced: about 1 month ago
JSON representation
- Host: GitHub
- URL: https://github.com/levydsa/libsql-go
- Owner: levydsa
- License: mit
- Created: 2024-10-29T15:58:24.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2024-11-08T19:19:14.000Z (about 1 month ago)
- Last Synced: 2024-11-09T06:11:26.769Z (about 1 month ago)
- Language: Go
- Size: 388 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# LibSQL package for Go
[libSQL](https://github.com/tursodatabase/libsql) is an open source, open contribution fork of SQLite.
This source repository contains libSQL API bindings for Go.## Notice
This package comes with a precompiled native libraries.
Currently only `linux amd64`, `linux arm64`, `darwin amd64` and `darwin arm64` are supported.
We're working on adding support for more platforms.## Features
* In-memory databases and local database files, like SQLite
* Remote database access to libSQL server
* In-app replica that syncs with a libSQL server## Installing
```
go get github.com/tursodatabase/go-libsql
````go-libsql` uses `CGO` to make calls to LibSQL. You must build your binaries with `CGO_ENABLED=1`.
## Getting Started
### Connecting to the database
To connect to the database one needs to create a `libsql.Connector` using one of the factory functions: `libsql.NewEmbeddedReplicaConnector` or `libsql.NewEmbeddedReplicaConnectorWithAutoSync`.
Here's an example of obtaining a `sql.DB` object from `database/sql` package:
```
dbPath := // Path do db file on local disk
primaryUrl := // URL to primary database instance
connector := NewEmbeddedReplicaConnector(dbPath, primaryUrl, authToken)
db := sql.OpenDB(connector)
defer db.Close()
```Once `sql.DB` object is created one can use it as any other database that supports `database/sql` package.
### Fetching updates from primary database instance
If the connector is created with `libsql.NewEmbeddedReplicaConnectorWithAutoSync` then it will automatically fetch updates from a primary periodically.
For connectors created with `libsql.NewEmbeddedReplicaConnector` we need to fetch updates manually by calling `connector.Sync`
## Examples
Module with usage examples can be found in [example directory].
## License
This project is licensed under the [MIT license].
### Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in libSQL by you, shall be licensed as MIT, without any additional
terms or conditions.[MIT license]: https://github.com/tursodatabase/go-libsql/blob/main/LICENSE
[example directory]: https://github.com/tursodatabase/go-libsql/tree/main/example