Filter servers out from analytics dependents (#6445)

This commit is contained in:
aecsocket
2026-06-22 15:07:02 +00:00
committed by GitHub
parent 2c53e1240e
commit 23edb2351d
2 changed files with 52 additions and 1 deletions
@@ -0,0 +1,22 @@
{
"db_name": "PostgreSQL",
"query": "\n SELECT id FROM mods\n WHERE id = ANY($1)\n AND components ? 'minecraft_server'\n ",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": "Int8"
}
],
"parameters": {
"Left": [
"Int8Array"
]
},
"nullable": [
false
]
},
"hash": "6ebb0cffc875f50ebe95b91e4735f1c520155d65a5c51021224ab4461c688db8"
}
@@ -332,9 +332,31 @@ async fn fetch_dependent_version_projects(
DBVersion::get_many(&dependent_on_version_ids, cx.pool, cx.redis)
.await?;
let dependent_project_ids = versions
.iter()
.map(|version| version.inner.project_id.0)
.collect::<Vec<_>>();
let server_projects = sqlx::query!(
"
SELECT id FROM mods
WHERE id = ANY($1)
AND components ? 'minecraft_server'
",
&dependent_project_ids,
)
.fetch_all(cx.pool)
.await
.wrap_internal_err("failed to fetch server dependent projects")?
.into_iter()
.map(|project| DBProjectId(project.id))
.collect::<HashSet<_>>();
Ok(versions
.into_iter()
.map(|version| (version.inner.id, version.inner.project_id))
.filter_map(|version| {
(!server_projects.contains(&version.inner.project_id))
.then_some((version.inner.id, version.inner.project_id))
})
.collect())
}
@@ -419,6 +441,13 @@ pub(crate) async fn fetch(
{
continue;
}
if uses(F::DependentProjectId)
&& row.dependent_on_version_id.0 != 0
&& !dependent_version_projects
.contains_key(&row.dependent_on_version_id)
{
continue;
}
let key = DownloadBucket {
bucket: row.bucket,