diff --git a/sqlx-data.json b/sqlx-data.json index 1c526f822..658257d40 100644 --- a/sqlx-data.json +++ b/sqlx-data.json @@ -3681,6 +3681,18 @@ }, "query": "\n SELECT f.url url, h.hash hash, h.algorithm algorithm, f.version_id version_id, v.mod_id project_id FROM hashes h\n INNER JOIN files f ON h.file_id = f.id\n INNER JOIN versions v ON v.id = f.version_id\n INNER JOIN mods m on v.mod_id = m.id\n INNER JOIN statuses s on m.status = s.id\n WHERE h.algorithm = $2 AND h.hash = ANY($1::bytea[]) AND s.status != $3\n " }, + "9c8f3f9503b5bb52e05bbc8a8eee7f640ab7d6b04a59ec111ce8b23e886911de": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Left": [ + "Int8" + ] + } + }, + "query": "\n DELETE FROM dependencies WHERE dependent_id = $1\n " + }, "9ceca63fb11f35f09f77bb9db175a1ac74dfcc2200c8134866922742fbbedea3": { "describe": { "columns": [], @@ -3840,18 +3852,6 @@ }, "query": "\n DELETE FROM states\n WHERE id = $1\n " }, - "a40e4075ba1bff5b6fde104ed1557ad8d4a75d7d90d481decd222f31685c4981": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Left": [ - "Int8" - ] - } - }, - "query": "\n DELETE FROM dependencies WHERE dependent_id = $1\n " - }, "a647c282a276b63f36d2d8a253c32d0f627cea9cab8eb1b32b39875536bdfcbb": { "describe": { "columns": [], diff --git a/src/routes/versions.rs b/src/routes/versions.rs index cf7f18577..0ade05446 100644 --- a/src/routes/versions.rs +++ b/src/routes/versions.rs @@ -208,6 +208,12 @@ pub async fn version_edit( let result = database::models::Version::get_full(id, &**pool).await?; if let Some(version_item) = result { + let project_item = database::models::Project::get_full( + version_item.project_id, + &**pool, + ) + .await?; + let team_member = database::models::TeamMember::get_from_user_id_version( version_item.id, @@ -281,29 +287,33 @@ pub async fn version_edit( } if let Some(dependencies) = &new_version.dependencies { - sqlx::query!( - " - DELETE FROM dependencies WHERE dependent_id = $1 - ", - id as database::models::ids::VersionId, - ) - .execute(&mut *transaction) - .await?; - - let builders = dependencies - .iter() - .map(|x| database::models::version_item::DependencyBuilder { - project_id: x.project_id.map(|x| x.into()), - version_id: x.version_id.map(|x| x.into()), - file_name: x.file_name.clone(), - dependency_type: x.dependency_type.to_string(), - }) - .collect::>(); - - for dependency in builders { - dependency - .insert(version_item.id, &mut transaction) + if let Some(project) = project_item { + if project.project_type != "modpack" { + sqlx::query!( + " + DELETE FROM dependencies WHERE dependent_id = $1 + ", + id as database::models::ids::VersionId, + ) + .execute(&mut *transaction) .await?; + + let builders = dependencies + .iter() + .map(|x| database::models::version_item::DependencyBuilder { + project_id: x.project_id.map(|x| x.into()), + version_id: x.version_id.map(|x| x.into()), + file_name: x.file_name.clone(), + dependency_type: x.dependency_type.to_string(), + }) + .collect::>(); + + for dependency in builders { + dependency + .insert(version_item.id, &mut transaction) + .await?; + } + } } }