Releases: marcua/ayb
v0.1.9
High-level description: public and individual sharing
Beyond clearer errors and instructions, the major two features of this release are public sharing levels and individual sharing permissions. By default, only the owner / creator of an ayb
database can access it. It's possible to share ayb
databases in two ways:
- By setting the public sharing level of the database to give all entities some level of access to the database.
- By sharing the database with a particular entity.
To set the public sharing level of a database, select one of the following options:
# The default setting: no entity will be able to access the database
# unless they specifically get permissions.
$ ayb client update_database marcua/test.sqlite --public-sharing-level no-access
# With a public sharing level of `fork`, entities will be able to see
# the database in the owner's list of databases using `ayb client
# list` and fork a copy of the database under their own account. They
# won't be able to query the database unless they fork it. Note:
# Listing access is implemented today, but forking one database into
# another account is not yet implemented.
$ ayb client update_database marcua/test.sqlite --public-sharing-level fork
# In addition to the listing and forking access that `fork`
# allows, `read-only` access allows any entity to
# issue a read-only (e.g., SELECT) query against the database. They
# can't modify the database.
$ ayb client update_database marcua/test.sqlite --public-sharing-level read-only
To provide a specific user with access to a database, select one of the following:
# Revoke access to a database from an entity.
$ ayb client share marcua/test.sqlite sofia no-access
# Allow an entity to make read-only (e.g., SELECT) queries against a
# database.
$ ayb client share marcua/test.sqlite sofia read-only
# Allow an entity to make any type of query against a database.
$ ayb client share marcua/test.sqlite sofia read-write
# Allow an entity to not only modify a database, but also to manage
# snapshots and change the permissions of any non-owner entity.
$ ayb client share marcua/test.sqlite sofia manager
Individual pull requests
Feature/cleanup changes
- Make a few errors that new users are likely ot encounter easier to understand by @marcua in #455
- Migrations for sharing permissions data models by @marcua in #461
- Add instructions for setting up test postgres user on Linux vs macOS by @marcua in #463
- Permissions data models in Rust by @marcua in #466
- Introduce update_database endpoint to enable public sharing level update by @marcua in #473
- Permissions public_sharing_level read-only/fork support by @marcua in #479
- Database sharing with individual entities by @marcua in #487
- Documentation for public sharing level and entity-specific permissions by @marcua in #483
Various dependabot changes
- Bump aws-credential-types from 1.2.0 to 1.2.1 by @dependabot in #452
- Bump rust-s3 from 0.34.0 to 0.35.1 by @dependabot in #454
- Bump async-trait from 0.1.81 to 0.1.83 by @dependabot in #465
- Bump lettre from 0.11.7 to 0.11.9 by @dependabot in #462
- Bump serde_json from 1.0.127 to 1.0.128 by @dependabot in #459
- Bump clap from 4.5.16 to 4.5.18 by @dependabot in #464
- Bump serde from 1.0.209 to 1.0.210 by @dependabot in #460
- Bump serde_json from 1.0.128 to 1.0.129 by @dependabot in #472
- Bump regex from 1.10.6 to 1.11.0 by @dependabot in #468
- Bump uuid from 1.10.0 to 1.11.0 by @dependabot in #471
- Bump tokio-cron-scheduler from 0.11.0 to 0.13.0 by @dependabot in #467
- Bump clap from 4.5.18 to 4.5.20 by @dependabot in #470
- Bump regex from 1.11.0 to 1.11.1 by @dependabot in #477
- Bump serde from 1.0.210 to 1.0.213 by @dependabot in #475
- Bump lettre from 0.11.9 to 0.11.10 by @dependabot in #476
- Bump serde_json from 1.0.129 to 1.0.132 by @dependabot in #474
- Bump serde from 1.0.213 to 1.0.214 by @dependabot in #478
- Bump clap from 4.5.20 to 4.5.21 by @dependabot in #482
- Bump scraper from 0.20.0 to 0.21.0 by @dependabot in #480
- Bump serde from 1.0.214 to 1.0.215 by @dependabot in #481
- Bump blake3 from 1.5.4 to 1.5.5 by @dependabot in #486
- Bump serde_json from 1.0.132 to 1.0.133 by @dependabot in #485
- Bump rustyline from 14.0.0 to 15.0.0 by @dependabot in #484
Full Changelog: v0.1.8...v0.1.9
v0.1.8
What's Changed
The major feature of this release is periodic snapshot-based backups to S3-compatible storage (#14). To learn more, read the snapshots/backups documentation. Beyond snapshots, we introduced a code of conduct and refactored the client / end-to-end tests as each was growing unruly.
- Add code of conduct by @marcua in #310
- Move databases into their own directory, introduce snapshot path (changes storage format, requires migration) by @marcua in #311
- Unsafe mode for SQLite querying by @marcua in #312
- Introduce scheduled periodic snapshot loop with basic vacuum-based backups by @marcua in #316
- Introduce snapshot model, storage manager, and refactor model macros for reuse by @marcua in #317
- Add support for S3
force_path_style
; Introduce localstack for testing; remove debugging symbol details in Cargo.toml by @marcua in #358 - Refactor client functionality in the CLI by @marcua in #365
- Reduce default debugging information for development by @marcua in #367
- Refactor end-to-end tests into smaller groupings by @marcua in #372
- List snapshots endpoint, end-to-end tests, standardize end-to-end test setup, introduce localstack on GH Actions by @marcua in #385
- Ability to restore from a snapshot by @marcua in #405
- Identify snapshots by their hashes by @marcua in #417
- Don't upload snapshot if it's already in S3, prune snapshots once list gets too long by @marcua in #418
- Replace gzip wtih zstd for compressing snapshots by @marcua in #424
- Cleanups/refactors of snapshot execution logic by @marcua in #432
- Add mutex to ensure only one snapshot run happens at a time by @marcua in #444
- Snapshots documentation by @marcua in #446
Full Changelog: v0.1.7...v0.1.8
v0.1.7
What's Changed
The major new feature is interactive mode for multiple queries at the command line by @Suguivy. This release also includes a few bugfixes, some refactors, and documentation updates.
- Return entity slug with confirmation endpoint by @marcua in #279
- Refactor: Move everything but structs from http to server module by @marcua in #284
- Interactive mode for multiple queries by @Suguivy in #286
- Interactive followups by @marcua in #292
Dependency version bumps
- Bump clap from 4.4.15 to 4.4.18 by @dependabot in #276
- Bump assert_cmd from 2.0.12 to 2.0.13 by @dependabot in #273
- Bump actions/cache from 3 to 4 by @dependabot in #278
- Return entity slug with confirmation endpoint by @marcua in #279
- Bump env_logger from 0.10.1 to 0.10.2 by @dependabot in #280
- Bump h2 from 0.3.18 to 0.3.24 by @dependabot in #283
- Bump lettre from 0.11.3 to 0.11.4 by @dependabot in #289
- Bump serde_json from 1.0.111 to 1.0.113 by @dependabot in #293
- Bump toml from 0.8.8 to 0.8.10 by @dependabot in #295
- Bump serde from 1.0.195 to 1.0.197 by @dependabot in #299
- Bump regex from 1.10.2 to 1.10.3 by @dependabot in #285
- Bump tokio from 1.35.1 to 1.36.0 by @dependabot in #298
- Bump actix-web from 4.4.1 to 4.5.1 by @dependabot in #297
- Bump reqwest from 0.11.23 to 0.11.24 by @dependabot in #296
New Contributors
- @Suguivy made their first contribution in #286
Full Changelog: v0.1.6...v0.1.7
v0.1.6
What's Changed
This release packs a punch! At a high level, we've got:
- Support for web frontends like aybWeb: the frontend can share details on its endpoints so
ayb
can point you at the right page for registration, etc. - Tenant isolation for databases: through nsjail, we ensure that queries to one database can't access other databases on the same machine, and that resources like memory and CPU are isolated across databases.
- Client API token saving: When you register or log in with the
ayb
command line, it will remember the server URL and API token you used to save you time in the future. - Profiles: The ability to get details on a user, like
ayb client list
for listing their databases orayb client update_profile
/ayb client profile
for updating and getting their profile information. - Various testing improvements and bug fixes.
The full set of pull requests is here:
- Improve cleanup and test creation in E2E testing by @sofiaritz in #224
- Add
email.templates.confirm.confirmation_url
by @sofiaritz in #225 - Entity retrieval API and
ayb client list
command; Introduce CORS by @sofiaritz in #231 TemplateString
struct by @sofiaritz in #240- Replace
AybError
with an enum by @sofiaritz in #241 - Implement web frontend details by @sofiaritz in #242
- Isolate databases/queries from one-another by @marcua in #235
- Make clippy break build on warnings by @marcua in #253
- Implement user profiles and rel=me verification by @sofiaritz in #248
- Save API tokens and default server URL locally by @marcua in #259
- Fix profile update bug by @marcua in #268
- Test for different casing on entity slugs, catch an error in the database interface, lowercase slugs before query by @marcua in #269
- ...and a whole bunch of package updates from @dependabot
Full Changelog: v0.1.5...v0.1.6
v0.1.5
What's Changed
- Update text based on blog post by @marcua in #107
- Link to blog post by @marcua in #113
- Readme updates by @marcua in #144
- Add fernet and lettre libraries to faciliate short-lived tokens and email authentication by @marcua in #146
- Add
lettre
dependency ontokio1-native-tls
by @marcua in #147 - Move serde_json from dev_dependencies to dependencies by @marcua in #157
- Email registration and login by @marcua in #145
- Create API key on account creation/login, validate permissions on sensitive endpoints by @marcua in #211
- Add explicit lifetimes in constants by @sofiaritz in #212
- Introduce Clippy, apply automated fixes, place endpoints in their own files, and introduce conversion macros by @sofiaritz in #222
- Introduce
ayb default_server_config
command by @marcua in #223
New Contributors
- @sofiaritz made their first contribution in #212. Thank you @sofiaritz! :)
Full Changelog: v0.1.4...v0.1.5
v0.1.4
What's Changed
- Command line SQLite queries by @marcua in #1
- Separate field names from results, add a test for the CLI by @marcua in #4
- Add an action to run tests by @marcua in #5
- Move non-CLI code into modules by @marcua in #8
- HTTP api by @marcua in #11
- Data models, persistence, and a CRUD API by @marcua in #12
- Refactor server, add client HTTP library, add CLI by @marcua in #22
- Bump assert_cmd from 2.0.7 to 2.0.8 by @dependabot in #27
- Bump tokio from 1.23.0 to 1.24.2 by @dependabot in #29
- Bump reqwest from 0.11.13 to 0.11.14 by @dependabot in #28
- Bump serde from 1.0.151 to 1.0.152 by @dependabot in #26
- Bump tokio from 1.24.2 to 1.25.0 by @dependabot in #33
- Bump rusqlite from 0.27.0 to 0.28.0 by @dependabot in #32
- Bump actix-web from 4.2.1 to 4.3.0 by @dependabot in #31
- Bump clap from 3.2.23 to 4.1.4 by @dependabot in #30
- Bump serde_json from 1.0.91 to 1.0.93 by @dependabot in #35
- End-to-end test of CLI and server by @marcua in #25
- Bump clap from 4.1.4 to 4.1.6 by @dependabot in #38
- Bump actix-web from 4.3.0 to 4.3.1 by @dependabot in #42
- Bump clap from 4.1.6 to 4.1.7 by @dependabot in #43
- Bump serde from 1.0.152 to 1.0.154 by @dependabot in #49
- Bump serde_json from 1.0.93 to 1.0.94 by @dependabot in #47
- Bump serde_repr from 0.1.10 to 0.1.11 by @dependabot in #46
- Bump tokio from 1.25.0 to 1.26.0 by @dependabot in #45
- Bump clap from 4.1.7 to 4.1.8 by @dependabot in #44
- Bump serde from 1.0.154 to 1.0.156 by @dependabot in #53
- CLI usability & API cleanup by @marcua in #57
- Pretty-printed table, CSV output, and row counts by @marcua in #58
- Bump clap from 4.1.10 to 4.1.11 by @dependabot in #60
- Bump openssl from 0.10.46 to 0.10.48 by @dependabot in #66
- Bump dotenvy from 0.15.6 to 0.15.7 by @dependabot in #65
- Bump regex from 1.7.1 to 1.7.2 by @dependabot in #64
- Bump sqlx from 0.6.2 to 0.6.3 by @dependabot in #63
- Bump reqwest from 0.11.14 to 0.11.15 by @dependabot in #62
- Bump serde from 1.0.157 to 1.0.158 by @dependabot in #61
- Move all server config into toml by @marcua in #72
- Rename 'create_entity' to 'register' by @marcua in #73
- Bump tokio from 1.26.0 to 1.27.0 by @dependabot in #71
- Bump serde_json from 1.0.94 to 1.0.95 by @dependabot in #70
- Bump reqwest from 0.11.15 to 0.11.16 by @dependabot in #69
- Bump regex from 1.7.2 to 1.7.3 by @dependabot in #67
- Bump rusqlite from 0.28.0 to 0.29.0 by @dependabot in #68
- Bump serde from 1.0.158 to 1.0.159 by @dependabot in #74
- Bump assert_cmd from 2.0.10 to 2.0.11 by @dependabot in #78
- Rename Stacks to ayb by @marcua in #79
- Bump h2 from 0.3.16 to 0.3.17 by @dependabot in #77
- Bump serde_json from 1.0.95 to 1.0.96 by @dependabot in #76
- Bump serde from 1.0.159 to 1.0.160 by @dependabot in #75
- Add data path to server config by @marcua in #82
- Bump regex from 1.7.3 to 1.8.0 by @dependabot in #80
- Bump clap from 4.2.4 to 4.2.5 by @dependabot in #84
- Bump tokio from 1.27.0 to 1.28.0 by @dependabot in #83
- Handle non-string types; remove old query subcommand/tests by @marcua in #85
- Bump serde from 1.0.160 to 1.0.161 by @dependabot in #88
- Bump clap from 4.2.5 to 4.2.7 by @dependabot in #87
- Bump reqwest from 0.11.16 to 0.11.17 by @dependabot in #86
- Bump serde from 1.0.161 to 1.0.162 by @dependabot in #89
- Bump tokio from 1.28.0 to 1.28.1 by @dependabot in #90
- Bump serde from 1.0.162 to 1.0.163 by @dependabot in #91
- Bump reqwest from 0.11.17 to 0.11.18 by @dependabot in #94
- Support for SQLite storage of ayb metadata by @marcua in #100
New Contributors
- @marcua made their first contribution in #1
- @dependabot made their first contribution in #27
Full Changelog: https://github.com/marcua/ayb/commits/v0.1.4