Error: `key :manual not found in: nil` with create_query using graphql
So I got this simple resource:
And using graphql I query
And this gives me the following stacktrace:
defmodule Zelo.Planner.PlanResult do
@moduledoc false
use Ash.Resource,
domain: Zelo.Planner,
authorizers: [Ash.Policy.Authorizer],
extensions: [
AshJason.Resource,
AshGraphql.Resource,
AshJsonApi.Resource
]
code_interface do
domain Cvs.Planner
define :create, action: :create
define :run_planner, action: :run_planner
end
actions do
create :create do
primary? true
accept :*
argument :routes, {:array, :map}, allow_nil?: false
change manage_relationship(:routes, type: :direct_control)
end
create :run_planner do
manual Zelo.Planner.ManualPlanCreate
end
end
policies do
policy always() do
authorize_if always()
end
end
graphql do
type :plan_result
mutations do
create :run_planner, :run_planner
end
end
json_api do
type "plan_result"
end
attributes do
uuid_primary_key :id
end
relationships do
has_many :routes, Zelo.Planner.RouteResult do
public? true
end
end
end
defmodule Zelo.Planner.ManualPlanCreate do
@moduledoc false
use Ash.Resource.ManualCreate
alias Ash.Changeset
alias Zelo.Planner.PlanResult
@impl true
def create(changeset, opts, context) do
{:ok,
%PlanResult{
id: "clappen",
routes: [
%{
vehicle_id: "vehicle-123",
distance: 1234,
duration: 1234,
polyline: "SDFGSDG",
projected_departure_time: DateTime.utc_now(),
projected_end_time: DateTime.utc_now()
}
]
}}
end
enddefmodule Zelo.Planner.PlanResult do
@moduledoc false
use Ash.Resource,
domain: Zelo.Planner,
authorizers: [Ash.Policy.Authorizer],
extensions: [
AshJason.Resource,
AshGraphql.Resource,
AshJsonApi.Resource
]
code_interface do
domain Cvs.Planner
define :create, action: :create
define :run_planner, action: :run_planner
end
actions do
create :create do
primary? true
accept :*
argument :routes, {:array, :map}, allow_nil?: false
change manage_relationship(:routes, type: :direct_control)
end
create :run_planner do
manual Zelo.Planner.ManualPlanCreate
end
end
policies do
policy always() do
authorize_if always()
end
end
graphql do
type :plan_result
mutations do
create :run_planner, :run_planner
end
end
json_api do
type "plan_result"
end
attributes do
uuid_primary_key :id
end
relationships do
has_many :routes, Zelo.Planner.RouteResult do
public? true
end
end
end
defmodule Zelo.Planner.ManualPlanCreate do
@moduledoc false
use Ash.Resource.ManualCreate
alias Ash.Changeset
alias Zelo.Planner.PlanResult
@impl true
def create(changeset, opts, context) do
{:ok,
%PlanResult{
id: "clappen",
routes: [
%{
vehicle_id: "vehicle-123",
distance: 1234,
duration: 1234,
polyline: "SDFGSDG",
projected_departure_time: DateTime.utc_now(),
projected_end_time: DateTime.utc_now()
}
]
}}
end
endAnd using graphql I query
mutation {
runPlanner {
result {
id
routes {
vehicleId
}
}
}
}mutation {
runPlanner {
result {
id
routes {
vehicleId
}
}
}
}And this gives me the following stacktrace:
message.txt4.75KB
message.txt4.75KB
