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.
If you want to... | Folder | Documentation |
---|---|---|
Use the lower-level sqlite3 bindings similar to the C API | sys/sqlite3 | README.md |
Use high-concurrency high-level interface including statement caching and connection pool | pkg/sqlite3 | README.md |
Implement or use a REST API to sqlite3 | plugin/sqlite3 | README.md |
Develop or use a front-end web service to the REST API backend | npm/sqlite3 | README.md |
Use an "object" interface to persist structured data | pkg/sqobj | README.md |
Use a statement builder to programmatically write SQL statements | pkg/lang | README.md |
Implement a generalized data importer from CSV, JSON, Excel, etc | pkg/importer | README.md |
Implement a search indexer | pkg/indexer | README.md |
Tokenize SQL statements for syntax colouring (for example) | pkg/tokenizer | README.md |
See example command-line tools | cmd | README.md |
- go1.17 or later;
- Tested on Debian Linux (32- and 64- bit) on ARM and macOS on x64 architectures.
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 thebuild
folder;make server plugins
will install the backend server and required plugins in thebuild
folder;make npm
will compile the frontend web application in a 'dist' folder for each npm module located in thenpm
folder;make clean
will remove all build artifacts.
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.