diff --git a/server/src/server/user/sql.gleam b/server/src/server/user/sql.gleam index 9176571..d289595 100644 --- a/server/src/server/user/sql.gleam +++ b/server/src/server/user/sql.gleam @@ -78,8 +78,7 @@ pub type FindByEmailPrefixRow { ) } -/// Runs the `find_by_email_prefix` query -/// defined in `./src/server/user/sql/find_by_email_prefix.sql`. +/// 󰇮 Find all users which email starts with the given prefix /// /// > 🐿️ This function was generated automatically using v4.6.0 of /// > the [squirrel package](https://github.com/giacomocavalieri/squirrel). @@ -106,7 +105,8 @@ pub fn find_by_email_prefix( )) } - "select + "-- 󰇮 Find all users which email starts with the given prefix +select u.id, u.user_role as role, u.full_name, @@ -114,7 +114,7 @@ pub fn find_by_email_prefix( u.phone, u.is_active from user_account as u -where starts_with(lower(u.email), $1) +where starts_with(u.email_lowercase, lower($1::text)) limit $2; " |> pog.query diff --git a/server/src/server/user/sql/find_by_email_prefix.sql b/server/src/server/user/sql/find_by_email_prefix.sql index ed87b87..1bf7ced 100644 --- a/server/src/server/user/sql/find_by_email_prefix.sql +++ b/server/src/server/user/sql/find_by_email_prefix.sql @@ -1,3 +1,4 @@ +-- 󰇮 Find all users which email starts with the given prefix select u.id, u.user_role as role, @@ -6,5 +7,5 @@ select u.phone, u.is_active from user_account as u -where starts_with(lower(u.email), $1) +where starts_with(u.email_lowercase, lower($1::text)) limit $2; diff --git a/sql/create/tables.sql b/sql/create/tables.sql index 8c61b73..b42ad93 100644 --- a/sql/create/tables.sql +++ b/sql/create/tables.sql @@ -23,12 +23,14 @@ create table user_account ( created_at timestamp not null default current_timestamp, updated_at timestamp not null default current_timestamp, + email_lowercase text generated always + as (lower(email)) stored, + primary key (id) ); -create index idx_user_account_email -on user_account (email); - +create index idx_user_account_email_lowercase +on user_account (email_lowercase); create table crew ( id uuid default uuidv7(),