Implement client joined rooms endpoint

Track which rooms a local account has joined
Add some documentation to modules
This commit is contained in:
Pim Kunis 2021-08-23 12:59:12 +02:00
parent 9d40f8bc8b
commit 6f8c224d50
8 changed files with 95 additions and 11 deletions

View file

@ -2,9 +2,9 @@ defmodule MatrixServerWeb.Client.RoomController do
use MatrixServerWeb, :controller
import MatrixServerWeb.Error
import Ecto.Changeset
import Ecto.{Changeset, Query}
alias MatrixServer.Room
alias MatrixServer.{Repo, Room}
alias MatrixServerWeb.Client.Request.CreateRoom
alias Ecto.Changeset
alias Plug.Conn
@ -31,4 +31,19 @@ defmodule MatrixServerWeb.Client.RoomController do
put_error(conn, :bad_json)
end
end
def joined_rooms(%Conn{assigns: %{account: account}} = conn, _params) do
joined_room_ids = account
|> Ecto.assoc(:joined_rooms)
|> select([jr], jr.id)
|> Repo.all()
data = %{
joined_rooms: joined_room_ids
}
conn
|> put_status(200)
|> json(data)
end
end

View file

@ -51,6 +51,7 @@ defmodule MatrixServerWeb.Router do
post "/logout", AccountController, :logout
post "/logout/all", AccountController, :logout_all
post "/createRoom", RoomController, :create
get "/joined_rooms", RoomController, :joined_rooms
scope "/directory/room" do
put "/:alias", AliasesController, :create