Packages

An Elixir-first XMTP SDK backed by the official Rust XMTP SDK.

Current section

Files

Jump to
xmtp_elixir_sdk lib xmtp message_log.ex
Raw

lib/xmtp/message_log.ex

defmodule Xmtp.MessageLog do
@moduledoc false
use Ecto.Schema
import Ecto.Changeset
alias Xmtp.Room
schema "xmtp_message_logs" do
field(:xmtp_message_id, :string)
field(:conversation_id, :string)
field(:sender_inbox_id, :string)
field(:sender_wallet, :string)
field(:sender_kind, :string)
field(:sender_label, :string)
field(:body, :string)
field(:sent_at, :utc_datetime_usec)
field(:website_visibility_state, :string, default: "visible")
field(:moderator_wallet, :string)
field(:moderated_at, :utc_datetime_usec)
field(:message_snapshot, :map, default: %{})
belongs_to(:room, Room)
timestamps(type: :utc_datetime_usec)
end
def changeset(message_log, attrs) do
message_log
|> cast(attrs, [
:room_id,
:xmtp_message_id,
:conversation_id,
:sender_inbox_id,
:sender_wallet,
:sender_kind,
:sender_label,
:body,
:sent_at,
:website_visibility_state,
:moderator_wallet,
:moderated_at,
:message_snapshot
])
|> validate_required([
:room_id,
:xmtp_message_id,
:conversation_id,
:sender_inbox_id,
:body,
:sent_at,
:website_visibility_state
])
|> validate_inclusion(:website_visibility_state, ["visible", "moderator_deleted"])
|> unique_constraint(:xmtp_message_id)
end
end