MCPcopy Create free account
hub / github.com/GCWing/BitFun / search_files

Function search_files

src/apps/desktop/src/api/commands.rs:3166–3301  ·  view source on GitHub ↗
(
    state: State<'_, AppState>,
    request: SearchFilesRequest,
)

Source from the content-addressed store, hash-verified

3164
3165#[tauri::command]
3166pub 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 )

Callers

nothing calls this directly

Calls 12

register_searchFunction · 0.85
resolve_search_limitFunction · 0.85
is_remote_pathFunction · 0.85
unregister_searchFunction · 0.85
trimMethod · 0.80
appendMethod · 0.80
cloneMethod · 0.45
search_file_namesMethod · 0.45
lenMethod · 0.45
search_file_contentsMethod · 0.45

Tested by

no test coverage detected