-
-
Notifications
You must be signed in to change notification settings - Fork 4.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Making the Metadata API public #40676
Comments
Technical requirementsDatabaseIndexing all the metadata is unnecessary, so we have one table to store the all the metadata, and another table to store indexed metadata. The The indexed table contains two columns for the value. One is a oc_metadata
oc_metadata_index
Data format in the databasePrefixing the name of the metadata prevents conflicts, and allow us to know who created a metadata. It is not decided yet whether we should enforce the prefixing. A special key {
"files:exif": {
"value": {
"width": 0,
"height": 0,
"coordinate": {
"latitude": 0,
"longitude": 0
},
"taken_date": 123456789
},
"type": "array",
"indexed": true
},
"files:blurhash": {
"value": "azertyuiop",
"type": "string"
},
"photos:place": {
"value": "Paris",
"type": "string",
"indexed": true
},
"files:last_access": {
"value": ["user1", "user2"],
"type": "string[]"
},
"photos:taken_date": {
"value": 123456789,
"type": "int",
"indexed": true
},
"files:live_photos": {
"value": "1234",
"type": "string"
},
"files:state": {
"value": "editing",
"type": "string"
},
"files:tags": {
"value": ["tag1", "tag2"],
"type": "string[]"
}
} Populating metadata
WebDAVTwo options for requesting metadata: <nc:metadata:files:exif></nc:metadata:files:exif>
<nc:metadata:files:blurhash></nc:metadata:files:blurhash> <nc:metadata>
<nc:metadata:files:exif>
<nc:metadata:files:blurhash>
</nc:metadata> |
TODO
|
@artonge Also can be better that your We load the object within the event and each app can read from it. If an app decide to update some data (setters will update an internal boolean 'updated'), we store the updated version of the JSON within the database. The object is serialized to be stored in the database, and import/deserialize when needed. Also, I would separate the creation of a new metadata and its configuration as indexeable:
maybe Should we add some lazy loading If we start adding methods to Node, we could go with setMetadata(Metadata), so we directly feed the object freshly created from filecache with
edit: both (queryhelper+prepared methods) will be available |
Is there an overview ticket that tracks clients implementations using the metadata API? |
Requirements
Use cases
Existing
Planned
Potential
Features
Already implemented
Already missing
Needed for the new use cases
PRs
The text was updated successfully, but these errors were encountered: