diff --git a/src/quotes/mod.rs b/src/quotes/mod.rs index 33aa529..48fefb3 100644 --- a/src/quotes/mod.rs +++ b/src/quotes/mod.rs @@ -113,6 +113,20 @@ impl Quote { None => Ok(None), } } + pub fn get_newest_public(conn: &Connection) -> Result, QuoteError> { + let id: Option = conn + .query_row( + "SELECT id FROM quotes ORDER BY id DESC LIMIT 1 WHERE public = 1", + (), + |r| r.get(0), + ) + .optional()?; + + match id { + Some(id) => Ok(Some(Self::get_by_id(conn, id)?)), + None => Ok(None), + } + } pub fn get_chronological_offset( conn: &Connection, offset: i64, diff --git a/src/web/pages/dashboard.rs b/src/web/pages/dashboard.rs index 34f68e8..29c803f 100644 --- a/src/web/pages/dashboard.rs +++ b/src/web/pages/dashboard.rs @@ -25,7 +25,10 @@ pub async fn page(req: Request) -> Result { let u = User::authenticate(req.headers()).ok().flatten(); let conn = database::conn()?; - let newest_quote = Quote::get_newest(&conn)?; + let newest_quote = match u { + Some(_) => Quote::get_newest(&conn)?, + None => Quote::get_newest_public(&conn)?, + }; Ok(base( "Dashboard | Mnemosyne",