diff --git a/jupiter/src/storage/cl_storage.rs b/jupiter/src/storage/cl_storage.rs index 640d44599..5320fffd2 100644 --- a/jupiter/src/storage/cl_storage.rs +++ b/jupiter/src/storage/cl_storage.rs @@ -100,14 +100,20 @@ impl ClStorage { q.filter(mega_cl::Column::Username.eq(author)) }) .filter(cond) - .distinct() - .order_by_asc(mega_cl::Column::Id); + .distinct(); let mut sort_map = HashMap::new(); sort_map.insert("created_at", mega_cl::Column::CreatedAt); sort_map.insert("updated_at", mega_cl::Column::UpdatedAt); - let sorted_query = apply_sort(base_query, params.sort_by.as_deref(), params.asc, &sort_map); + let sort_field = params.sort_by.as_deref(); + let has_valid_sort = sort_field.and_then(|field| sort_map.get(field)).is_some(); + + let mut sorted_query = apply_sort(base_query, sort_field, params.asc, &sort_map); + + if !has_valid_sort { + sorted_query = sorted_query.order_by_desc(mega_cl::Column::Id); + } let paginator = sorted_query.paginate(self.get_connection(), page.per_page); let total = paginator.num_items().await?; diff --git a/mono/src/api/router/cl_router.rs b/mono/src/api/router/cl_router.rs index ab4b11d3f..ac3ba3d38 100644 --- a/mono/src/api/router/cl_router.rs +++ b/mono/src/api/router/cl_router.rs @@ -108,7 +108,7 @@ async fn close_cl( let res = state.cl_stg().get_cl(&link).await?; let model = res.ok_or(MegaError::Other("Not Found".to_string()))?; - if model.status == MergeStatusEnum::Open { + if matches!(model.status, MergeStatusEnum::Open | MergeStatusEnum::Draft) { let link = model.link.clone(); state.cl_stg().close_cl(model).await?; state