Skip to content

Releases: marcua/ayb

v0.1.9

03 Dec 03:49
Compare
Choose a tag to compare

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

Full Changelog: v0.1.8...v0.1.9

v0.1.8

27 Aug 04:19
Compare
Choose a tag to compare

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

25 Feb 14:45
Compare
Choose a tag to compare

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

New Contributors

  • @Suguivy made their first contribution in #286

Full Changelog: v0.1.6...v0.1.7

v0.1.6

14 Jan 14:50
Compare
Choose a tag to compare

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 or ayb 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

18 Nov 03:46
Compare
Choose a tag to compare

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 on tokio1-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

Full Changelog: v0.1.4...v0.1.5

v0.1.4

04 Jun 23:24
cfad960
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: https://github.com/marcua/ayb/commits/v0.1.4