1
0
mirror of https://github.com/algora-io/tv.git synced 2025-03-17 20:17:45 +02:00
algora-tv/lib/algora/chat/message.ex

50 lines
1.3 KiB
Elixir
Raw Normal View History

2024-02-29 22:31:42 +03:00
defmodule Algora.Chat.Message do
use Ecto.Schema
alias Algora.Accounts.{User, Entity}
alias Algora.Library.Video
2024-02-29 22:31:42 +03:00
import Ecto.Changeset
@derive {Jason.Encoder,
only: [
:body,
:platform,
:sender_handle,
:sender_name,
:sender_avatar_url,
:inserted_at
]}
2024-02-29 22:31:42 +03:00
schema "messages" do
field :body, :string
field :platform_id, :string
field :platform, :string, virtual: true
2024-02-29 22:31:42 +03:00
field :sender_handle, :string, virtual: true
2024-06-23 18:02:01 +03:00
field :sender_name, :string, virtual: true
field :sender_avatar_url, :string, virtual: true
2024-05-03 16:38:50 +03:00
field :channel_id, :integer, virtual: true
belongs_to :entity, Entity
belongs_to :user, User
belongs_to :video, Video
2024-02-29 22:31:42 +03:00
timestamps()
end
@doc false
def changeset(message, attrs) do
message
|> cast(attrs, [:body, :platform_id])
2024-02-29 22:31:42 +03:00
|> validate_required([:body])
end
def put_entity(%Ecto.Changeset{} = changeset, %Entity{} = entity) do
put_assoc(changeset, :entity, entity)
end
def put_user(%Ecto.Changeset{} = changeset, %User{} = user) do
put_assoc(changeset, :user, user)
end
def put_video(%Ecto.Changeset{} = changeset, %Video{} = video) do
put_assoc(changeset, :video, video)
end
2024-02-29 22:31:42 +03:00
end