From 9f2acc4e5de60d6cccbb67da28ebe8db54e72288 Mon Sep 17 00:00:00 2001 From: Claudio Ortolina Date: Thu, 31 Oct 2024 12:48:40 +0000 Subject: [PATCH] Make records ordering case insensitive So that "iamthemorning" gets slotted in the right place --- lib/music_library/records.ex | 5 ++++- lib/music_library/wishlist.ex | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/music_library/records.ex b/lib/music_library/records.ex index cf9282e5..1886159e 100644 --- a/lib/music_library/records.ex +++ b/lib/music_library/records.ex @@ -32,7 +32,10 @@ defmodule MusicLibrary.Records do base_search = from r in Record, where: not is_nil(r.purchased_at), - order_by: [r.artists[0]["sort_name"], r.title] + order_by: + fragment( + "json_extract(artists, '$[0].sort_name') COLLATE NOCASE ASC, title COLLATE NOCASE ASC" + ) Enum.reduce(parsed_query, base_search, fn {:artist, artist}, search -> diff --git a/lib/music_library/wishlist.ex b/lib/music_library/wishlist.ex index 599aa436..e9d0eb83 100644 --- a/lib/music_library/wishlist.ex +++ b/lib/music_library/wishlist.ex @@ -40,7 +40,10 @@ defmodule MusicLibrary.Wishlist do base_search = from r in Record, where: is_nil(r.purchased_at), - order_by: [r.artists[0]["sort_name"], r.title] + order_by: + fragment( + "json_extract(artists, '$[0].sort_name') COLLATE NOCASE ASC, title COLLATE NOCASE ASC" + ) Enum.reduce(parsed_query, base_search, fn {:artist, artist}, search ->