]> Untitled Git - lemmy.git/blob - migrations/2020-08-25-132005_add_unique_ap_ids/up.sql
add enable_federated_downvotes site option
[lemmy.git] / migrations / 2020-08-25-132005_add_unique_ap_ids / up.sql
1 -- Add unique ap_id for private_message, comment, and post
2 -- Need to delete the possible dupes for ones that don't start with the fake one
3 DELETE FROM private_message a USING (
4     SELECT
5         min(id) AS id,
6         ap_id
7     FROM
8         private_message
9     GROUP BY
10         ap_id
11     HAVING
12         count(*) > 1) b
13 WHERE
14     a.ap_id = b.ap_id
15     AND a.id <> b.id;
16
17 DELETE FROM post a USING (
18     SELECT
19         min(id) AS id,
20         ap_id
21     FROM
22         post
23     GROUP BY
24         ap_id
25     HAVING
26         count(*) > 1) b
27 WHERE
28     a.ap_id = b.ap_id
29     AND a.id <> b.id;
30
31 DELETE FROM comment a USING (
32     SELECT
33         min(id) AS id,
34         ap_id
35     FROM
36         comment
37     GROUP BY
38         ap_id
39     HAVING
40         count(*) > 1) b
41 WHERE
42     a.ap_id = b.ap_id
43     AND a.id <> b.id;
44
45 -- Replacing the current default on the columns, to the unique one
46 UPDATE
47     private_message
48 SET
49     ap_id = generate_unique_changeme ()
50 WHERE
51     ap_id = 'http://fake.com';
52
53 UPDATE
54     post
55 SET
56     ap_id = generate_unique_changeme ()
57 WHERE
58     ap_id = 'http://fake.com';
59
60 UPDATE
61     comment
62 SET
63     ap_id = generate_unique_changeme ()
64 WHERE
65     ap_id = 'http://fake.com';
66
67 -- Add the unique indexes
68 ALTER TABLE private_message
69     ALTER COLUMN ap_id SET NOT NULL;
70
71 ALTER TABLE private_message
72     ALTER COLUMN ap_id SET DEFAULT generate_unique_changeme ();
73
74 ALTER TABLE post
75     ALTER COLUMN ap_id SET NOT NULL;
76
77 ALTER TABLE post
78     ALTER COLUMN ap_id SET DEFAULT generate_unique_changeme ();
79
80 ALTER TABLE comment
81     ALTER COLUMN ap_id SET NOT NULL;
82
83 ALTER TABLE comment
84     ALTER COLUMN ap_id SET DEFAULT generate_unique_changeme ();
85
86 -- Add the uniques, for user_ and community too
87 ALTER TABLE private_message
88     ADD CONSTRAINT idx_private_message_ap_id UNIQUE (ap_id);
89
90 ALTER TABLE post
91     ADD CONSTRAINT idx_post_ap_id UNIQUE (ap_id);
92
93 ALTER TABLE comment
94     ADD CONSTRAINT idx_comment_ap_id UNIQUE (ap_id);
95
96 ALTER TABLE user_
97     ADD CONSTRAINT idx_user_actor_id UNIQUE (actor_id);
98
99 ALTER TABLE community
100     ADD CONSTRAINT idx_community_actor_id UNIQUE (actor_id);
101