summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlain <lain@soykaf.club>2020-06-07 14:25:30 +0200
committerlain <lain@soykaf.club>2020-06-07 14:25:30 +0200
commit1a11f0e453527070a8ab5511318045470abc95e2 (patch)
tree2eeea851de5cf8df7112f6d5ed99eac8412ad3a7
parent0365053c8dbbcae4a4883f68b7eaec263c14f656 (diff)
Chats: Change id to flake id.
-rw-r--r--lib/pleroma/chat.ex3
-rw-r--r--lib/pleroma/chat/message_reference.ex2
-rw-r--r--priv/repo/migrations/20200607112923_change_chat_id_to_flake.exs23
3 files changed, 27 insertions, 1 deletions
diff --git a/lib/pleroma/chat.ex b/lib/pleroma/chat.ex
index 4fe31de94..24a86371e 100644
--- a/lib/pleroma/chat.ex
+++ b/lib/pleroma/chat.ex
@@ -16,6 +16,8 @@ defmodule Pleroma.Chat do
It is a helper only, to make it easy to display a list of chats with other people, ordered by last bump. The actual messages are retrieved by querying the recipients of the ChatMessages.
"""
+ @primary_key {:id, FlakeId.Ecto.CompatType, autogenerate: true}
+
schema "chats" do
belongs_to(:user, User, type: FlakeId.Ecto.CompatType)
field(:recipient, :string)
@@ -63,6 +65,7 @@ defmodule Pleroma.Chat do
|> changeset(%{user_id: user_id, recipient: recipient})
|> Repo.insert(
on_conflict: [set: [updated_at: NaiveDateTime.utc_now()]],
+ returning: true,
conflict_target: [:user_id, :recipient]
)
end
diff --git a/lib/pleroma/chat/message_reference.ex b/lib/pleroma/chat/message_reference.ex
index 4b201db2e..7ee7508ca 100644
--- a/lib/pleroma/chat/message_reference.ex
+++ b/lib/pleroma/chat/message_reference.ex
@@ -21,7 +21,7 @@ defmodule Pleroma.Chat.MessageReference do
schema "chat_message_references" do
belongs_to(:object, Object)
- belongs_to(:chat, Chat)
+ belongs_to(:chat, Chat, type: FlakeId.Ecto.CompatType)
field(:unread, :boolean, default: true)
diff --git a/priv/repo/migrations/20200607112923_change_chat_id_to_flake.exs b/priv/repo/migrations/20200607112923_change_chat_id_to_flake.exs
new file mode 100644
index 000000000..f14e269ca
--- /dev/null
+++ b/priv/repo/migrations/20200607112923_change_chat_id_to_flake.exs
@@ -0,0 +1,23 @@
+defmodule Pleroma.Repo.Migrations.ChangeChatIdToFlake do
+ use Ecto.Migration
+
+ def up do
+ execute("""
+ alter table chats
+ drop constraint chats_pkey cascade,
+ alter column id drop default,
+ alter column id set data type uuid using cast( lpad( to_hex(id), 32, '0') as uuid),
+ add primary key (id)
+ """)
+
+ execute("""
+ alter table chat_message_references
+ alter column chat_id set data type uuid using cast( lpad( to_hex(chat_id), 32, '0') as uuid),
+ add constraint chat_message_references_chat_id_fkey foreign key (chat_id) references chats(id) on delete cascade
+ """)
+ end
+
+ def down do
+ :ok
+ end
+end