Introduce a mapping layer between internal model.MediaFile and the API
response type. The native API /song endpoint now returns apimodel.Song
instead of exposing the database model directly. This decouples the API
surface from the persistence layer, enabling calculated fields and hiding
internal details (Path, FolderID, LibraryPath, PID, etc.).
The architecture is designed for expansion to other models:
- mappedRepository: generic REST repository wrapper that transforms
Read/ReadAll results through mapping functions
- apimodel package: dedicated API response types with explicit field
selection and JSON tags independent of the model
https://claude.ai/code/session_01TvZ2CgPPfFoxzNYoWuPUBg