go-sqlite
This module provides an interface for sqlite, including:
- Opening in-memory databases and persistent file-based databases;
- Transactions (committing changes and rolling back on errors);
- Adding custom functions, authentication and authorization;
- Reflection on databases (schemas, tables, columns, indexes, etc);
- Executing arbitrary statements or building statements programmatically;
- A pool of connections to run sqlite in a highliy concurrent environment such as a webservice;
- A backend REST API for sqlite;
- A generalized importer to import data from other data sources in different formats;
- A generalized file indexer to index files in a directory tree and provide a REST API
to search them;
- A frontend web application to explore and interact with databases.
Presently the module is in development and the API is subject to change.
Requirements
- go1.17 or later;
- Tested on Debian Linux (32- and 64- bit) on ARM and macOS on x64
architectures.
Building
There are some examples in the cmd
folder of the main repository on how to use
the package. The various make targets are:
make all
will perform tests, build all examples, the backend API and the frontend web application;make test
will perform tests;make cmd
will build example command-line tools into the build
folder;make server plugins
will install the backend server and required plugins in the build
folder;make npm
will compile the frontend web application in a 'dist' folder for each npm module located in the npm
folder;make clean
will remove all build artifacts.
Contributing & Distribution
This module is currently in development and subject to change.
Please do file feature requests and bugs here.
The license is Apache 2 so feel free to redistribute. Redistributions in either source
code or binary form must reproduce the copyright notice, and please link back to this
repository for more information:
Copyright (c) 2021, David Thorpe, All rights reserved.