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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
defmodule MatrixAppService.Event do
@moduledoc """
Ecto schema 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
|