First
[anni] / priv / repo / migrations / 20191026191910_set_not_null_for_users.exs
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Repo.Migrations.SetNotNullForUsers do
6   use Ecto.Migration
7
8   # modify/3 function will require index recreation, so using execute/1 instead
9
10   def up do
11     # irreversible
12     execute("UPDATE users SET follower_count = 0 WHERE follower_count IS NULL")
13
14     execute("ALTER TABLE users
15     ALTER COLUMN local SET NOT NULL,
16     ALTER COLUMN source_data SET NOT NULL,
17     ALTER COLUMN note_count SET NOT NULL,
18     ALTER COLUMN follower_count SET NOT NULL,
19     ALTER COLUMN blocks SET NOT NULL,
20     ALTER COLUMN domain_blocks SET NOT NULL,
21     ALTER COLUMN mutes SET NOT NULL,
22     ALTER COLUMN muted_reblogs SET NOT NULL,
23     ALTER COLUMN muted_notifications SET NOT NULL,
24     ALTER COLUMN subscribers SET NOT NULL,
25     ALTER COLUMN pinned_activities SET NOT NULL,
26     ALTER COLUMN emoji SET NOT NULL,
27     ALTER COLUMN fields SET NOT NULL,
28     ALTER COLUMN raw_fields SET NOT NULL")
29   end
30
31   def down do
32     execute("ALTER TABLE users
33     ALTER COLUMN local DROP NOT NULL,
34     ALTER COLUMN source_data DROP NOT NULL,
35     ALTER COLUMN note_count DROP NOT NULL,
36     ALTER COLUMN follower_count DROP NOT NULL,
37     ALTER COLUMN blocks DROP NOT NULL,
38     ALTER COLUMN domain_blocks DROP NOT NULL,
39     ALTER COLUMN mutes DROP NOT NULL,
40     ALTER COLUMN muted_reblogs DROP NOT NULL,
41     ALTER COLUMN muted_notifications DROP NOT NULL,
42     ALTER COLUMN subscribers DROP NOT NULL,
43     ALTER COLUMN pinned_activities DROP NOT NULL,
44     ALTER COLUMN emoji DROP NOT NULL,
45     ALTER COLUMN fields DROP NOT NULL,
46     ALTER COLUMN raw_fields DROP NOT NULL")
47   end
48 end