Sakthibalan

Sakthibalan

I am creating a custom read action to get students by :roll_number and :password.

defmodule MyApp.Students.Student do
  use Ash.Resource,
    domain: MyApp.Students,
    data_layer: AshPostgres.DataLayer,
    extensions: [
      AshJsonApi.Resource
    ]

  json_api do
    type "student"

    routes do
      base("/students")

      get(:read, route: ":id")
      index :read
      get(:get_by_roll, route: "by_roll")
    end
  end

  actions do
    read :read do
      primary? true
    end

    read :get_by_roll do
      argument :roll_number, :string, allow_nil?: false
      argument :password, :string, allow_nil?: false

      filter expr(roll_number == ^arg(:roll_number) && password == ^arg(:password))
    end
  end



  postgres do
    table "students"
    repo MyApp.Repo
  end

  attributes do
    attribute :id, :uuid do
      writable? false
      primary_key? true
      default &Ecto.UUID.generate/0
      allow_nil? false
      public? true
    end

    attribute :first_name, :string do
      allow_nil? false
      public? true
    end

    attribute :last_name, :string do
      allow_nil? false
      public? true
    end

    attribute :class, :string, public?: true
    attribute :section, :string, public?: true
    attribute :dob, :date, public?: true
    attribute :father_name, :string, public?: true
    attribute :mother_name, :string, public?: true
    attribute :roll_number, :string, public?: true
    attribute :password, :string, public?: true

    create_timestamp :inserted_at
    update_timestamp :updated_at
  end
end

API Endpoint call
localhost:4000/api/students/by_roll?roll_number=100&password=sakthibalan@100

Getting Error:

Exception:

    ** (KeyError) key :id not found in: %Ash.Error.Unknown{
      errors: [
        %Ash.Error.Unknown.UnknownError{
          error: "** (Postgrex.Error) ERROR 42883 (undefined_function) function ash_elixir_and(boolean, boolean) does not exist\n\n    query: SELECT s0.\"id\", s0.\"first_name\", s0.\"last_name\", s0.\"class\", s0.\"section\", s0.\"dob\", s0.\"father_name\", s0.\"mother_name\", s0.\"roll_number\", s0.\"password\", s0.\"inserted_at\", s0.\"updated_at\" FROM \"students\" AS s0 WHERE ((ash_elixir_and(s0.\"roll_number\"::text = $1::text, s0.\"password\"::text = $2::text)))\n\n    hint: No function matches the given name and argument types. You might need to add explicit type casts.",
          field: nil,
          splode: Ash.Error,
          bread_crumbs: [],
          vars: [],
          path: [],
          stacktrace: #Splode.Stacktrace<>,
          class: :unknown
        }
      ]
    }
        (ash_json_api 1.0.0) lib/ash_json_api/serializer.ex:111: AshJsonApi.Serializer.serialize_one_error/2

Showing Posts 1 to 2

zachdaniel

zachdaniel

Creator of Ash

The fact that we aren’t handling the error there is bad, please open an issue on ash_json_api. To resolve it, add ”ash-functions” to your installed extensions in your repo, and generate migrations.

EDIT: or use and instead of &&

Sakthibalan

Sakthibalan OP

Yes, I already included “ash-functions”.

It’s working good after did this changes EDIT: or use and instead of &&

Thank you!

— All posts loaded —

Where Next? Top

Trending in Questions Top

katta
I having some trouble figuring out if I have set myself too strict of standards for my production server. Currently I can handle 75% of r...
New
brecabral
Documentation While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
achenet
Hello, I’m trying to build a basic Phoenix web-app, and I’d like to use Tailwind. However, when I launch mix phx.server, I get an error...
New
kpanic
Hi everyone, I am toying with the idea of building a “match maker” for giving personal help to people that wants to start coding. I sta...
New
velrest
So my question is quite simple and i have found no conclusive answer on forum, google or AI. Should we use :erlang.float for Integer to ...
New
asweet-confluent
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New
mnkhod
So i have been using ash framework for a while and i love it. However currently the issue im having with ash framework is the error handl...
New

Other Trending Topics Top

GenericJam
Edit: 2026 May 15 - This post is archived. Mob is alive!! Main docs: mob v0.7.11 — Documentation A bit of explanation for the slightly c...
New
JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
mhanberg
Hi everyone! The first release candidate for the Expert language server project is now available! We’ve published a press release detai...
New
budgie
A little off-topic, but I feel like people here have a good head on their shoulders. I used to be quite good at making software. Was luc...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews