use axum::{
extract::{Request, State},
middleware::Next,
response::Response,
};
use crate::{app::App, clock::RequestedAt, error::Internal};
// Expires messages and conversations before each request.
pub async fn middleware
(
State(app): State>,
RequestedAt(expired_at): RequestedAt,
req: Request,
next: Next,
) -> Result {
app.tokens().expire(&expired_at).await?;
app.invites().expire(&expired_at).await?;
app.messages().expire(&expired_at).await?;
app.messages().purge(&expired_at).await?;
app.conversations().expire(&expired_at).await?;
app.conversations().purge(&expired_at).await?;
Ok(next.run(req).await)
}