feat(storage): S3-compatible storage adapter + storage_uri rename

Add S3FileStorage adapter (any S3-compatible backend: AWS, MinIO, Garage)
alongside the local adapter, selected via STORAGE_BACKEND. Proxied range
streaming via get_object+Range; as_local_path downloads to a tempfile for
ffmpeg/fpcalc. Rename track.file_path -> storage_uri across domain entity,
ORM, repositories, port, and services, with an Alembic migration. Adds
mocked S3 unit tests.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Senko-san
2026-06-08 17:11:35 +03:00
parent a8348e145a
commit 5c5df5d3cc
15 changed files with 1377 additions and 498 deletions
+1 -1
View File
@@ -19,7 +19,7 @@ class Track:
title: str
artist_id: uuid.UUID
album_id: uuid.UUID | None
file_path: str
storage_uri: str
file_format: str
file_size: int
source: str
+1 -1
View File
@@ -100,7 +100,7 @@ class TrackRepository(Protocol):
id: uuid.UUID,
title: str,
artist_id: uuid.UUID,
file_path: str,
storage_uri: str,
file_format: str,
file_size: int,
source: str,