Add endpoint for room creation

This commit is contained in:
Pim Kunis 2021-07-10 23:16:00 +02:00
parent 80c8d3a66b
commit 598af7a884
15 changed files with 679 additions and 551 deletions

29
lib/matrix_server/room.ex Normal file
View file

@ -0,0 +1,29 @@
defmodule MatrixServer.Room do
use Ecto.Schema
import Ecto.Changeset
alias __MODULE__
alias MatrixServerWeb.API.CreateRoom
alias Ecto.Multi
@primary_key {:id, :string, []}
schema "rooms" 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])
end
def create_changeset(%CreateRoom{} = api) do
%Room{visibility: api.visibility, id: MatrixServer.random_string(18)}
|> changeset()
end
end