fix(files): stop saving fetched URLs to Files and look names up by the unique index
Merged
WA
1mo ago+318+318+012345678901234567890123456789-273-273-012345678901234567890123456789
Summary
- The File block's URL fetch no longer saves every fetched URL into workspace Files. Nothing ever read the saved copy: the parser keeps its own execution file, and the reuse the save once served was removed earlier. Repeated fetches were piling up
name (N).htmlcopies in the Files root - Renamed
fetchExternalUrlToWorkspacetofetchExternalUrland removed its save, permission, and upload branch - Name existence checks (
fileNameExistsInWorkspaceFolder,getWorkspaceFileByName) now spell the folder predicate ascoalesce(folder_id, '') = $folder, matching the unique(workspace_id, coalesce(folder_id, ''), original_name)index, so each check is a point lookup. The oldfolder_id IS NULLform made root lookups scan the folder-id index allocateUniqueWorkspaceFileNameprobes the base name plus(1)…(20), then falls back to a short-id suffix instead of probing up to 1,000 candidates and then failing. The unique index and the existing conflict retry remain the authority
Type of Change
- Bug fix
Testing
- New
file-names.integration.ts(real Postgres). All three tests fail on the pre-change code:- parsing a URL creates no
workspace_filesrow - root/folder scoping, with an EXPLAIN assertion that both lookups use the unique index
- the 21st copy of a name gets a short-id suffix, and concurrent uploads of one name all succeed with distinct names
- parsing a URL creates no
- Existing file-versions, provenance, revision, storage-cleanup, and workspace-import integration suites pass
- Type-check, lint, and
check:auditspass
Checklist
- Code follows project style guidelines
- Self-reviewed my changes
- Tests added/updated and passing
- No new warnings introduced
- I confirm that I have read and agree to the terms outlined in the Contributor License Agreement (CLA)