50 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
defmodule Pleroma.Repo.Migrations.DropChatTables do
 | 
						|
  use Ecto.Migration
 | 
						|
 | 
						|
  def up do
 | 
						|
    # Automatically drops associated indices and constraints
 | 
						|
    drop table(:chat_message_references)
 | 
						|
    drop table(:chats)
 | 
						|
  end
 | 
						|
 | 
						|
  def down do
 | 
						|
    # Ecto's default primary key is bigserial, thus configure manually
 | 
						|
    create table(:chats, primary_key: false) do
 | 
						|
      add(:id, :uuid, primary_key: true, autogenerated: true)
 | 
						|
 | 
						|
      add(
 | 
						|
        :user_id,
 | 
						|
        references(:users, type: :uuid, on_delete: :delete_all)
 | 
						|
        # yes, this was nullable
 | 
						|
      )
 | 
						|
 | 
						|
      add(
 | 
						|
        :recipient,
 | 
						|
        references(:users, column: :ap_id, type: :string, on_delete: :delete_all)
 | 
						|
        # yes, this was nullable
 | 
						|
      )
 | 
						|
 | 
						|
      timestamps()
 | 
						|
    end
 | 
						|
 | 
						|
    create(index(:chats, [:user_id, :recipient], unique: true))
 | 
						|
 | 
						|
    create table(:chat_message_references, primary_key: false) do
 | 
						|
      add(:id, :uuid, primary_key: true, autogenerated: true)
 | 
						|
      add(:chat_id, references(:chats, type: :uuid, on_delete: :delete_all), null: false)
 | 
						|
      add(:object_id, references(:objects, on_delete: :delete_all), null: false)
 | 
						|
      add(:unread, :boolean, default: true, null: false)
 | 
						|
      timestamps()
 | 
						|
    end
 | 
						|
 | 
						|
    create(index(:chat_message_references, [:chat_id, "id desc"]))
 | 
						|
    create(unique_index(:chat_message_references, [:object_id, :chat_id]))
 | 
						|
 | 
						|
    create(
 | 
						|
      index(:chat_message_references, [:chat_id],
 | 
						|
        where: "unread = true",
 | 
						|
        name: "unread_messages_count_index"
 | 
						|
      )
 | 
						|
    )
 | 
						|
  end
 | 
						|
end
 |