Hi,
I’m using postgreSQL’ JSONB object so store dynamic stats that can have any form given by the user.
Trying to use graphQL with absinthe, i’m currently having a problem.
See that stats is a list of :json
:
object :character do
field(:id, :id)
field(:stats, list_of(:json))
field(:uuid, :string)
field(:name, :string)
field(:user, :user, resolve: assoc(:user))
field(:items, list_of(:item), resolve: assoc(:item))
end
scalar :json do
parse(fn input ->
case Poison.decode(input.value) do
{:ok, result} -> {:ok, result}
_ -> :error
end
end)
serialize(&Poison.encode!/1)
end
For the request
query {
charactersByUser(userId: 4) {
name
stats
items {
name
}
}
}
The server currently returns
{
"data": {
"charactersByUser": [
{
"stats": [
"{\"value\":13,\"name\":\"strengh\"}",
"{\"value\":5,\"name\":\"Fierce\"}"
],
"name": "Cramberry",
"items": null
},
{
"stats": [
"{\"value\":0,\"name\":\"strengh\"}",
"{\"value\":0,\"name\":\"*** size\"}"
],
"name": "Le petit *** de Mikail",
"items": null
}
]
}
}
You can see that my json “stats” is not parsed.
Ive also tried to add
raise "not relevant"
IO.puts("[BAAAAAAAAAAAAAAAAAAH] input.value")
Inside the parse function just to see if the app reacts… no effect
Any help appreciated…