From aafdeb9ffaf9a993ca4462b3422667e04469b2e3 Mon Sep 17 00:00:00 2001 From: Owen Jacobson Date: Fri, 20 Sep 2024 16:09:35 -0400 Subject: Expire messages after 90 days. This is intended to manage storage growth. A community with broadly steady traffic will now reach a steady state (ish) where the amount of storage in use stays within a steady band. The 90 day threshold is a spitball; this should be made configurable for the community's needs. I've also hoisted expiry out into the `app` classes, to reduce the amount of non-database work repo types are doing. This should make it easier to make expiry configurable later on. Includes incidental cleanup and style changes. --- src/channel/repo/broadcast.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/channel/repo/broadcast.rs') diff --git a/src/channel/repo/broadcast.rs b/src/channel/repo/broadcast.rs index ff16cd0..182203a 100644 --- a/src/channel/repo/broadcast.rs +++ b/src/channel/repo/broadcast.rs @@ -68,6 +68,20 @@ impl<'c> Broadcast<'c> { Ok(message) } + pub async fn expire(&mut self, expire_at: &DateTime) -> Result<(), sqlx::Error> { + sqlx::query!( + r#" + delete from message + where sent_at < $1 + "#, + expire_at, + ) + .execute(&mut *self.0) + .await?; + + Ok(()) + } + pub async fn replay( &mut self, channel: &Channel, -- cgit v1.2.3