summary refs log tree commit diff
path: root/docs/development/internal_documentation/media_repository.md
diff options
context:
space:
mode:
authorAndrew Morgan <andrew@amorgan.xyz>2021-11-21 02:39:02 +0000
committerAndrew Morgan <andrew@amorgan.xyz>2021-11-21 02:39:02 +0000
commit1a8406f42ac3a7f63690c13cb8d8fd5547928632 (patch)
treeb87d0c0ca33f6f2eea33cf953aef9767183c702f /docs/development/internal_documentation/media_repository.md
parentUpdate README.md (diff)
downloadsynapse-1a8406f42ac3a7f63690c13cb8d8fd5547928632.tar.xz
Move documentation files to their place in the hierarchy; update SUMMARY.md github/anoa/doc_hierarchy anoa/doc_hierarchy
Diffstat (limited to 'docs/development/internal_documentation/media_repository.md')
-rw-r--r--docs/development/internal_documentation/media_repository.md30
1 files changed, 30 insertions, 0 deletions
diff --git a/docs/development/internal_documentation/media_repository.md b/docs/development/internal_documentation/media_repository.md
new file mode 100644

index 0000000000..99ee8f1ef7 --- /dev/null +++ b/docs/development/internal_documentation/media_repository.md
@@ -0,0 +1,30 @@ +# Media Repository + +*Synapse implementation-specific details for the media repository* + +The media repository is where attachments and avatar photos are stored. +It stores attachment content and thumbnails for media uploaded by local users. +It caches attachment content and thumbnails for media uploaded by remote users. + +## Storage + +Each item of media is assigned a `media_id` when it is uploaded. +The `media_id` is a randomly chosen, URL safe 24 character string. + +Metadata such as the MIME type, upload time and length are stored in the +sqlite3 database indexed by `media_id`. + +Content is stored on the filesystem under a `"local_content"` directory. + +Thumbnails are stored under a `"local_thumbnails"` directory. + +The item with `media_id` `"aabbccccccccdddddddddddd"` is stored under +`"local_content/aa/bb/ccccccccdddddddddddd"`. Its thumbnail with width +`128` and height `96` and type `"image/jpeg"` is stored under +`"local_thumbnails/aa/bb/ccccccccdddddddddddd/128-96-image-jpeg"` + +Remote content is cached under `"remote_content"` directory. Each item of +remote content is assigned a local `"filesystem_id"` to ensure that the +directory structure `"remote_content/server_name/aa/bb/ccccccccdddddddddddd"` +is appropriate. Thumbnails for remote content are stored under +`"remote_thumbnail/server_name/..."`