Claudio Ortolina
3b558044b4
refactor: extract Records sub-contexts (Search, Import, Enrichment)
...
Split the 450+ line Records context into focused modules:
- Records.Search — FTS5 search, SearchParser integration, genre listing
- Records.Import — MusicBrainz release/group import, release status
- Records.Enrichment — genre population, cover refresh, color extraction,
MusicBrainz data refresh
- Records.Query — shared helpers (essential_fields, order_alphabetically macro)
Records module is now a facade with defdelegate for compile-time safety.
CRUD and PubSub stay directly in Records. Tests moved alongside each
sub-module. Zero callers changed, 886 tests pass.
2026-04-30 17:20:37 +01:00
Claudio Ortolina
a1c665b490
ML-21: Classify API errors as transient vs permanent
2026-04-24 14:02:15 +01:00
Claudio Ortolina
6adfbea336
Pin Records.populate_genres error to OpenAI prefix
...
Refs #176
2026-04-20 06:50:04 +01:00
Claudio Ortolina
6fcca38e27
Make sure to pull artists info when record is updated
...
Catches the scenario when a new artist is added
2026-04-01 07:11:47 +01:00
Claudio Ortolina
c913dab692
Return controlled errors from genre population
...
Closes #142
2026-03-30 15:01:42 +01:00
Claudio Ortolina
b0018db89d
Improve error handling for color extraction
...
Includes a around embedding generation, which was happening twice (the
first call was redundant as record embeddings are always regenerated
after their parent artist embeddings are regenerated).
Closes #144 .
2026-03-30 14:29:44 +01:00
Claudio Ortolina
170a52b3e4
Fix test descriptions for consistency
2026-03-26 11:54:47 +00:00
Claudio Ortolina
7ec3e68e58
Relax assertions on colors
...
As dominant colors are not stable on different environments
2026-03-03 16:13:23 +00:00
Claudio Ortolina
6d451481b7
Remove obsolete color extraction strategies
2026-03-03 16:01:25 +00:00
Claudio Ortolina
90b3fa1fdc
Refactor Records.Cover to Assets.Image
2025-09-20 07:42:38 +03:00
Claudio Ortolina
dc77d337c0
Migrate from embedded covers to assets
2025-09-01 16:20:41 +03:00
Claudio Ortolina
07d9db6011
Speed up tests by caching cover data
...
Suggested and executed by Claude
2025-06-14 21:15:06 +03:00
Claudio Ortolina
c5e47cbc8c
Display dominant colors from the db
2025-06-07 20:07:23 +01:00
Claudio Ortolina
fd997e853f
Update artists when refreshing MusicBrainz data
2025-06-04 15:57:25 +01:00
Claudio Ortolina
676c2e4290
Enable quokka with :module_directives rule
2025-05-28 19:41:57 +01:00
Claudio Ortolina
ad6e8503ed
Add tests around data consistency bg jobs for artist info
2025-04-29 21:05:02 +01:00
Claudio Ortolina
995773f673
Default covers to 2000px
2025-04-14 10:58:21 +01:00
Claudio Ortolina
93f6b260b2
Extract test fixture for release_group_releases
2025-03-01 07:40:00 +00:00
Claudio Ortolina
a218942110
Remove mox in favour of built-in Req stubs
2025-02-28 16:41:16 +00:00
Claudio Ortolina
7df136c890
Sort aliases
2025-02-20 15:27:01 +00:00
Claudio Ortolina
94a2784020
Move function in MusicBrainz main module
2025-02-17 22:07:49 +00:00
Claudio Ortolina
e218b06350
Rename APIBehaviourMock -> APIMock
2025-02-17 21:41:50 +00:00
Claudio Ortolina
37f72261c3
Extract MusicBrainz main module
2025-02-17 17:30:13 +00:00
Claudio Ortolina
513ce6363f
Rename RecordsFixtures -> Fixtures.Records
2025-02-17 16:08:19 +00:00
Claudio Ortolina
ea7b5b646a
Namespace MusicBrainz fixtures
2025-02-17 16:03:23 +00:00
Claudio Ortolina
d077f08afa
Start making it more robust
...
- Use structured data for search/render
- Start testing component
- Start testing domain logic
2025-02-15 18:08:30 +00:00
Claudio Ortolina
c46227ecf7
Update MusicBrainz fixtures
2025-02-12 21:52:58 +00:00
Claudio Ortolina
6ad28f1271
When importing a record, stream all its releases
2025-02-05 15:31:08 +00:00
Claudio Ortolina
f29dd1f0ab
Fetch 100 releases when importing a record
...
The release group contains only 25 releases, which breaks tracking
scrobble status. Albums like "Toto IV" or "Hounds of Love" end up
looking like they're not part of the collections because the individual
releases are not stored.
Still error prone, because this change doesn't paginate to more than 100
records, but that will be addressed in a future commit.
2025-02-05 10:12:27 +00:00
Claudio Ortolina
ed6ef2c7ef
Rename record_fixture* to record*
2025-01-06 14:20:36 +00:00
Claudio Ortolina
cf377f6a0c
Remove unnecessary alias
2025-01-06 14:13:45 +00:00
Claudio Ortolina
6427710029
Enable sorting options in collection view
2024-12-29 15:47:37 +00:00
Claudio Ortolina
53b89dc329
Extract Artists context
2024-12-18 11:12:06 +00:00
Claudio Ortolina
3fbd6ba1bf
Use release and release group fixtures with names everywhere
2024-12-14 23:52:09 +03:00
Claudio Ortolina
e1dc2bfc7f
Make MusicBrainz user agent configurable
2024-12-04 10:44:31 +00:00
Claudio Ortolina
18df3683fc
Render a minimal artist page
2024-12-02 17:35:47 +00:00
Claudio Ortolina
b63b3a633a
Can fetch records by a specific artist
2024-12-02 10:55:12 +00:00
Claudio Ortolina
2e2000fe01
Introduce separate search index
...
Uses a fts5 virtual table, kept up to date via triggers on the records
table.
2024-11-22 19:37:13 +00:00
Claudio Ortolina
09f3563134
Can refresh cover for a record in the collection
2024-11-19 11:28:50 +00:00
Claudio Ortolina
cc1d2e3b0f
Increase stored cover size to 600px
...
Doesn't affect existing covers
2024-11-19 11:28:50 +00:00
Claudio Ortolina
0f97341d5f
Add test for refreshing musicbrainz_data
2024-11-19 10:54:17 +00:00
Claudio Ortolina
87cd668a33
Populate release_ids and included_release_groups when record is created
2024-11-18 15:34:16 +00:00
Claudio Ortolina
97c7be7b0c
Store release ids when importing a record
2024-11-12 15:01:17 +00:00
Claudio Ortolina
95ce71d9c5
Add test for refreshing a record cover
2024-11-12 10:04:18 +00:00
Claudio Ortolina
ae3c754570
Add test for importing a record from a release
2024-11-12 09:54:47 +00:00
Claudio Ortolina
c8df700939
Add tests for search and import release groups
2024-11-12 09:48:19 +00:00
Claudio Ortolina
0e0e7e09be
Add tests for get_record!/1 and get_cover/1
2024-11-11 19:02:10 +00:00
Claudio Ortolina
f4ae1f0fc9
Add tests for Records.search_records_count/2
2024-11-11 14:19:57 +00:00
Claudio Ortolina
aba8e6e490
Fix unused variable warning
2024-11-11 12:35:32 +00:00
Claudio Ortolina
0cbece6ed4
Add Records search tests
...
Important note: to help, we use a deterministic implementation of artist
UUID generation based on the artist name.
2024-11-11 10:28:17 +00:00