diff --git a/CHANGELOG.org b/CHANGELOG.org index da26e62..5bfddc0 100644 --- a/CHANGELOG.org +++ b/CHANGELOG.org @@ -19,4 +19,6 @@ Added the simple dev configuration. ** 0.4.0 <2023-07-28 Fri> Added the API to show the Links model or models. +** 0.4.1 <2023-07-29 Sat> + Add the API to create the Links model. diff --git a/lib/link_shortener_web/controllers/api/v1/links_controller.ex b/lib/link_shortener_web/controllers/api/v1/links_controller.ex index 6fa0a72..2e27b3e 100644 --- a/lib/link_shortener_web/controllers/api/v1/links_controller.ex +++ b/lib/link_shortener_web/controllers/api/v1/links_controller.ex @@ -10,6 +10,15 @@ defmodule LinkShortenerWeb.Api.V1.LinksController do render(conn, "index.json", links: links) end + def create(conn, %{"link" => link_params}) do + with {:ok, %Links{} = link} <- Links.insert_one(link_params) do + conn + |> put_status(:created) + |> put_resp_header("location", Routes.links_path(conn, :show, link)) + |> render("show.json", links: link) + end + end + def show(conn, %{"id" => id}) do link = Links.get_one(id) render(conn, "show.json", links: link) diff --git a/lib/link_shortener_web/router.ex b/lib/link_shortener_web/router.ex index 7e0deca..2c41780 100644 --- a/lib/link_shortener_web/router.ex +++ b/lib/link_shortener_web/router.ex @@ -26,7 +26,7 @@ defmodule LinkShortenerWeb.Router do pipe_through :api scope "/v1", Api.V1, as: :v1 do - resources "/links", LinksController, except: [:new, :edit] + resources "/links", LinksController end end