Commits


Fix panic on insertion and invalid time stamp 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


Fix clippy lint


Elaborate on sqlx for compiling and contributing


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 `sqlx-data.json` for building in offline mode


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: Use release builds only


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 `openssl-dev` package


CI: Remove step verifying signature of commit This blocked patches from being built in CI.


Update Cargo.lock


Use RustTLS instead of native OpenSSL Signed-off-by: jman <srht@city17.xyz>


CI: Build in release mode


Strip symbols on release builds + building docs Enable stripping symbols with cargo by default on release builds. Build documentation with `scdoc` in CI.


Add man page


Fix formatting


Always append URL to body of E-Mail Closes: https://todo.sr.ht/~witcher/rss-email/7


TLS: Let lib handle TLS settings This seems to work for Migadu as an SMTP server, but hasn't been tested with other SMTP servers (e.g. without any TLS at all). Closes: https://todo.sr.ht/~witcher/rss-email/8


Extract config and mailer modules Closes: https://todo.sr.ht/~witcher/rss-email/9


Use specified port for smtp server in config


Add LICENSE


Add README.md