diff options
author | Struan Donald <struan@exo.org.uk> | 2011-05-18 12:40:58 +0100 |
---|---|---|
committer | Struan Donald <struan@exo.org.uk> | 2011-05-18 12:40:58 +0100 |
commit | d1cd5862c33dda83d74af274a0f7cf240266c0e5 (patch) | |
tree | 66b8e69851f68bd3460220882972b1816b8a80c4 /db | |
parent | a1bf3577fb31c0bb73b39633a2aaeeb69b740abd (diff) |
link comments table to users table
Diffstat (limited to 'db')
-rw-r--r-- | db/schema_0004-create_users_from_comments_and_link.sql | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/db/schema_0004-create_users_from_comments_and_link.sql b/db/schema_0004-create_users_from_comments_and_link.sql new file mode 100644 index 000000000..6dc50f531 --- /dev/null +++ b/db/schema_0004-create_users_from_comments_and_link.sql @@ -0,0 +1,49 @@ +begin; + +-- create any users that don't already exist +INSERT INTO users (email) + SELECT distinct( lower( comment.email ) ) FROM comment + LEFT JOIN users ON lower( users.email ) = lower( comment.email ) + WHERE users.id IS NULL; + +ALTER table comment + ADD COLUMN user_id INT REFERENCES users(id); + +-- populate the user ids in the comment table +UPDATE comment + SET user_id = ( + SELECT id + FROM users + WHERE users.email = lower( comment.email ) + ); + +CREATE INDEX comment_user_id_idx on comment ( user_id ); + +UPDATE users + SET name = ( + select name from comment + where user_id = users.id + order by created desc + limit 1 + ) +WHERE users.name = ''; + +-- set up the anonymous flag +ALTER table comment + ADD COLUMN anonymous BOOL; + +UPDATE comment SET anonymous = true WHERE name = ''; + +UPDATE comment SET anonymous = false WHERE name <> ''; + +-- tidy up now everythings in place +ALTER table comment + ALTER COLUMN user_id SET NOT NULL; + +ALTER table comment + ALTER COLUMN anonymous SET NOT NULL; + +ALTER table comment + DROP COLUMN email; + +commit; |