diff --git a/server/sql/tags.sql b/server/sql/tags.sql index ff45f78..399b654 100644 --- a/server/sql/tags.sql +++ b/server/sql/tags.sql @@ -8,6 +8,11 @@ SELECT FROM post AS p JOIN feed AS f ON p.site = f.slug +WHERE + ( + NOT $1 + OR NOT is_read + ) GROUP BY 1, 2 diff --git a/server/src/graphql.rs b/server/src/graphql.rs index d293d29..8bb2ab4 100644 --- a/server/src/graphql.rs +++ b/server/src/graphql.rs @@ -244,8 +244,8 @@ impl QueryRoot { let nm = ctx.data_unchecked::(); let pool = ctx.data_unchecked::(); let needs_unread = ctx.look_ahead().field("unread").exists(); - let mut tags = nm::tags(nm, needs_unread)?; - tags.append(&mut newsreader::tags(pool, needs_unread).await?); + let mut tags = newsreader::tags(pool, needs_unread).await?; + tags.append(&mut nm::tags(nm, needs_unread)?); Ok(tags) } async fn thread<'ctx>(&self, ctx: &Context<'ctx>, thread_id: String) -> Result { diff --git a/server/src/newsreader.rs b/server/src/newsreader.rs index f373eec..ebab1bb 100644 --- a/server/src/newsreader.rs +++ b/server/src/newsreader.rs @@ -92,7 +92,9 @@ pub async fn search( pub async fn tags(pool: &PgPool, needs_unread: bool) -> Result, ServerError> { // TODO: write separate query for needs_unread. - let tags = sqlx::query_file!("sql/tags.sql").fetch_all(pool).await?; + let tags = sqlx::query_file!("sql/tags.sql", needs_unread) + .fetch_all(pool) + .await?; let tags = tags .into_iter() .map(|tag| {