Commit Briefs
Bump version to 0.3.0 (tags/0.3.0)
Release notes can be found at https://git.sr.ht/~witcher/rss-email/refs/0.3.0
Send E-Mails asynchronously
Thanks to the introduction of tokio in the codebase, E-Mails can now be sent asynchronously as well, speeding up the implementation even more. Implements: https://todo.sr.ht/~witcher/rss-email/16
Remove feedurl and author from database
This patch removes the columns `feedurl` and `author` from the database schema as they're not used by the program or any feeds I've come across.
Add Atom support
This patch adds Atom support besides the already existing RSS support. First the feed is trying to be interpreted as RSS, then as Atom if that didn't work. Implements: https://todo.sr.ht/~witcher/rss-email/15
Fix panic on insertion and invalid time stamp (tags/0.2.1)
rss-email would panic when inserting a post that already is inserted (primary key already exists), so the insertion is skipped entirely (`INSERT OR IGNORE`). If a post has an invalid time stamp, the application would also panic, even though the timestamp is not crucial data. Instead, a default is used for the timestamp.
Bump version (tags/0.2.0)
Build CI in debug mode
Not building CI in release mode will speed up compilation and use less resources on the CI host. Building in release mode is also not needed currently anymore as no build artifacts are generated for download.
Add migrations to use with sqlx
Migrations are embedded into the binary and run on startup with `sqlx::migrate!()`.
Replace diesel with sqlx
This replaces the non-async Diesel with the async sqlx to allow for better performance through parallelising the insertion or updating of posts in the database. Migrations have not yet been implemented. Implements: https://todo.sr.ht/~witcher/rss-email/12 Implements: https://todo.sr.ht/~witcher/rss-email/3
Implement async fetching
This changeset implements fetching of RSS feeds asynchronously. It's still no perfect though: data from feeds is inserted into the database synchronously, and requests are temporarily paused while this happens (since we're doing blocking IO to the database). A potential solution to this is to have one thread that does the networking, and another which inserts into the DB, with something like an mpsc::channel to pass messages between them. This requires further refactor and can be done as a followup. It would also be great to re-use a single reqwest::Client, but that also requires further refactors. Despite imperfections, this patch still provides a noticeable speed bump; networking IO for one feed does not block others. References: https://todo.sr.ht/~witcher/rss-email/3
CI: Remove build artifacts
Build artifacts are now removed as diesel does not support dynamic linking. References: https://todo.sr.ht/~witcher/rss-email/11
CI: Remove step verifying signature of commit
This blocked patches from being built in CI.
Use RustTLS instead of native OpenSSL
Signed-off-by: jman <srht@city17.xyz>
