summaryrefslogtreecommitdiff
path: root/lib/matrix_app_service/event.ex
blob: bf37aba452f1fc48a37e75e57c451e5508b9b681 (plain) (blame)
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
defmodule MatrixAppService.Event do
  @moduledoc """
  Struct for a Matrix event.
  """
  use Ecto.Schema
  import Ecto.Changeset

  # @type t :: %__MODULE__{
  #         age: integer(),
  #         content: map(),
  #         event_id: String.t(),
  #         origin_server_ts: integer(),
  #         room_id: String.t(),
  #         sender: String.t(),
  #         state_key: String.t(),
  #         type: String.t(),
  #         unsigned: map(),
  #         user_id: String.t()
  #       }

  # defstruct age: nil,
  #           content: %{},
  #           event_id: nil,
  #           origin_server_ts: nil,
  #           room_id: nil,
  #           sender: nil,
  #           state_key: "",
  #           type: nil,
  #           unsigned: %{},
  #           user_id: nil

  embedded_schema do
    field :age, :integer
    field :content, :map
    field :event_id, :string
    field :origin_server_ts, :integer
    field :room_id, :string
    field :sender, :string
    field :state_key, :string
    field :type, :string
    field :unsigned, :map
    field :user_id, :string
  end

  def new(params) do
    command = changeset(params)
    case command.valid? do
      true  -> {:ok, apply_changes(command)}
      false -> {:error, command.errors}
    end
  end

  defp changeset(params) do
    %__MODULE__{}
    |> cast(params, [:age, :content, :event_id, :origin_server_ts, :room_id, :sender, :state_key, :type, :unsigned, :user_id])
    |> validate_required([:content, :event_id, :origin_server_ts, :room_id, :sender, :type, :unsigned])
  end
end