🦆
ws4sqlite
v0.16
v0.16
  • 🌱Introduction & Credits
  • 🥇Features
    • 🚄Performances
  • 🏫Tutorial
  • 🔦Cheat Sheet
  • 🏗️Building & Testing
  • 🛡️Security
  • 📖Documentation
    • 🔧Installation
      • 🐳Docker
    • 🏃Running
    • 📃Configuration File
    • 🔓Authentication
    • 📦Stored Statements
    • ❓Requests
    • ❗Responses
    • ❌Errors
    • 🔨Scheduled Tasks
    • 🌐Embedded Web Server
  • 💡Client Libraries
  • 🎓Advanced Topics
  • 🪐Integrations
    • ⚙️Reverse Proxy
  • ⚖️License
  • 👷GitHub Repository
  • 🚁Support on Discord
Powered by GitBook
On this page
Edit on GitHub

Features

PreviousIntroduction & CreditsNextPerformances

Last updated 26 days ago

  • Aligned to ;

  • A (written in Go);

  • HTTP/JSON access, with for convenience;

  • Directly call ws4sqlite on a database (as above), many options available using a YAML companion file;

  • are supported;

  • Serving of in the same server instance;

  • of multiple value sets for a single statement;

  • may be passed to statements positionally (lists) or by name (maps);

  • of queries may be returned as key-value maps, or as values lists;

  • All queries of a call are executed in a ;

  • For each query/statement, specify if a failure should rollback the whole transaction, or the failure is to that query;

  • "": define SQL in the server, and call it from the client;

  • mode, configurable per-db;

  • (VACUUM, sql or backups), also configurable per-db;

  • Provide to execute when a DB is created;

  • mode enabled by default, can be ;

  • to directly serve web pages that can access ws4sqlite without CORS;

  • Quite fast!

  • Compact codebase;

  • Comprehensive test suite (make test);

  • 11 os's/arch's directly supported;

  • , for amd64, arm and arm64.

Security Features

    • on the client, either using HTTP Basic Authentication or specifying the credentials in the request;

    • on the server, either by specifying credentials (also with hashed passwords) or providing a query to look them up in the db itself;

Some design choices:

  • Very thin layer over SQLite. Errors and type translation, for example, are those provided by the SQLite driver;

  • Doesn't support SQLite extensions, to improve portability.

can be configured

A database can be opened in (only queries will be allowed);

It's possible to enforce using , to avoid some forms of SQL injection and receiving SQL from the client altogether;

can be configured and enforced;

It's possible to to a network interface, to limit access.

Doesn't include HTTPS, as this can be done easily (and much more securely) with a ;

🥇
SQLite 3.49.1
single executable file
client libraries
In-memory DBs
multiple databases
Batching
transaction
limited
Stored Statements
CORS
Scheduled tasks
initialization statements
WAL
disabled
Embedded web server
Docker images
Parameters
Results
Authentication
read-only mode
only stored statements
CORS Allowed Origin
bind
reverse proxy