SUMMARY
Comment on gist and utilities to generate post comment REST
endpoint route from username and gist public ID component
ERRORS
- Gist doesn't exist, 404 GistNotFound is returned
- Gist is private and commenting user is not ower, 404 GistNotFound
is returned
- Comment is empty, 400 EmptyComment is returned
The following changes are implemented for both db-sqlx-postgres and
db-sqlx-sqlite:
TABLE gists_gists
Stores gist metadata with unique index on gists_gists.public_id for fast
lookups
TABLE gists_comments
Stores comment metadata
TABLE gists_privacy
Stores gist privacy: sqlx currently doesn't have support Postgres
enums(ref: https://github.com/launchbadge/sqlx/issues/1171), so storing
possible privacy values as references from this table.
This table shouldn't be mutated during runtime. Possible values are
already recorded in database during migrations. All runtime operations
on this table must only take references.
Each implementation of GistDatabase also includes a method called
privacy_exists, which is called during tests to ensure that
migrations are successful.
VIEW gists_gists_view
Gist lookups combines data from gists_users, gists_gists and
gists_privacy. This SQL view boots performance(I think?). At any rate,
it is much nicer to work with.
QUIRKS
Database indexes are i64 in SQLite while i32 in Postgres
AUTHENTICATION
- Sign Up
- Sign IN
ACCOUNT
- Username Exists
- Email Exists
- Account delete
- Password update
- Email update
- Username update
- Get account secret
- Update secret
All routes are implemented with proper error handling and testing
CONFIGURATION
See ./config/default.toml for full list