Tracking issues of user metadata support
- Dominant language
- Rust
- Stars
- 5.4k
- Forks
- 825
- Avg merge
- 1d 14m
- Merged PRs (30d)
- 127
Description
This issue is used to track the implementation of user metadata support.
## Context
There are two types of metadata across various storage services.
- System Defined: metadata like `last-modified`, `content-type` and so on. Some of them are editable, like `content-type`, but some are non-editable like `last-modified`.
- User Defined: extra metadata that provided by user, can be any valid string.
OpenDAL now only supports `System Defined` metadata, we should add support for `User Defined` metadata so that users can write most useful information along with the file data. For example, write the `location` for this file.
## Tasks
- Implement `user_metadata` for metadata
- [x] Add `user_metadata: HashMap` in `Metadata`
- [x] Add `user_metadata` in metakey
- [x] Add `write_with_user_metadata` in capability
- [x] Add `user_metadata` integration tests
- Impelment `user_metadata` for services
- [x] s3: https://github.com/apache/opendal/pull/5030
- [x] azblob: https://learn.microsoft.com/en-us/rest/api/storageservices/set-blob-metadata
- [x] oss: https://github.com/apache/opendal/pull/4881
- [x] gcs: https://github.com/apache/opendal/pull/5276
- [x] cos: https://github.com/apache/opendal/pull/5510
- [x] obs: https://github.com/apache/opendal/pull/5405
- [x] swift: https://github.com/apache/opendal/pull/5601
- [ ] azdls
- [ ] azfile
- [ ] b2
- [ ] fs
- [ ] upyun
- [ ] webdav
Contributor guide
Research direction
Start with the Metadata and capability changes and the existing user_metadata integration tests, then compare the completed service implementations listed in the issue. Check the remaining azdls, azfile, b2, fs, upyun, and webdav services; done means each supports user metadata and the integration tests pass.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- backend
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 30/100