summaryrefslogtreecommitdiff
path: root/priv/repo/migrations/20230422154018_drop_unused_indexes.exs
blob: 0d877a79843633c316f0e4401e503f04832811b8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
defmodule Pleroma.Repo.Migrations.DropUnusedIndexes do
  use Ecto.Migration

  @disable_ddl_transaction true
  @disable_migration_lock true

  def up do
    drop_if_exists(
      index(:activities, ["(data->>'actor')", "inserted_at desc"], name: :activities_actor_index)
    )

    drop_if_exists(index(:activities, ["(data->'to')"], name: :activities_to_index))

    drop_if_exists(index(:activities, ["(data->'cc')"], name: :activities_cc_index))

    drop_if_exists(index(:activities, ["(split_part(actor, '/', 3))"], name: :activities_hosts))

    drop_if_exists(
      index(:activities, ["(data->'object'->>'inReplyTo')"], name: :activities_in_reply_to)
    )

    drop_if_exists(
      index(:activities, ["((data #> '{\"object\",\"likes\"}'))"], name: :activities_likes)
    )
  end

  def down do
    create_if_not_exists(
      index(:activities, ["(data->>'actor')", "inserted_at desc"],
        name: :activities_actor_index,
        concurrently: true
      )
    )

    create_if_not_exists(
      index(:activities, ["(data->'to')"],
        name: :activities_to_index,
        using: :gin,
        concurrently: true
      )
    )

    create_if_not_exists(
      index(:activities, ["(data->'cc')"],
        name: :activities_cc_index,
        using: :gin,
        concurrently: true
      )
    )

    create_if_not_exists(
      index(:activities, ["(split_part(actor, '/', 3))"],
        name: :activities_hosts,
        concurrently: true
      )
    )

    create_if_not_exists(
      index(:activities, ["(data->'object'->>'inReplyTo')"],
        name: :activities_in_reply_to,
        concurrently: true
      )
    )

    create_if_not_exists(
      index(:activities, ["((data #> '{\"object\",\"likes\"}'))"],
        name: :activities_likes,
        using: :gin,
        concurrently: true
      )
    )
  end
end