Skip to content

Back‐end storage structure

David Bosschaert edited this page Nov 5, 2024 · 3 revisions

This page describes the structure used by da-admin to store resources in R2.

my-org/full/path/to/resource/mypage.html

Contains the latest version of mypage in semantic HTML. Also provides the following metadata in the x-daamin-md header:

Key Value
id The ID of the page as a GUID. This ID stays constant, even if the page gets moved or renamed
path The path to the resource, for example /full/path/to/resource/mypage.html
timestamp The last modification timestamp in milliseconds since the Epoch. The value is of type string
users A list of users that made the changes to this version of the document. The list is formatted as a JSON value inside a string, so the embedded JSON needs to have its quotes escaped. For example the following value states that this version was edited by both [email protected] as well as an anonymous editor: "[{\"email\":\"anonymous\"}, {\"[email protected]\":\"David Bosschaert\"}]"
version The UUID of this version. Each version of the document gets a unique UUID

my-org/.da-versions/${id}/${version}.html

Previous versions are stores in my-org/.da-versions/... under their id and version. So for example you can list my-org/.da-versions/abababab-abab-abab-abab-abababababab to see all the available versions of the document with this id. As documents retain the same id when they are renamed you can follow the name changes of the document too.

The following metadata can be found in the x-daamin-md header:

Key Value
label An optional string label to name this version
path The path to the resource, for example /full/path/to/resource/mypage.html
timestamp The last modification timestamp in milliseconds since the Epoch. The value is of type string
users A list of users that made the changes to this version of the document. The list is formatted as a JSON value inside a string, so the embedded JSON needs to have its quotes escaped. For example the following value states that this version was edited by both [email protected] as well as an anonymous editor: "[{\"email\":\"anonymous\"}, {\"[email protected]\":\"David Bosschaert\"}]"

The entry may contain the body of the associated document. If a full version is stored, then the content will be present with the version. Otherwise this version is only an audit log entry to show who made changes to the page.

Clone this wiki locally