Claudio Ortolina 9cd24bad17 No need to keep uploaded images in the socket
As images are only processed on save AFTER validation, we can avoid
keeping them in the socket, with the only downside of losing a little
resilience in case the save operation errors out (in which case the
upload would be lost).
2024-09-30 13:50:07 +01:00
2024-09-16 09:45:47 +01:00
2024-09-30 09:15:12 +01:00
2024-09-27 10:58:59 +01:00
2024-09-28 19:16:15 +01:00
2024-09-27 19:38:17 +01:00
2024-09-28 19:16:15 +01:00
2024-09-27 19:38:17 +01:00
2024-09-12 14:05:08 +01:00
2024-09-22 16:54:24 +01:00
2024-09-27 19:38:17 +01:00
2024-09-27 19:50:08 +01:00
2024-09-19 13:34:26 +01:00
2024-09-24 22:49:40 +01:00
2024-09-29 17:21:48 +01:00

MusicLibrary

To start your Phoenix server:

  • Run mix setup to install and setup dependencies
  • Start Phoenix endpoint with mix phx.server or inside IEx with iex -S mix phx.server

Now you can visit localhost:4000 from your browser.

Ready to run in production? Please check our deployment guides.

Learn more

Dev Notes

  • SQLite supports full-text search via the built-in FTS5 extension, which is enabled by default and loaded in the Elixir Driver. The extension requires building a virtual table that holds the data to be searched. This seems to be akin to a materialized view.
  • To have fuzzy search, another extension needs to be loaded. Exqlite recommends using ExSqlean, which in turn uses Sqlean, but the extension is NOT part of the ExSQlean set. Need to investigate with forking and PR.

Queries

  • To get the count of records per genre:

    select genre.value, count(genre.value) as c from records, json_each(records.genres) genre group by genre.value order by c desc;
    
  • To get the count of records per artist:

    select json_extract(artist.value, '$.name') AS name, count(1) as c from records, json_each(records.artists) artist group by name order by c desc;
    

    Note that this query would fail to disambiguate artists with the same name - can be fixed by using the artist musicbrainz_id.

S
Description
No description provided
Readme 63 MiB
Languages
Elixir 77.4%
Python 10%
TypeScript 6.6%
HTML 3.7%
Shell 1.4%
Other 0.8%