Input `serde_json::Value` variable wrongly coerced to `String`
vindard opened this issue · 1 comments
Description
I have a schema where some of the input types are JSON which expects json blobs. I've mapped this in the file where I'm deriving things using type JSON = serde_json::Value;.
In the actual code, the Variables type that got generated looks like this
pub struct Variables {
pub transaction_id: Uuid,
pub amount: Decimal,
pub external_id: String,
pub metadata: serde_json::Value,
}But if I print the metadata field from a Variables instance I get a stringified version of the json value which errors when sent to the api.
Is there a setting I'm missing that can override this conversion?
#[derive(GraphQLQuery)]
#[graphql(
schema_path = "src/ledger/cala/graphql/schema.graphql",
query_path = "src/ledger/cala/graphql/transactions/add-equity.gql",
response_derives = "Debug, PartialEq, Eq, Clone"
)]
pub struct PostAddEquityTransaction;I don't think there is a missing setting, and I don't think there is any specific #[serde] annotation we put on these input values, so it looks like either the serde_json::Value you send is a Value::String with the already-serialized JSON in it, or there is a bug. I am not able to spend time on this project at this time though. There are several other people with merge an release permissions, so a well motivated PR has chances to make it to a release.