Commit Graph

11 Commits

Author SHA1 Message Date
c445ac475a Add a binary that uses a Postgres backend
Building of this binary is controlled with features, allowing downstream
users to build just the SQLite version and not be concerned with the
tokio-postgres dependency tree (which includes links to OpenSSL and
other details). The Postgres version is disabled by default.

This does not change the binary name for the SQLite build, just to avoid
confusion for people upgrading to the new version.
2025-07-25 22:01:14 -04:00
c539e604d9 Merge pull request #126 from djmitche/async
Make Storage methods async
2025-07-13 09:25:43 -04:00
7559364017 Make Storage methods async
This will better support concurrent requests.
2025-07-11 17:37:14 -04:00
0a71cce2d1 use a struct for arguments to WebServer::new 2025-07-10 22:10:50 -04:00
3a794341ce Allow disabling automatic creation of clients
This may be useful in multi-user deployment scenarios where some
external administrative tools are used to create new clients.
2025-07-10 21:49:57 -04:00
8e6d901bf2 Fix new clippy lints 2024-11-30 02:54:38 +00:00
1828a31a24 Make storage transactions specific to a client_id (#67)
Transactions for different client_ids cannot interfere with one another,
so this provides an opportunity for the sort of concurrency that a
mult-client hosting solution might need. For example, a postgres backend
could lock the client row in each transaction.
2024-11-27 00:09:03 -05:00
4029c03479 Support sequential consistency in SQLite implementation (#64)
This is a bit tricky because the `Storage` trait is `Send + Sync`, but
an SQLite connection is neither. Since this is not intended for
large-scale use, the simple solution is just to open a new SQLite
connection for each transaction. More complex alternatives include
thread-local connection pools or a "worker thread" that owns the
connection and communicates with other threads via channels.

This also updates the InMemoryStorage implementation to be a bit more
strict about transactional integrity, which led to a number of test
changes.
2024-11-26 16:22:35 -05:00
50d028f45e Support a client-id allowlist (#62)
This will support setting up publicly-accessible personal servers,
without also allowing anyone to create a new client.
2024-11-21 21:27:52 -05:00
5ad3b8e8bf Reorganize the core API (#60) 2024-11-19 18:22:42 -05:00
47ce4c1e3b Split the server into three crates (#56)
This will make it easier to build variations on the server, or embed it
into larger projects.
2024-11-17 15:12:42 -05:00