diff --git a/server/src/server/user/sql.gleam b/server/src/server/user/sql.gleam index 5310dc1..f3bcef7 100644 --- a/server/src/server/user/sql.gleam +++ b/server/src/server/user/sql.gleam @@ -114,7 +114,7 @@ select u.phone, u.is_active from user_account as u -where starts_with(u.email_lowercase, lower($1::text)) +where starts_with(u.search_email, lower($1::text)) limit $2; " |> pog.query diff --git a/server/src/server/user/sql/find_by_email.sql b/server/src/server/user/sql/find_by_email.sql new file mode 100644 index 0000000..da70466 --- /dev/null +++ b/server/src/server/user/sql/find_by_email.sql @@ -0,0 +1,11 @@ +-- 󰇮 Find users by their email +select + u.id, + u.user_role as role, + u.full_name, + u.email, + u.phone, + u.is_active +from user_account as u +where starts_with(u.search_email, lower($1::text)) +limit $2; diff --git a/sql/create/tables.sql b/sql/create/tables.sql index f3ca77a..3cc12b8 100644 --- a/sql/create/tables.sql +++ b/sql/create/tables.sql @@ -23,18 +23,21 @@ 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 + search_email text generated always as (lower(email)) stored, + search_name tsvector generated always + as (to_tsvector('simple', full_name)) stored, + primary key (id) ); -create index idx_user_account_email_lowercase -on user_account (email_lowercase); +create index idx_user_account_search_email +on user_account (search_email); -create index idx_user_account_full_name_tsvector +create index idx_user_account_search_name on user_account -using gin (to_tsvector('simple', full_name)); +using gin (search_name); create table crew (