diff --git a/apps/frontend/src/pages/organization/[id].vue b/apps/frontend/src/pages/organization/[id].vue index ef8fecd1c..6dfdc57d5 100644 --- a/apps/frontend/src/pages/organization/[id].vue +++ b/apps/frontend/src/pages/organization/[id].vue @@ -294,7 +294,7 @@ const tags = useTags(); const flags = useFeatureFlags(); const config = useRuntimeConfig(); -let orgId = useRouteId().toLowerCase(); +let orgId = useRouteId(); // hacky way to show the edit button on the corner of the card. const routeHasSettings = computed(() => route.path.includes("settings")); diff --git a/apps/labrinth/.sqlx/query-a3448f22ec82f75ab2f3769b7d0a653a7d7315fb5e4696c26c6a96e6fc11e907.json b/apps/labrinth/.sqlx/query-a3448f22ec82f75ab2f3769b7d0a653a7d7315fb5e4696c26c6a96e6fc11e907.json deleted file mode 100644 index d1a964156..000000000 --- a/apps/labrinth/.sqlx/query-a3448f22ec82f75ab2f3769b7d0a653a7d7315fb5e4696c26c6a96e6fc11e907.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "\n SELECT m.id FROM organizations o\n INNER JOIN mods m ON m.organization_id = o.id\n WHERE (o.id = $1 AND $1 IS NOT NULL) OR (o.slug = $2 AND $2 IS NOT NULL)\n ", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "id", - "type_info": "Int8" - } - ], - "parameters": { - "Left": [ - "Int8", - "Text" - ] - }, - "nullable": [ - false - ] - }, - "hash": "a3448f22ec82f75ab2f3769b7d0a653a7d7315fb5e4696c26c6a96e6fc11e907" -} diff --git a/apps/labrinth/.sqlx/query-a3e25b24e1364fb6cecd33797923b24948050c0974bc267d938f05c893beed00.json b/apps/labrinth/.sqlx/query-a3e25b24e1364fb6cecd33797923b24948050c0974bc267d938f05c893beed00.json new file mode 100644 index 000000000..d25a766b1 --- /dev/null +++ b/apps/labrinth/.sqlx/query-a3e25b24e1364fb6cecd33797923b24948050c0974bc267d938f05c893beed00.json @@ -0,0 +1,22 @@ +{ + "db_name": "PostgreSQL", + "query": "\n SELECT m.id FROM organizations o\n INNER JOIN mods m ON m.organization_id = o.id\n WHERE o.id = $1\n ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "id", + "type_info": "Int8" + } + ], + "parameters": { + "Left": [ + "Int8" + ] + }, + "nullable": [ + false + ] + }, + "hash": "a3e25b24e1364fb6cecd33797923b24948050c0974bc267d938f05c893beed00" +} diff --git a/apps/labrinth/src/routes/v3/organizations.rs b/apps/labrinth/src/routes/v3/organizations.rs index 7c2ca4f12..4b8bb333f 100644 --- a/apps/labrinth/src/routes/v3/organizations.rs +++ b/apps/labrinth/src/routes/v3/organizations.rs @@ -57,7 +57,7 @@ pub async fn organization_projects_get( redis: web::Data, session_queue: web::Data, ) -> Result { - let info = info.into_inner().0; + let id = info.into_inner().0; let current_user = get_user_from_headers( &req, &**pool, @@ -69,33 +69,36 @@ pub async fn organization_projects_get( .map(|x| x.1) .ok(); - let possible_organization_id: Option = parse_base62(&info).ok(); + let organization_data = Organization::get(&id, &**pool, &redis).await?; + if let Some(organization) = organization_data { + let project_ids = sqlx::query!( + " + SELECT m.id FROM organizations o + INNER JOIN mods m ON m.organization_id = o.id + WHERE o.id = $1 + ", + organization.id as database::models::ids::OrganizationId + ) + .fetch(&**pool) + .map_ok(|m| database::models::ProjectId(m.id)) + .try_collect::>() + .await?; - let project_ids = sqlx::query!( - " - SELECT m.id FROM organizations o - INNER JOIN mods m ON m.organization_id = o.id - WHERE (o.id = $1 AND $1 IS NOT NULL) OR (o.slug = $2 AND $2 IS NOT NULL) - ", - possible_organization_id.map(|x| x as i64), - info - ) - .fetch(&**pool) - .map_ok(|m| database::models::ProjectId(m.id)) - .try_collect::>() - .await?; + let projects_data = crate::database::models::Project::get_many_ids( + &project_ids, + &**pool, + &redis, + ) + .await?; - let projects_data = crate::database::models::Project::get_many_ids( - &project_ids, - &**pool, - &redis, - ) - .await?; + let projects = + filter_visible_projects(projects_data, ¤t_user, &pool, true) + .await?; - let projects = - filter_visible_projects(projects_data, ¤t_user, &pool, true) - .await?; - Ok(HttpResponse::Ok().json(projects)) + Ok(HttpResponse::Ok().json(projects)) + } else { + Err(ApiError::NotFound) + } } #[derive(Deserialize, Validate)]