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
|