From 2af5f6cf42ecded52ce3a3cfcccb1bbdc4c48ae3 Mon Sep 17 00:00:00 2001 From: KKlochko Date: Tue, 11 Mar 2025 19:36:33 +0200 Subject: [PATCH] Add the JSON API for Author. --- lib/decentralised_book_index/metadata.ex | 12 ++++++++++-- lib/decentralised_book_index/metadata/author.ex | 7 ++++++- .../ash_json_api_router.ex | 2 +- lib/decentralised_book_index_web/router.ex | 4 ++-- 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/lib/decentralised_book_index/metadata.ex b/lib/decentralised_book_index/metadata.ex index d150d67..b42c400 100644 --- a/lib/decentralised_book_index/metadata.ex +++ b/lib/decentralised_book_index/metadata.ex @@ -1,6 +1,5 @@ defmodule DecentralisedBookIndex.Metadata do - use Ash.Domain, - otp_app: :decentralised_book_index + use Ash.Domain, otp_app: :decentralised_book_index, extensions: [AshJsonApi.Domain, AshPhoenix] alias DecentralisedBookIndex.Metadata @@ -64,4 +63,13 @@ defmodule DecentralisedBookIndex.Metadata do resource DecentralisedBookIndex.Metadata.AuthorRole end + + json_api do + routes do + base_route "/author", Metadata.Author do + get :read + index :search + end + end + end end diff --git a/lib/decentralised_book_index/metadata/author.ex b/lib/decentralised_book_index/metadata/author.ex index 22d8036..e1509d5 100644 --- a/lib/decentralised_book_index/metadata/author.ex +++ b/lib/decentralised_book_index/metadata/author.ex @@ -2,11 +2,16 @@ defmodule DecentralisedBookIndex.Metadata.Author do use Ash.Resource, otp_app: :decentralised_book_index, domain: DecentralisedBookIndex.Metadata, - data_layer: AshPostgres.DataLayer + data_layer: AshPostgres.DataLayer, + extensions: [AshJsonApi.Resource] require Ash.Query alias DecentralisedBookIndex.Metadata + json_api do + type "author" + end + postgres do table "authors" repo DecentralisedBookIndex.Repo diff --git a/lib/decentralised_book_index_web/ash_json_api_router.ex b/lib/decentralised_book_index_web/ash_json_api_router.ex index fdf2ed3..5c3ebac 100644 --- a/lib/decentralised_book_index_web/ash_json_api_router.ex +++ b/lib/decentralised_book_index_web/ash_json_api_router.ex @@ -1,5 +1,5 @@ defmodule DecentralisedBookIndexWeb.AshJsonApiRouter do use AshJsonApi.Router, - domains: [], + domains: [Module.concat(["DecentralisedBookIndex.Metadata"])], open_api: "/open_api" end diff --git a/lib/decentralised_book_index_web/router.ex b/lib/decentralised_book_index_web/router.ex index 6e9880c..559cea3 100644 --- a/lib/decentralised_book_index_web/router.ex +++ b/lib/decentralised_book_index_web/router.ex @@ -21,12 +21,12 @@ defmodule DecentralisedBookIndexWeb.Router do plug :set_actor, :user end - scope "/api/json" do + scope "/api/v1/json" do pipe_through [:api] forward "/swaggerui", OpenApiSpex.Plug.SwaggerUI, - path: "/api/json/open_api", + path: "/api/v1/json/open_api", default_model_expand_depth: 4 forward "/", DecentralisedBookIndexWeb.AshJsonApiRouter