]> Untitled Git - lemmy.git/commitdiff
Adding username and email case insensitivity uniqueness. Fixes #341
authorDessalines <tyhou13@gmx.com>
Sun, 2 Feb 2020 01:11:12 +0000 (20:11 -0500)
committerDessalines <tyhou13@gmx.com>
Sun, 2 Feb 2020 01:11:12 +0000 (20:11 -0500)
server/migrations/2020-02-02-004806_add_case_insensitive_usernames/down.sql [new file with mode: 0644]
server/migrations/2020-02-02-004806_add_case_insensitive_usernames/up.sql [new file with mode: 0644]

diff --git a/server/migrations/2020-02-02-004806_add_case_insensitive_usernames/down.sql b/server/migrations/2020-02-02-004806_add_case_insensitive_usernames/down.sql
new file mode 100644 (file)
index 0000000..0c6f112
--- /dev/null
@@ -0,0 +1,2 @@
+drop index idx_user_name_lower;
+drop index idx_user_email_lower;
diff --git a/server/migrations/2020-02-02-004806_add_case_insensitive_usernames/up.sql b/server/migrations/2020-02-02-004806_add_case_insensitive_usernames/up.sql
new file mode 100644 (file)
index 0000000..07f854b
--- /dev/null
@@ -0,0 +1,29 @@
+-- Add case insensitive username and email uniqueness
+
+-- An example of showing the dupes:
+-- select
+--   max(id) as id,
+--   lower(name) as lname,
+--   count(*)
+-- from user_
+-- group by lower(name)
+-- having count(*) > 1;
+
+-- Delete username dupes, keeping the first one
+delete
+from user_
+where id not in (
+  select min(id)
+  from user_
+  group by lower(name), lower(fedi_name)
+);
+
+-- The user index 
+create unique index idx_user_name_lower on user_ (lower(name));
+
+-- Email lower
+create unique index idx_user_email_lower on user_ (lower(email));
+
+-- Set empty emails properly to null
+update user_ set email = null where email = '';
+