How can we get a record by id?
I was able to figure out that i can get one with:
but I would like to get it with:
This doesn't work:
My code:
Helpdesk.Support.get! Helpdesk.Support.Ticket, ticket.idHelpdesk.Support.get! Helpdesk.Support.Ticket, ticket.idbut I would like to get it with:
Helpdesk.Api.read_support_ticket ticket.idHelpdesk.Api.read_support_ticket ticket.idThis doesn't work:
{:error,
%Ash.Error.Invalid{
errors: [
%Ash.Error.Invalid.MultipleResults{
count: 2,
at_least?: true,
changeset: nil,
query: nil,
error_context: [],
vars: [],
path: [],
stacktrace: #Stacktrace<>,
class: :invalid
}
],
stacktraces?: true,
changeset: nil,
query: nil,
error_context: [],
vars: [],
path: [],
stacktrace: #Stacktrace<>,
class: :invalid
}}{:error,
%Ash.Error.Invalid{
errors: [
%Ash.Error.Invalid.MultipleResults{
count: 2,
at_least?: true,
changeset: nil,
query: nil,
error_context: [],
vars: [],
path: [],
stacktrace: #Stacktrace<>,
class: :invalid
}
],
stacktraces?: true,
changeset: nil,
query: nil,
error_context: [],
vars: [],
path: [],
stacktrace: #Stacktrace<>,
class: :invalid
}}My code:
defmodule Helpdesk.Api do
require Ash.CodeInterface
Ash.CodeInterface.define_interface(Helpdesk.Support, Helpdesk.Support.Ticket)
end
defmodule Helpdesk.Support.Ticket do
use Ash.Resource,
data_layer: Ash.DataLayer.Ets
actions do
defaults [:create, :read, :update, :destroy]
create :open_support_ticket do
accept [:subject]
end
read :read_support_ticket do
# primary? true
argument :id, :uuid do
allow_nil? false
end
# filter [id: :id]
end
## ommitted code ...
code_interface do
define :open_support_ticket, args: [:subject]
define :read_support_ticket, action: :read_support_ticket, args: [:id], get?: true
define :close_support_ticket, args: []
end
enddefmodule Helpdesk.Api do
require Ash.CodeInterface
Ash.CodeInterface.define_interface(Helpdesk.Support, Helpdesk.Support.Ticket)
end
defmodule Helpdesk.Support.Ticket do
use Ash.Resource,
data_layer: Ash.DataLayer.Ets
actions do
defaults [:create, :read, :update, :destroy]
create :open_support_ticket do
accept [:subject]
end
read :read_support_ticket do
# primary? true
argument :id, :uuid do
allow_nil? false
end
# filter [id: :id]
end
## ommitted code ...
code_interface do
define :open_support_ticket, args: [:subject]
define :read_support_ticket, action: :read_support_ticket, args: [:id], get?: true
define :close_support_ticket, args: []
end
end