diff --git a/sqlx-data.json b/sqlx-data.json index 41000ee1d..48fba0fd8 100644 --- a/sqlx-data.json +++ b/sqlx-data.json @@ -5047,6 +5047,26 @@ }, "query": "\n SELECT id FROM categories\n WHERE category = $1 AND project_type = $2\n " }, + "abf790170e3a807ffe8b3a188da620c89e6398f38ff066220fdadffe8e7481c1": { + "describe": { + "columns": [ + { + "name": "exists", + "ordinal": 0, + "type_info": "Bool" + } + ], + "nullable": [ + null + ], + "parameters": { + "Left": [ + "Text" + ] + } + }, + "query": "\n SELECT EXISTS(SELECT 1 FROM mods WHERE slug = LOWER($1))\n " + }, "ac2d17b7d7147b14f072c15ffa214c14f32f27ffa6a3c2b2a5f80f3ad49ca5e9": { "describe": { "columns": [ diff --git a/src/routes/projects.rs b/src/routes/projects.rs index 287b0dbfc..ab22d81d0 100644 --- a/src/routes/projects.rs +++ b/src/routes/projects.rs @@ -894,6 +894,24 @@ pub async fn project_edit( } } + { + let results = sqlx::query!( + " + SELECT EXISTS(SELECT 1 FROM mods WHERE slug = LOWER($1)) + ", + slug + ) + .fetch_one(&mut *transaction) + .await?; + + if results.exists.unwrap_or(true) { + return Err(ApiError::InvalidInput( + "Slug collides with other project's id!" + .to_string(), + )); + } + } + sqlx::query!( " UPDATE mods