feat(files): канонический Entry + FileStore (REST/DAV) (#35) #40

Merged
eSlider merged 1 commits from feat/file-store#35 into main 2026-09-16 17:42:49 +01:00
Owner

F1 — каноническая модель + FileStore/Searcher; адаптеры REST и WebDAV

Closes #35.

Что сделано

  • file_core.go — Kind (File/Folder), Entry, FileStore,
    SearchQuery, SearchHit, Searcher; доступ c.FileStore(backend) /
    c.Files() (фасад — F4 #38).
  • file_rest.go — restStore поверх files.go
    (ListFolder/GetFile/CreateFolder/UploadToFolder/DownloadFile/
    MoveFiles/RenameFile/DeleteFiles; Copy — через CopyDavItems, т.к. в
    files.go копирования нет).
  • file_dav.go — davStore поверх files_webdav.go
    (ListDavFolder/CreateDavFolder/UploadDavFile/DownloadDavFile/
    MoveDavItems/CopyDavItems/RenameDavFile/RenameDavFolder/DeleteDavItems).
    Иды классифицируются (Stat) на папки/файлы для fileops.
  • Конверсии (чистые): FileEntryToEntry, DavFileToEntry, DavFolderToEntry.
  • Все вызовы — через DoRetry (retryStoreOp).
  • Фикс MoveFiles: fileops/move отдаёт envelope с массивом операций;
    раньше putJSONObject разворачивал его и fileopsError падал на
    response missing "response" — теперь как MoveDavItems
    (putJSON + fileopsError). Сигнатура не изменена.
  • Публичные сигнатуры files*.go сохранены.

Тесты

Unit (go test ./... зелёный):
TestFileEntryToEntry, TestFileEntryToEntryNil,
TestFileEntryToEntrySizeFormats, TestDavFileToEntry,
TestDavFolderToEntry, TestEntriesFromFolderMap,
TestEntriesFromFolderMapNil, TestKindString,
TestClientFileStoreSelection — PASS.

Integration (go test -tags=integration, живой OO):
TestIntegrationFileStores (subtests rest, dav) — PASS. Общий набор:
create folder / upload / list / stat / download / move / copy / rename / delete;
папки убираются. Учтена асинхронность fileops (опросс результата).

Проверка

go build ./... && go vet ./... && go test ./... — зелёные.

## F1 — каноническая модель + FileStore/Searcher; адаптеры REST и WebDAV Closes #35. ### Что сделано - `file_core.go` — `Kind` (`File`/`Folder`), `Entry`, `FileStore`, `SearchQuery`, `SearchHit`, `Searcher`; доступ `c.FileStore(backend)` / `c.Files()` (фасад — F4 #38). - `file_rest.go` — `restStore` поверх `files.go` (`ListFolder`/`GetFile`/`CreateFolder`/`UploadToFolder`/`DownloadFile`/ `MoveFiles`/`RenameFile`/`DeleteFiles`; `Copy` — через `CopyDavItems`, т.к. в `files.go` копирования нет). - `file_dav.go` — `davStore` поверх `files_webdav.go` (`ListDavFolder`/`CreateDavFolder`/`UploadDavFile`/`DownloadDavFile`/ `MoveDavItems`/`CopyDavItems`/`RenameDavFile`/`RenameDavFolder`/`DeleteDavItems`). Иды классифицируются (`Stat`) на папки/файлы для fileops. - Конверсии (чистые): `FileEntryToEntry`, `DavFileToEntry`, `DavFolderToEntry`. - Все вызовы — через `DoRetry` (`retryStoreOp`). - Фикс `MoveFiles`: `fileops/move` отдаёт envelope с массивом операций; раньше `putJSONObject` разворачивал его и `fileopsError` падал на `response missing "response"` — теперь как `MoveDavItems` (`putJSON` + `fileopsError`). Сигнатура не изменена. - Публичные сигнатуры `files*.go` сохранены. ### Тесты Unit (`go test ./...` зелёный): `TestFileEntryToEntry`, `TestFileEntryToEntryNil`, `TestFileEntryToEntrySizeFormats`, `TestDavFileToEntry`, `TestDavFolderToEntry`, `TestEntriesFromFolderMap`, `TestEntriesFromFolderMapNil`, `TestKindString`, `TestClientFileStoreSelection` — PASS. Integration (`go test -tags=integration`, живой OO): `TestIntegrationFileStores` (subtests `rest`, `dav`) — PASS. Общий набор: create folder / upload / list / stat / download / move / copy / rename / delete; папки убираются. Учтена асинхронность fileops (опросс результата). ### Проверка `go build ./... && go vet ./... && go test ./...` — зелёные.
eSlider added 1 commit 2026-09-16 17:30:15 +01:00
feat(files): canonical Entry + FileStore REST/DAV adapters (#35)
Release Please / Release Please (push) Skipped
Release / GoReleaser (push) Skipped
Tests / Secret scan (gitleaks) (push) Skipped
Tests / Test (Go 1.25) (push) Skipped
Tests / Test (Go stable) (push) Skipped
Tests / Secret scan (gitleaks) (pull_request) Successful in 4s
Tests / Test (Go 1.25) (pull_request) Successful in 18s
Tests / Test (Go stable) (pull_request) Successful in 18s
94951fc6c5
eSlider merged commit 1aba545e1d into main 2026-09-16 17:42:49 +01:00
eSlider deleted branch feat/file-store#35 2026-09-16 17:42:49 +01:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: eSlider/go-onlyoffice#40