Commit Graph

563 Commits

Author SHA1 Message Date
Sebastian Jeltsch
c4a4dfd575 Update rusqlite to v0.35, which has more strict query validation \o/. Also update other Rust and JS deps. 2025-05-03 11:42:59 +02:00
Sebastian Jeltsch
122dd1ebb0 Allow applying recorded transaction as migration or plain transaction. Add tests. 2025-05-02 21:31:34 +02:00
Sebastian Jeltsch
4ce729742f Minor: cleanup MigrationWriter. 2025-05-02 09:24:59 +02:00
Sebastian Jeltsch
45aa2397d6 Minor: move JS http handler logic entirely to trailbase-core. 2025-05-01 17:54:41 +02:00
Sebastian Jeltsch
4452d46ea8 Streamline and better document JS runtime. Also add a test to ensure event loop can progresses, while some external call is blocked. 2025-05-01 15:45:36 +02:00
Sebastian Jeltsch
134b1e7a84 Move SQLite connection out of JS runtime. 2025-04-29 22:20:14 +02:00
Sebastian Jeltsch
141a9148a8 Simplify JS runtime event loop. Only a single message type. 2025-04-29 21:10:24 +02:00
Sebastian Jeltsch
e897169aac Move JS runtime into a separate crate. 2025-04-29 13:47:10 +02:00
Sebastian Jeltsch
843d78ee7e Minor: use kanal for JS runtime. 2025-04-29 00:39:52 +02:00
Sebastian Jeltsch
c1a14c249f Minor: simplify some of the JS runtime integration. 2025-04-28 17:53:46 +02:00
Sebastian Jeltsch
d97e9a0366 Prepare new release v0.10.1. v0.10.1 2025-04-28 14:55:12 +02:00
Sebastian Jeltsch
9ca34f46f3 Further tune SQLite execution model.
Previously reader and writer channels were operating entirely
independently, which yields the lowest overhead for pure read and pure
write benchmarks.
In mixed workloads like prod, however, this is not ideal since we're
running into SQLite's own file-locking, which has more overhead than
in-process locking.

With this change, we use an RwLock to reduce congestion while still
allowing parallel reads.
Together with a low-overhead kanal channel, we see little to no
regression for pure read and pure write benchmarks, while seeing about a
3x improvement for mixed workloads.

We also move ACL checks for Create/Update queries to the writer SQLite
connection, to reduce thrashing.
2025-04-28 14:11:44 +02:00
Sebastian Jeltsch
03d2260737 Change Rust client's arguments to a builder approach (as opposed to leaking the struct) for better forward compatibility. 2025-04-28 11:16:50 +02:00
Sebastian Jeltsch
681db62e8f Fully qualify filter columns to avoid ambiguous column error for filtering on columns named "id". #52 2025-04-28 09:31:58 +02:00
Sebastian Jeltsch
0f1e52e40a Add offset pagination parameter to Python client. 2025-04-27 23:51:50 +02:00
Sebastian Jeltsch
dc8521752e Add offset pagination parameter to dotnet client. 2025-04-27 23:46:31 +02:00
Sebastian Jeltsch
a7a931f51f Add offset pagination parameter to Rust client. 2025-04-27 23:28:31 +02:00
Sebastian Jeltsch
20799ca6a9 Add offset pagination parameter to JS/TS client and docs. 2025-04-27 23:25:53 +02:00
Sebastian Jeltsch
8ecd169ec6 Update/tighten Dart client's deps. 2025-04-27 23:25:47 +02:00
Sebastian Jeltsch
4a7eab33d6 Add offset pagination parameter to Dart client. 2025-04-27 23:01:57 +02:00
Sebastian Jeltsch
0a34ace683 Support ?offset=N queries for record listings. #50 2025-04-27 15:38:55 +02:00
Sebastian Jeltsch
c941aa9393 Return error from list for incompatible combination of order and cursor. 2025-04-27 15:25:15 +02:00
Sebastian Jeltsch
ef9a8df637 Return error when user-provided limit exceeds hard limit during listing. 2025-04-27 13:58:15 +02:00
Sebastian Jeltsch
d994d32629 Escape filter column name and make cursor clause option. 2025-04-27 12:08:01 +02:00
Sebastian Jeltsch
706870c50a Minor: use const reference internally for SQLite read queue operations. 2025-04-27 12:07:58 +02:00
Sebastian Jeltsch
2eb71199c0 Add tests to ensure ordering and cursor play well together in tests #50. 2025-04-26 14:48:51 +02:00
Sebastian Jeltsch
4728cb8f7b Consider PK ordering when filtering by cursor during list queries. #50 2025-04-26 14:00:56 +02:00
Sebastian Jeltsch
f1d84f5760 Update JS and Rust dependencies. 2025-04-25 17:08:26 +02:00
Sebastian Jeltsch
d79f8e0697 Doc: overhaul PocketBase comparison. 2025-04-25 11:41:27 +02:00
Sebastian Jeltsch
3729f70b7b Prepare new release v0.10.0. v0.10.0 2025-04-24 21:02:14 +02:00
Sebastian Jeltsch
4487d30b79 Put early queue work and apalis deps behind a "queue" feature. 2025-04-24 15:44:17 +02:00
Sebastian Jeltsch
2908e9fde6 Make Params immutable and avoid double filtering of request fields by schema columns. 2025-04-24 15:05:44 +02:00
Sebastian Jeltsch
7a2120455d Support field presence checks in create/update access rules, e.g. 'foo' IN _REQ_FIELDS_. 2025-04-24 15:05:05 +02:00
Sebastian Jeltsch
969c591641 Fix: add back missing geoip extension for logs db. 2025-04-24 14:54:59 +02:00
Sebastian Jeltsch
d7766c4a05 Allow RecordApis to explicitly exclude columns. 2025-04-24 12:13:23 +02:00
Sebastian Jeltsch
af1f9bb1bf Update dependencies. 2025-04-24 11:34:27 +02:00
Sebastian Jeltsch
f0e5570f96 Update website to Tailwind v4.
Everything else is still on Tailwind v3, since we depend on solid-ui,
which doesn't yet support v4:
https://github.com/stefan-karger/solid-ui/issues/166#issuecomment-2822360321,
however this way we can build some familiarity with the new system.

Sadly, the tailwind eslint plugin had to be disabled because it doesn't
support v4 and the v4 alpha is completely disfunct:
https://github.com/francoismassart/eslint-plugin-tailwindcss/issues/325.
2025-04-24 10:40:51 +02:00
Sebastian Jeltsch
22bea3e6eb Add a better footer to website. 2025-04-23 23:04:46 +02:00
Sebastian Jeltsch
fe2e8cfda4 Clean up Sqlite connection setup, no-parallel reads for in-memory dbs, and add a placeholder storage for persisting apalis queues. 2025-04-23 11:56:36 +02:00
Sebastian Jeltsch
79e6244a19 Update JS deps. 2025-04-22 21:52:12 +02:00
Sebastian Jeltsch
bbd24f93d2 Prepare new release v0.9.4. v0.9.4 2025-04-22 16:44:54 +02:00
Sebastian Jeltsch
e2ed64a815 Crank up optimizations in github release workflow mostly just yielding smaller binaries. 2025-04-22 16:12:51 +02:00
Sebastian Jeltsch
711902e551 Install a SIGHUP handler to reload configuration. #49 2025-04-22 15:44:09 +02:00
Sebastian Jeltsch
9289eb2bdc Split validation logic for insert and update row paths. Defaults must only apply on insert. #47 2025-04-22 14:54:08 +02:00
Sebastian Jeltsch
7cff40b8d2 Don't pre-fill default ins insert/update row form for a wider definition of optional fields. #47 2025-04-21 22:44:15 +02:00
Sebastian Jeltsch
68984f5b83 Make integer primary keys optional in row creation form. #47 2025-04-21 09:35:53 +02:00
Sebastian Jeltsch
22f4a20c72 Update Rust dependencies. 2025-04-21 09:11:41 +02:00
Sebastian Jeltsch
d6b199587d Update to Rust edition 2024. 2025-04-20 07:36:26 +02:00
Sebastian Jeltsch
ebddc51d85 Enable apalis' generic and default storage backend tests. 2025-04-20 07:36:00 +02:00
Sebastian Jeltsch
63c330c4e5 Add a custom PoC apalis queue storage backend.
Forked from apalis-sql's sqlite implementation.
2025-04-20 07:35:55 +02:00