Add part of room creation endpoint

This commit is contained in:
Pim Kunis 2021-07-17 17:38:20 +02:00
parent 585de861d6
commit 9be94751dc
12 changed files with 168 additions and 48 deletions

View file

@ -12,18 +12,19 @@ defmodule MatrixServer.Room do
field :visibility, Ecto.Enum, values: [:public, :private]
end
def create(%CreateRoom{} = api) do
Multi.new()
|> Multi.insert(:room, Room.create_changeset(api))
end
def changeset(room, params \\ %{}) do
room
|> cast(params, [:visibility])
cast(room, params, [:visibility])
end
def create_changeset(%CreateRoom{} = api) do
%Room{visibility: api.visibility, id: MatrixServer.random_string(18)}
|> changeset()
def create_changeset(%CreateRoom{} = input) do
visibility = input.visibility || :public
%Room{}
|> changeset(%{visibility: visibility})
|> put_change(:id, generate_room_id())
end
def generate_room_id do
"!" <> MatrixServer.random_string(18) <> "@" <> MatrixServer.server_name()
end
end