(
state: State<'_, AppState>,
request: SearchFilesRequest,
)
| 3164 | |
| 3165 | #[tauri::command] |
| 3166 | pub async fn search_files( |
| 3167 | state: State<'_, AppState>, |
| 3168 | request: SearchFilesRequest, |
| 3169 | ) -> Result<serde_json::Value, String> { |
| 3170 | use bitfun_core::service::filesystem::FileSearchOptions; |
| 3171 | |
| 3172 | let search_id = request.search_id.clone(); |
| 3173 | let cancel_flag = register_search(&state, search_id.as_deref()); |
| 3174 | let max_results = resolve_search_limit( |
| 3175 | request.max_results, |
| 3176 | if request.search_content { |
| 3177 | DEFAULT_CONTENT_SEARCH_RESULTS |
| 3178 | } else { |
| 3179 | DEFAULT_FILENAME_SEARCH_RESULTS |
| 3180 | }, |
| 3181 | ); |
| 3182 | let options = FileSearchOptions { |
| 3183 | include_content: request.search_content, |
| 3184 | case_sensitive: request.case_sensitive, |
| 3185 | use_regex: request.use_regex, |
| 3186 | whole_word: request.whole_word, |
| 3187 | max_results: Some(max_results), |
| 3188 | file_extensions: None, |
| 3189 | include_directories: request.include_directories, |
| 3190 | }; |
| 3191 | |
| 3192 | let use_workspace_search = |
| 3193 | request.search_content && should_use_workspace_search(&state, &request.root_path).await; |
| 3194 | let result = if request.search_content { |
| 3195 | if is_remote_path(request.root_path.trim()).await { |
| 3196 | if !use_workspace_search { |
| 3197 | Err("Remote content search requires workspace search support".to_string()) |
| 3198 | } else { |
| 3199 | search_file_contents_via_workspace_search( |
| 3200 | &state, |
| 3201 | &request.root_path, |
| 3202 | &request.pattern, |
| 3203 | request.case_sensitive, |
| 3204 | request.use_regex, |
| 3205 | request.whole_word, |
| 3206 | max_results, |
| 3207 | ) |
| 3208 | .await |
| 3209 | .map(|result| result.outcome.results) |
| 3210 | } |
| 3211 | } else { |
| 3212 | let filename_outcome = state |
| 3213 | .filesystem_service |
| 3214 | .search_file_names( |
| 3215 | &request.root_path, |
| 3216 | &request.pattern, |
| 3217 | FileSearchOptions { |
| 3218 | include_content: false, |
| 3219 | include_directories: request.include_directories, |
| 3220 | ..options.clone() |
| 3221 | }, |
| 3222 | cancel_flag.clone(), |
| 3223 | ) |
nothing calls this directly
no test coverage detected