Sakthibalan
How to create custom AshJsonApi to get a user by two parameter
How do create custom api to get a user by their :first_name and :date_of_birth?
read :get_user do
argument :first_name, :string do
allow_nil? false
end
argument :date_of_birth, :date do
allow_nil? false
end
end
Most Liked
shankardevy
In my Repo module, I have the following:
defmodule Hello.Repo do
use AshPostgres.Repo,
otp_app: :hello
# Installs Postgres extensions that ash commonly uses
def installed_extensions do
["ash-functions"]
end
end
Are you using Ash 3 or 2? I think this got added recently in Ash 3. Official instructions are here: Get Started With Postgres — ash_postgres v2.10.0
shankardevy
There isn’t much information in your post so I’m assuming you have setup the AshJsonAPI as described here: Getting started with AshJsonApi — ash_json_api v1.7.0 . With that assumption, I’m guessing this is what you need on the User resource to get you the API you need.
defmodule Hello.User do
use Ash.Resource,
data_layer: AshPostgres.DataLayer,
domain: Hello.Users,
extensions: [AshJsonApi.Resource]
postgres do
table "users"
repo Hello.Repo
end
attributes do
uuid_primary_key :id
attribute :first_name, :string, public?: true
attribute :date_of_birth, :date, public?: true
.... other attributes
end
json_api do
type "user"
routes do
base "/users"
get :get_user, route: "/find"
end
end
actions do
read :get_user do
argument :first_name, :string do
allow_nil? false
end
argument :date_of_birth, :date do
allow_nil? false
end
filter expr(first_name == ^arg(:first_name) && date_of_birth == ^arg(:date_of_birth))
end
end
end
Basically, you are missing the filter macro in your read action. In the get route, the first argument :get_user is the read action name defined inside actions and the route option is given to make url as GET /users/find, otherwise the default route for a get path will result in /users/:id where :id is a placeholder and is not relevant in your case.
The API will return all the fields marked as public?: true in the attributes section.
Last Post!
Sakthibalan
Popular in Questions
Other popular topics
Latest Ash Threads
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #elixirconf-us
- #advent-of-code
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #hex
- #security









