Repository navigation
Conversation
Up to standards ✅🟢 Issues
|
| Metric | Results |
|---|---|
| Complexity | 0 |
🟢 Coverage 94.74% diff coverage · +0.12% coverage variation
Metric Results Coverage variation ✅ +0.12% coverage variation (-1.00%) Diff coverage ✅ 94.74% diff coverage Coverage variation details
Coverable lines Covered lines Coverage Common ancestor commit (a325542) 89111 21640 24.28% Head commit (0e8f883) 89149 (+38) 21756 (+116) 24.40% (+0.12%) Coverage variation is the difference between the coverage for the head and common ancestor commits of the pull request branch:
<coverage of head commit> - <coverage of common ancestor commit>Diff coverage details
Coverable lines Covered lines Diff coverage Pull request (#3652) 38 36 94.74% Diff coverage is the percentage of lines that are covered by tests out of the coverable lines that the pull request added or modified:
<covered lines added or modified>/<coverable lines added or modified> * 100%
NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Timestamp serialization currently discards valid fractional-second precision.
Review effort: Balanced
Findings: 1
Open (1)
What changed in this PR
Adds search facets to WebDAV REPORT hits using the same XML structure as PROPFIND.
Changes:
- Serializes seven search facet types into XML.
- Adds coverage for facet formatting and escaping.
- Promotes
strcaseto a direct dependency.
| File | Description |
|---|---|
services/webdav/pkg/service/v0/search.go |
Adds generic facet serialization. |
services/webdav/pkg/service/v0/search_test.go |
Tests generated facet XML. |
go.mod |
Promotes the serialization dependency. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
The search REPORT only returns the facets of its hits with opencloud-eu/opencloud#3652. Until that is available the still image time of a video found through the search comes from a file info request.
a6a7496 to
0e8f883
Compare
The search service returns audio, location, image, photo, video, motion photo and live photo with every hit, the REPORT response dropped them and clients had to PROPFIND each hit. They are now rendered in the xml shape PROPFIND uses, so a client reads both the same way.
The search REPORT only returns the facets of its hits with opencloud-eu/opencloud#3652. Until that is available the still image time of a video found through the search comes from a file info request.

The search service returns the audio, location, image, photo, video, motion photo and live photo facets with every hit, but the REPORT response dropped them.
The web client needs them in two places:
size - motionPhoto.videoSize.livePhoto.contentId. Without facets in the hit it needs a PROPFIND on top, only to readstillImageTimeUsfor the right start time.The hits now carry the facets in the xml shape PROPFIND uses, rendered generically from the search message, so a client parses both the same way. No proto, index or reva change. A stopgap until the graph search returns driveItems with facets.