Add endpoint for room creation
This commit is contained in:
parent
80c8d3a66b
commit
598af7a884
15 changed files with 679 additions and 551 deletions
29
lib/matrix_server/room.ex
Normal file
29
lib/matrix_server/room.ex
Normal 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
|
Loading…
Add table
Add a link
Reference in a new issue