c58f783e9e28cfa5d74b397cc4050ce59b8f82f4
Records were rendered twice due to handle_params reassigning data irrespectively of the need for it.
MusicLibrary
To start your Phoenix server:
- Run
mix setupto install and setup dependencies - Start Phoenix endpoint with
mix phx.serveror inside IEx withiex -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
- Official website: https://www.phoenixframework.org/
- Guides: https://hexdocs.pm/phoenix/overview.html
- Docs: https://hexdocs.pm/phoenix
- Forum: https://elixirforum.com/c/phoenix-forum
- Source: https://github.com/phoenixframework/phoenix
Dev Notes
Search
- 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.
Description
Languages
Elixir
77.4%
Python
10%
TypeScript
6.6%
HTML
3.7%
Shell
1.4%
Other
0.8%