···1818 .map_err(|e| AppError::Internal(format!("failed to count records: {e}")))?;
19192020 let collections: Vec<(String, i64)> = sqlx::query_as(
2121- "SELECT collection, COUNT(*) FROM records GROUP BY collection ORDER BY collection",
2121+ r#"
2222+ SELECT c.collection, COALESCE(r.cnt, 0) AS count
2323+ FROM (
2424+ SELECT id AS collection FROM lexicons
2525+ WHERE lexicon_json->'defs'->'main'->>'type' = 'record'
2626+ ) c
2727+ LEFT JOIN (
2828+ SELECT collection, COUNT(*) AS cnt FROM records GROUP BY collection
2929+ ) r ON r.collection = c.collection
3030+ ORDER BY c.collection
3131+ "#,
2232 )
2333 .fetch_all(&state.db)
2434 .await