Files
music_library/backlog/completed/ml-154 - Add-early-platform-detection-in-runtime.exs-for-SQLite-extensions.md
T
2026-05-01 15:29:33 +01:00

39 lines
1.6 KiB
Markdown

---
id: ML-154
title: Add early platform detection in runtime.exs for SQLite extensions
status: Done
assignee: []
created_date: '2026-04-30 10:48'
updated_date: '2026-04-30 12:37'
labels:
- robustness
- sqlite
dependencies: []
references:
- lib/music_library/repo.ex
- config/runtime.exs
priority: low
---
## Description
<!-- SECTION:DESCRIPTION:BEGIN -->
`MusicLibrary.Repo.extension_path/1` raises `"Unsupported OS or platform"` when run on an unrecognised OS/architecture combination. This is called at startup via `config/runtime.exs` to resolve paths for `unicode` and `vec0` SQLite extensions.
Instead of silently degrading (which would cause confusing downstream failures), add early detection:
1. Add `MusicLibrary.Repo.supported_platform?/0` that returns a boolean
2. In `config/runtime.exs`, check this BEFORE the `load_extensions` config block
3. If unsupported, raise with a helpful message listing supported platforms and the detected OS/arch
The existing `raise` in `extension_path/1` stays as a defensive fallback (should not be reached if runtime.exs catches it first).
<!-- SECTION:DESCRIPTION:END -->
## Acceptance Criteria
<!-- AC:BEGIN -->
- [x] #1 #1 `Repo.supported_platform?/0` returns true/false based on OS/arch
- [x] #2 #2 `config/runtime.exs` checks `supported_platform?/0` before loading extensions and raises with a helpful message on unsupported platforms
- [x] #3 #3 Existing supported platforms (darwin-amd64, darwin-arm64, linux-amd64, linux-arm64) continue to load extensions correctly
- [x] #4 #4 `extension_path/1` raise stays as a defensive fallback
<!-- AC:END -->