This commit is contained in:
Mirai Kumiko 2025-07-06 14:46:08 +02:00
parent f90a7133bc
commit 00ecbadeca
Signed by: miraikumiko
GPG key ID: 3F178B1B5E0CB278
29 changed files with 871 additions and 12 deletions

View file

@ -0,0 +1,43 @@
defmodule NullaWeb.Api.AnnounceController do
use NullaWeb, :controller
alias Nulla.Announces
alias Nulla.Announces.Announce
action_fallback NullaWeb.FallbackController
def index(conn, _params) do
announces = Announces.list_announces()
render(conn, :index, announces: announces)
end
def create(conn, %{"announce" => announce_params}) do
with {:ok, %Announce{} = announce} <- Announces.create_announce(announce_params) do
conn
|> put_status(:created)
|> put_resp_header("location", ~p"/api/announces/#{announce}")
|> render(:show, announce: announce)
end
end
def show(conn, %{"id" => id}) do
announce = Announces.get_announce!(id)
render(conn, :show, announce: announce)
end
def update(conn, %{"id" => id, "announce" => announce_params}) do
announce = Announces.get_announce!(id)
with {:ok, %Announce{} = announce} <- Announces.update_announce(announce, announce_params) do
render(conn, :show, announce: announce)
end
end
def delete(conn, %{"id" => id}) do
announce = Announces.get_announce!(id)
with {:ok, %Announce{}} <- Announces.delete_announce(announce) do
send_resp(conn, :no_content, "")
end
end
end

View file

@ -0,0 +1,23 @@
defmodule NullaWeb.Api.AnnounceJSON do
alias Nulla.Announces.Announce
@doc """
Renders a list of announces.
"""
def index(%{announces: announces}) do
%{data: for(announce <- announces, do: data(announce))}
end
@doc """
Renders a single announce.
"""
def show(%{announce: announce}) do
%{data: data(announce)}
end
defp data(%Announce{} = announce) do
%{
id: announce.id
}
end
end

View file

@ -0,0 +1,43 @@
defmodule NullaWeb.Api.LikeController do
use NullaWeb, :controller
alias Nulla.Likes
alias Nulla.Likes.Like
action_fallback NullaWeb.FallbackController
def index(conn, _params) do
likes = Likes.list_likes()
render(conn, :index, likes: likes)
end
def create(conn, %{"like" => like_params}) do
with {:ok, %Like{} = like} <- Likes.create_like(like_params) do
conn
|> put_status(:created)
|> put_resp_header("location", ~p"/api/likes/#{like}")
|> render(:show, like: like)
end
end
def show(conn, %{"id" => id}) do
like = Likes.get_like!(id)
render(conn, :show, like: like)
end
def update(conn, %{"id" => id, "like" => like_params}) do
like = Likes.get_like!(id)
with {:ok, %Like{} = like} <- Likes.update_like(like, like_params) do
render(conn, :show, like: like)
end
end
def delete(conn, %{"id" => id}) do
like = Likes.get_like!(id)
with {:ok, %Like{}} <- Likes.delete_like(like) do
send_resp(conn, :no_content, "")
end
end
end

View file

@ -0,0 +1,23 @@
defmodule NullaWeb.Api.LikeJSON do
alias Nulla.Likes.Like
@doc """
Renders a list of likes.
"""
def index(%{likes: likes}) do
%{data: for(like <- likes, do: data(like))}
end
@doc """
Renders a single like.
"""
def show(%{like: like}) do
%{data: data(like)}
end
defp data(%Like{} = like) do
%{
id: like.id
}
end
end

View file

@ -26,6 +26,7 @@ defmodule NullaWeb.Api.NoteJSON do
cc: note.cc,
sensitive: note.sensitive,
content: note.content,
tag: note.tag,
language: note.language
}
end