mirror of
https://github.com/modrinth/code.git
synced 2026-07-31 21:26:40 +00:00
Filter servers out from analytics dependents (#6445)
This commit is contained in:
Generated
+22
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user